工作日记-storm集群业务崩溃和解决方案
背景
昨天公司业务部门报告业务崩溃,查看各个业务节点后,定位问题到storm集群。
打开storm ui查看下任务状态,发现可以加载页面元素,但是无法加载数据,分析是nimbus挂掉了,重启nimbus。本着先恢复业务的原则,我直接通过命令行停止任务后,又重新提交了任务,这个时候访问storm ui发现业务系统已经恢复正常。业务系统虽然恢复了,但是需要找到问题的根本原因,才能确保不再发生。
storm部署情况
公司的生产环境部署的storm集群,其中,zookeeper和nimbus都是单点,supervisor也只部署了一个,每个supervisor开启四个slot,这几个关键组件都部署在了一台物理服务器上。
storm任务,会启动两个worker,一共12个线程,分布在这台物理机上,查看storm ui可以看到,启动了两个worker,端口分别为6700和6701,每一个worker负责六个线程。
部署常见问题:https://www.iteye.com/blog/wangmengbk-2215140
damentools工具部署使用
安装部署
-
创建
/package
mkdir -p /package chmod 1755 /package cd /package
-
下载 daemontools-0.76.tar.gz
/package
gunzip daemontools-0.76.tar tar -xpf daemontools-0.76.tar rm -f daemontools-0.76.tar cd admin/daemontools-0.76
-
编辑 src/conf-cc 在最后加入
-include /usr/include/errno.h
-
编译
package/install
-
启动
首先在"/etc/init"目录下创建一个svscan.conf文件 ,然后在文件中添加如下内容保存:
start on runlevel [345] respawn exec /command/svscanboot
其次分别执行如下两个命令重新加载"/etc/init"目录下的配置文件,执行ps命令查看是否启动成功
[root@rfidweb init]# initctl reload-configuration [root@rfidweb init]# initctl start svscan svscan start/running, process 32735 [root@rfidweb init]# ps -ef | grep svs root 32735 1 0 13:56 ? 00:00:00 /bin/sh /command/svscanboot root 32737 32735 0 13:56 ? 00:00:00 svscan /service root 32758 8815 0 13:56 pts/0 00:00:00 grep svs
-
编写脚本
#! /bin/bash mkdir -p /service/storm/nimbus touch /service/storm/nimbus/run chmod +x /service/storm/nimbus/run mkdir -p /service/storm/ui touch /service/storm/ui/run chmod +x /service/storm/ui/run mkdir -p /service/storm/supervisor touch /service/storm/supervisor/run chmod +x /service/storm/supervisor/run
添加内容:
#! /bin/bash exec 2>&1 exec /usr/local/apache-storm-1.2.3/bin/storm ui
#! /bin/bash exec 2>&1 exec /usr/local/apache-storm-1.2.3/bin/storm nimbus -c storm.local.hostname="10.43.4.153"
-
验证是否生效
ps -ef | grep "nimbus"
然后kill -9
再次ps命令查看pid已经改变