Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:
Storm集群组件
Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。此外,Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm集群所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以用kill -9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作。这个设计使得Storm集群拥有不可思议的稳定性。
1. 下载并安装JDK 7;
2. 配置JAVA_HOME环境变量;
3. 运行java、javac命令,测试java正常安装。
下一步,需要在Nimbus和Supervisor机器上安装Storm发行版本。
1. 下载Storm发行版本,推荐使用Storm0.10.0:
2. 解压到安装目录下(/home/ipms/storm-0.10.0)
3. 修改storm.yaml配置文件
1) storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下:
storm.zookeeper.servers: - "111.222.333.444" - "555.666.777.888"
如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项。
2
由于单台redis服务器的计算和内存管理能力有限,使用过大内存redis服务器的性能急剧下降。为了获取更好的缓存性能及扩展型,我们需要搭建redis集群来满足需求。因redis 3.0 beta支持的集群功能不适合生产环境的使用,所以我们采用twitter的twemproxy来搭建redis缓存服务器集群.
Twemproxy是memcached和redis协议的代理服务器,并能有效减少大量连接对redis服务器的性能影响.
安装步骤:
推荐版本2.8及以上
修改端口(可在启动时指定)
port 6379
采用纯内存模式,注释掉save指令.
#save 900 1 #save 300 10 #save 60 10000 #save 900 1000
调整内存大小
maxmemory 8g
设置密码(可在启动时指定)
requirepass foobared
redis-server ../conf/masters/redis.conf --logfile ../logs/masters/master-01.log --requirepass 'stream!23$' --port 6301
推荐使用 0.4.1 release
修改监听端口
listen: 0.0.0.0:6401
禁用自动剔除,保持hash一致性
auto_eject_hosts: false
设置redis超时
timeout: 2000 redis: true
设置redis密码
redis_auth: stream!23$
配置redis服务地址(集群中所有redis都要添加上)
servers: - 10.221.247.5:6301:1 server01 - 10.221.247.5:6302:1 server02 - 10.221.247.5:6303:1 server03 - 10.221.247.5:6304:1 server04 - 10.221.247.5:6305:1 server05 - 10.221.247.5:6306:1 server06 - 10.221.247.5:6307:1 server07 - 10.221.247.5
Storm使用Zookeeper协调集群,由于Zookeeper并不用于消息传递,所以Storm给Zookeeper带来的压力相当低。大多数情况下,单个节点的Zookeeper集群足够胜任,不过为了确保故障恢复或者部署大规模Storm集群,可能需要更大规模节点的Zookeeper集群(对于Zookeeper集群的话,官方推荐的最小节点数为3个)。在Zookeeper集群的每台机器上完成以下安装部署步骤:
1)下载安装Java JDK.
2)根据Zookeeper集群的负载情况,合理设置Java堆大小,尽可能避免发生swap,导致Zookeeper性能下降。
3)下载后解压安装Zookeeper包.
4)根据Zookeeper集群节点情况,创建如下格式的Zookeeper配置文件zoo.cfg:
tickTime=2000 dataDir=/var/zookeeper/ clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
其中:
5)在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点对应的server.id中的id编号。
6)启动Zookeeper服务:
可以通过bin/zkServer.sh
脚本启动Zookeeper服务。
7)通过Zookeeper客户端测试服务是否可用:
通过bin/zkCli.sh
脚本启动Zookeeper Java客户端。
配置文件参考: