单机模式
安装过程
1、下载安装包放在/opt目录下
2、解压安装包
tar xzvf zookeeper-3.4.14.tar.gz
3、zookeeper-3.4.14/conf路径下的文件zoo_sample.cfg改名为zoo.cfg
mv zoo_sample.cfg zoo.cfg
4、打开文件zoo.cfg
vim zoo.cfg
5、修改参数dataDir,改为以下内容:
dataDir=/opt/zookeeper-3.4.14/zkData
6、zookeeper-3.4.14目录下新建目录zkData
mkdir zkData
测试
1、启动zookeeper
./bin/zkServer.sh start
可以看到默认会自动读取zoo.cfg配置文件
2、查看状态
./bin/zkServer.sh status
standalone:表示处于单机模式
3、退出
./bin/zkServer.sh stop
集群模式
在192.168.1.201、192.168.1.202、192.168.1.203三台服务器上部署zookeeper
在单机模式的基础上添加一下步骤:
1、在目录zkData下新建文件myid
touch myid
2、在文件myid中添加server对应的编号(可以随便写,但必须保证在集群中是唯一的,比如192.168.1.201为1,192.168.1.201为2,192.168.1.201为3)
3、编辑文件zoo.cfg,添加以下内容:
server.1=192.168.1.201:2888:3888
server.2=192.168.1.202:2888:3888
server.3=192.168.1.203:2888:3888
参数解释:
server.A=B:C:D
A:myid中对应的值
B:服务器地址
C:这个服务器与集群Leader交换信息的端口
D:集群Leader挂了后,用于选举时相互通信的端口
测试
1、启动192.168.1.201上的zookeeper
./zkServer.sh start
2、查看状态
./zkServer.sh status
集群不能正常工作
3、启动192.168.1.202上的zookeeper,并查看状态
可以看到状态为leader
4、查看192.168.1.201上的zookeeper状态
5、启动192.168.1.203上的zookeeper,并查看状态
总结
1、192.168.1.201上的zookeeper启动时,会给自己投票,因为只有一个节点,只能得到一票,少于半数,所以集群不能正常工作;
2、192.168.1.202启动时,会给自己投票,同时因为192.168.1.202对应的myid比192.168.1.201大,所以192.168.1.201也将票投给192.168.1.202,此时192.168.1.202得到2票,大于半数,所以成为leader,192.168.1.201更改状态为follower
2、192.168.1.203启动时,给自己投票,虽然192.168.1.202对应的myid是最大的,但是此时leader已经确定,其他节点不会给他投票,所以竞争leader失败,成为follower。