zookeeper-3.4.13集群搭建(CentOS7)
搭建前需要具备的条件
1、首先保证已经有了单机版的搭建经验,至少应该能正常运行正常的单机版本,而且熟悉基本的linux命令
单机版安装参考此链接:https://blog.csdn.net/wzsy_ll/article/details/82737330
2、因为zookeeper集群挂掉一半集群就会不可用,所以要搭建奇数台,这次选择搭建3台
3、 准备工作:安装三台虚拟机,可以选择和我的版本一样,每台机器都安装单机版的zookeeper,并配置环境变量
开始搭建
在每个zookeeper服务的zoo.cfg下添加配置
initLimit=5
syncLimit=2
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888dataDir=目录路径 在zoo.cfg中有这样一段配置
在这个目录下创建myid文件(可以手动更改此目录,我是在zookeeper的安装目录下创建了data目录)
dataDir=/usr/local/zookeeper-3.4.13/data
创建myid文件(每台服务器都需要创建,至此操作都相同)
touch /usr/local/zookeeper-3.4.13/data/myid
看一下上面的这段配置
server.x=ip:端口1:端口2
x就是myid里面的内容,zookeeper启动时通过myid来识别服务器身份,后面的ip是服务器的ip,端口1,是follower连接到leader的端口,端口2是用于选举leader的端口要保证端口没有被占用
netstat -nlpt 看一下端口有没有被占用
如果被占用 kill -9 PID 杀死进程
例如:
第一台zookeeper服务器我的ip是192.168.25.142
第二台zookeeper服务器我的ip是192.168.25.143
第三台zookeeper服务器我的ip是192.168.25.144
每台服务器zoo.cfg下面都有这个配置,则对应myid文件的内容如下
initLimit=5
syncLimit=2
server.1=192.168.25.142:2888:3888(第一台,/usr/local/zookeeper-3.4.13/data/myid文件里面的内容是1)
server.2=192.168.25.143:2888:3888(第二台,/usr/local/zookeeper-3.4.13/data/myid文件里面的内容是2)
server.3=192.168.25.144:2888:3888(第三台/usr/local/zookeeper-3.4.13/data/myid文件里面的内容是3)更改完每台服务器的myid文件后分别启动每台服务器的zookeeper(在上面有提到myid文件应该在哪)
zkServer.sh start (这个是需要配置环境变量后才可以直接启动的,否则要到bin目录下使用./zkServer.sh start )
可能会遇到的问题
启动后查看分别查看zookeeper服务器的启动日志
到zookeeper的安装目录下: tail -f zookeeper.out
可能会看到:
Cannot open channel to 2 at election address /192.168.25.144:3888
(1)zoo.cfg下面的配置server.x=ip:xxxx:xxxx配置出问题(可能是中文)
(2)myid和server.x的x不对应,或者myid不在dataDir所指定的文件目录下
(3)防火墙没有关闭
我是因为防火墙没有关闭导致的:
CentOS7查看防火墙运行状态:
查看防火墙运行状态: firewall-cmd --state
关闭防火墙: systemctl stop firewalld.service
永久关闭防火墙: systemctl disable firewalld.service (禁止开机启动)
先关闭防火墙 再永久关闭 重新启动zookeeper
分别查看zookeeper状态
zkServer.sh status
Using config: /usr/local/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower
Using config: /usr/local/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader
Using config: /usr/local/zookeeper/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: follower