Zookeeper方案 zookeeper服务器集群规模不小于3个节点,要求服务器之间系统时间保持一致。
主机IP | 消息端口 | 通信端口 | 节点目录/usr/local/下 |
192.168.74.155 | 2181 | 2888:3888 | zookeeper |
192.168.74.156 | 2181 | 2888:3888 | zookeeper |
192.168.74.157 | 2181 | 2888:3888 | zookeeper |
1、拷贝zookeeper安装文件 zookeeper-3.4.5.tar.gz 到 /usr/local/software 文件夹下
2、解压 安装文件 到 /usr/local 路径下 tar -zxvf /usr/local/software/zookeeper-3.4.5.tar.gz -C /usr/local/
3、重命名文件夹 cd /usr/local mv zookeeper-3.4.5 zookeeper
4、重命名配置文件 cd /usr/local/zookeeper/conf mv zoo_sample.cfg zoo.cfg
5、修改配置文件vim zoo.cfg -->
1、dataDir=/usr/local/zookeeper/data 修改完后需要 创建一个 data文件夹
2、在最后面添加集群节点信息 可以写主机名 也可以写 ip地址
server.0=192.168.74.155:2888:3888
server.1=192.168.74.156:2888:3888
server.2=192.168.74.157:2888:3888
6、服务器标识配置
1、创建 data文件夹 mkdir /usr/local/zookeeper/data
2、在这个文件夹下 创建文件 myid(内容为服务器标识 155-->0 / 156-->1 / 157-->2) vim /usr/local/zookeeper/data/myid
7、修改环境变量 vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=.:$ZOOKEEPER_HOME/bin:$PATH
8、刷新环境变量 执行命令 source /etc/profile
9、三个服务器的配置文件都要修改,或者修改一台,然后把 zookeeper文件夹 拷贝到 另外两天服务器上面,包括 profile文件
然后修改另外两台服务器的 myid 文件的值 为 1 和 2
10、启动zookeeper
启动路径:/usr/local/zookeeper/bin
执行启动:zkServer.sh start(注意这里三台服务器都要进行启动 由于配置了环境变量,直接执行命令即可)
查看状态:zkServer.sh status(在三个节点上检测zk的mode,一个leader和两个follower)
11、安装启动异常
Error contacting service. It is probably not running.
网上问题答案有许多种,一一归纳:
1. zoo.cfg配置文件中指定目录却没有创建! 创建相应目录即可。
2. zoo.cfg中dataDir指定路径为Myid文件的路径。
Myid内容与:server.?=localhost:2888:3888 中你所设置?一致!
3.使用service iptables stop 关闭防火墙
使用service iptables status确认
4. 1,打开zkServer.sh 找到
status)
STAT=`echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode`
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉
5.2181端口被占用! #我就是死在这的,死了很久很久。。
zkServer.sh stop #先停止zookeep
netstat -an | grep 2181 #查看端口是否占用,如果占用
clientPort = 2888 #随便找个没占用的端口号!