环境:
Centos 7、zookeeper-3.4.6.tar.gz
一、单机版的搭建过程
1,上传zookeeper安装包并解压
上传安装包到服务器上后使用 tar -zxvf zookeeper-3.4.6.tar.gz 命令进行解压
2,在解压后的目录中使用 mkdir data 创建data目录
3,重命名并修改conf/目录下配置文件zoo_simple.cfg
使用命令 mv zoo_sample.cfg zoo.cfg 、 进行重命名;
使用vim命令修改里面的data目录信息
4,修改完成后启动ZooKeeper 服务并查询启动后状态
在 /bin 目录下使用 ./zkServer.sh start 命令进行启动;
使用 ./zkServer.sh status 命令查看当前启动状态;Mode:standalong 表示单节点服务。
二、zookeeper集群的搭建过程
1,创建一个单独的目录用来存放多个zk的安装目录(因为电脑只有一个虚拟机,所以采用不同端口实现集群效果)
创建集群安装目录:/home/zookeeper/cluster。
2,上传zk安装包到该目录下,并解压重命名,并复制三份分别为zookeeper01、zookeeper02、zookeeper03
并在下面上传了文件zookeeper-3.4.6.tar.gz 。
使用命令:tar -zxvf zookeeper-3.4.6.tar.gz 进行解压。
然后 使用命令 mv zookeeper-3.4.6 zookeeper01 修改目录名称为zookeeper01。
使用命令 cp -r zookeeper01 zookeeper0N 复制两个02 03 的安装目录。
3,在三个不同的安装目录下均创建data目录、并在data目录下创建myid文件存储节点编号
使用命令:mkdir data; cd data ; touch myid; 并在myid文件中开始位置写入该节点的编号信息。
其中 1 、2、3 表示当前节点的编号信息,下一步会用到该信息。
4,在/conf 目录下修改文件zoo_sample.cfg,并修改端口以及日志路径和集群信息
使用命令 mv zoo_sample.cfg zoo.cfg 、 进行重命名;
使用vim命令修改里面的data目录、端口 以及添加集群节点信息;clientPort每个节点都使用不同的节点端口。尾部新增的server.myid=ip:port1:port2 其中myid为上一步中data/myid 文件中的值。port1和port2 都时不同的端口设置于与clientPort 不一样。
02、03 节点下的zoo.cfg 信息;
5,分别启动所有节点服务,并查看选举结果。
分别在各个节点下的bin目录下 使用 ./zkServer.sh start 进行启动。
使用 ./zkServer.sh status 命令查看启动状态。
6,zk的选举过程
当启动第一个节点server1时,启动中的服务中只有自己,server1 将选举投票给自己,自己获得一票。并且目前启动的服务节点数量不足所有节点数量的一半,该节点的状态仍为looking 状态。
当启动第二个节点server2时,第二个节点比较已启动myid值,发现自己的比较大,投票给自己活得一票。server1发现有新节点加入,将重新发起投票,在比较myid值之后将票投给server2,server2 活得两票。此时系统中启动的节点以及投票数量大于等于所有节点数量的一半。此时已经选出leader。此时server1 则为follower,状态由looking更新为following。server2当选leader,状态由looking更新为leading。
当启动第三个节点server3时,发现系统已经选出了 leader,server3遵从半数原则将票投给server2。此时选举结束。