单机部署Zookeeper集群
- 一、解压压缩包
- 二、分别创建data和logs文件夹
- 三、分别修改配置文件
- 开启防火墙端口:
- 开启云服务器端口
- bug
- 四、启动
一、解压压缩包
将zookeeper-3.4.10.tar.gz
压缩包上传到/usr/local
目录下解压三次,分别改名zookeeper1
、zookeeper2
、zookeeper3
二、分别创建data和logs文件夹
进入zookeeper1的目录,创建data
和logs
文件夹,并且在data
文件夹下创建myid
文件,写入1
;
同样在zookeeper2和zookeeper3进行相同的操作,
区别是myid
不同:zookeeper2的myid文件写2
,zookeeper3的myid文件写3
。
三、分别修改配置文件
进入zookeeper1/conf目录,复制zoo_sample.cfg
文件并重命名为zoo.cfg
文件,编辑zoo.cfg,如下图:
dataDir=/usr/local/zookeeper1/data
dataLogDir=/usr/local/zookeeper1/logs
# serverId是zk节点的ID编号,此处id和data文件夹下的myid中的编号一样。
# lfPort是leader与follower之间的通信端口(默认2888)
# txPort是follower之间选举leader的通信端口(默认3888)
server.1=0.0.0.0:2888:3888
server.2=0.0.0.0:2889:3889
server.3=0.0.0.0:2890:3890
修改dataDir(数据文件)和dataLogDir(日志文件)的位置,并且配置zookeeper的地址。
注意:因为是在同一台服务器上配置的zookeeper集群,
所以ip地址是一样的,但是端口号要设置不同:
第一台设置默认 2888:3888
第二台设置 2889:3889
第三台设置2890:3890
开启防火墙端口:
firewall-cmd --zone=public --add-port=2181/tcp --add-port=2888/tcp --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=2182/tcp --add-port=2889/tcp --add-port=3889/tcp --permanent
firewall-cmd --zone=public --add-port=2183/tcp --add-port=2890/tcp --add-port=3890/tcp --permanent
#重启防火墙
firewall-cmd --reload
开启云服务器端口
bug
=注意:这里我们不能写公网IP!要写0.0.0.0
才启动成功!=
这样zookeeper1就配置完成啦!
然后进入zookeeper2和zookeeper3进行相同的操作。
注意dataDir和dataLogDir路径。
四、启动
分别进入zookeeper1、zookeeper2、zookeeper3的bin目录./zkServer.sh start
启动
使用jps
测试:
zookeeper3选举为leader节点
zookeeper1:
zookeeper2:
zookeeper集群中leader是不可缺少的,但是 leader 节点是怎么产生的呢?其实就是由所有follower 节点选举产生的。
在zookeeper集群中,leader的作用就体现出来了,只有leader节点才有权利发起修改数据的操作,而follower节点即使接收到了客户端发起的修改操作,也要将其转交给leader来处理,leader接收到修改数据的请求后,会向所有follower广播一条消息,让他们执行某项操作,follower 执行完后,便会向 leader 回复执行完毕。当 leader 收到半数以上的 follower 的确认消息,便会判定该操作执行完毕,然后向所有 follower 广播该操作已经生效。
Linux服务器一台、三台、五台、(2*n+1),Zookeeper集群的工作是超过半数才能对外提供服务,3台中超过两台超过半数,允许1台挂掉 ,是否可以用偶数,其实没必要。
如果有四台那么挂掉一台还剩下三台服务器,如果在挂掉一个就不行了,这里记住是超过半数。
另外:如果不是在一台服务器上部署的话,端口号就可以不用改啦,只需要改IP就可以了。