此篇之前, 得先看 Storm 开发 --Zookeeper 集群设置 (单例), 熟悉 zookeeper 的单例模式配置, 也就是先运行起来! 如有问题请留言, 鱼一个人也是走了很多弯路, 哎, 不多谈.(备注./ 同样是 zookeeper 的根目录)
配置好单个 server 的 zookeeper 配置
配置文件./conf/zoo.cfg
- # The number of milliseconds of each tick
- tickTime=2000
- # The number of ticks that the initial
- # synchronization phase can take
- initLimit=10
- # The number of ticks that can pass between
- # sending a request and getting an acknowledgement
- syncLimit=5
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
- dataDir=/usr/local/zookeeper/zookeeper-3.4.13/data
- dataLogDir=/usr/local/zookeeper/zookeeper-3.4.13/logs
- server.1=xxxx:2888:3888
- server.2=yyyy:2888:3888
- server.3=zzzz:2888:3888
- # the port at which the clients will connect
- clientPort=2181
配置 hosts 以方便 zookeeper 通信
- > vi /etc/hosts
- 127.0.0.1 xxxx
- 192.168.0.1 yyyy
- 192.168.0.2 zzzz
配置集群状态
检查 myid 文件, 同时复制 zookeeper 到其他 server 上
scp -r var/local/zookeeper/zookeeper-3.4.13.tar.gz root@IP:/var/local/zookeeper
删除并重建 data 和 logs 文件, 以及 myid(一定不能沿用原来的, 特别是 data 文件夹的内容)
- > rm -rf data
- > rm -rf logs
- > mkdir data
- > mkdir logs
- > vi ./data/myid
- 2
- > :wq
修改配置文件./conf/zoo.cfg
server.myid=0.0.0.0:2888:3888# 对应修改 myid 的 server 为 0.0.0.0, 非常重要! 不知道为嘛用本机 IP127.0.0.1 会导致通信失败
参照单例 zookeeper 配置服务, 此处选配
开启!
> ./bin/zkServer.sh start
检查状态
- > ./bin/zkServer.sh status
- ZooKeeper JMX enabled by default
- Using config: /usr/local/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
- Mode: followe
第三行有报错或者单例模式都是有问题的 (鱼表示借来的 server 居然被选举成 leader 了. 看鱼重启下教育下他)
还有一个常见问题, 因为鱼这里用的 root 用户, 但是生产环境下, 习惯每个服务都是有自己的执行用户的, 所以在非 root 用户的情况下一定要注意 zookeeper 这个文件目录的权限归属, 以防因权限归属服务无法起.
这里 Zookeeper 集群设置就算完成了, 如果要加机器, 上文请举一反三吧! 当然 Zookeeper 不止可以用作 Storm, 还有他本身的最基本的功能.
来源: http://www.jianshu.com/p/194cd9c7926f