1.集群是通过选举模式来选出主节点,其他节点是从节点。因此集群的节点数应该为奇数个。至少3个节点组成一个集群。dataDir目录下需要创建一个myid的文件,文件内容即为该节点的id值。conf目录下zoo.cfg配置最末端添加集群的配置server.id值=zk节点的IP地址:集群的通信端口:集群的选举端口。
2.这里演示一个伪分布式的集群,所谓伪分布式即3个ZK节点都在一台服务器上,真实环境可能节点分布在不同的服务器上。但是集群的原理是相同的,配置的方式也是相似的。
3.拷贝zookeeper文件夹2份,分别命名为zookeeper2和zookeeper3.
cp -r zookeeper zookeeper2
cp -r zookeeper zookeeper3
4.修改zookeeper的配置信息
4.1在dataDir目录下创建一个myid的文件,并编辑内容为1。
4.2在conf目录下编辑zoo.cfg文件,在最下方添加集群配置
5.修改zookeeper2的配置信息
5.1在zookeeper2对应的dataDir目录下,创建myid的文件并填写内容为2.
5.2修改zookeeper2对应conf目录下的zoo.cfg文件,需要修改dataDir、dataLogDir的路径(此时配置为zookeeper2的目录),修改客户端连接的端口号(因为在同一台服务器上,所以必须改端口号,如果在不同的服务器上则可以保持一致。),并在末尾添加集群的配置信息。
6.修改zookeeper3的配置信息
6.1在zookeeper3对应的dataDir目录下,创建myid的文件并填写内容为3.
6.2修改zookeeper3对应的conf目录下zoo.cfg文件,修改的地方同zookeepe2的修改方式一样,下图用红圈标注出来了。
上述的涉及3个指令: pwd(打印出当前路径);ll(显示当前文件列表);cat(打印出文件内容)
7.配置修改完毕,分别启动3个ZK节点(为了避免重新启动可以先stop,再start)。
7.1启动节点一
cd /usr/local/zookeeper/bin
./zkServer.sh stop
./zkServer.sh start
7.2启动节点二
cd /usr/local/zookeeper2/bin
./zkServer.sh stop
./zkServer.sh start
7.3启动节点三
cd /usr/local/zookeeper3/bin
./zkServer.sh stop
./zkServer.sh start
8.查看当前节点的状态,进入各个节点的bin目录下,通过 ./zkServer.sh status 查看。
Mode表示当前ZK节点的角色,leader为主节点,follower为从节点。从上述的3张图可以看出zookeeper2节点为主节点,其他为从节点。
9.测试数据的一致性
9.1连接节点一,创建节点cluster并设置数据为cluster
./zkCli.sh -server localhost:2181
create /cluster cluster
9.2连接节点二并查看数据
./zkCli.sh -server localhost:2182
ls /
get /cluster
9.3连接节点三并查看数据
./zkCli.sh -server localhost:2183
ls /
get /cluster
三个节点数据一致则说明集群数据同步成功,否则需要排查具体的报错信息。