Silentdoer

导航

zookeeper总结-动态添加节点

1.比如现在有zk服务节点node1,node2,node3;之前自己一直以为是直接在node4上配置node1,node2,node3,node4的cluster地址,然后启动node4的zk服务,然后node4的zk服务就能加入到node1,node2,node3这个zk集群里;

现在发现不行,node4启动后客户端无法连接上去,它也不会同步node1/node2/node3上的数据;

必须是旧节点node1,node2,node3的zoo.cfg配置里的集群配置也加上node4才行,即所有节点的集群配置必须要保持一致,然后旧节点也要重启一下,旧节点加上新节点集群配置重启后,再来启动新的集群节点node4;这个时候node4就能同步集群数据了,客户端也能访问它了;

想想确实应该这个逻辑,不然就有漏洞了,随便一个新节点就能拉取其他集群的数据会造成数据泄漏的风险,不过感觉zk可以优化下旧集群动态load配置而不用重启类似nginx一样

通过bin里有个./zkServer.sh start/stop来启动或停止(还有个zkServer-initialize.sh是用于初始化,只需执行一次)

 

2.zookeeper里配置一般会配置3个端口,即客户端访问的2181和2888和3888;其中2888是要leader节点才会绑定这个端口,普通节点不会绑定;

 

3.zookeeper集群节点数最好是奇数个;

 

4.zookeeper运行配置里的集群节点存在部分没有起来

 

5.zookeeper配置myid里的值要和集群配置里的server.1的1对应,每个节点的myid值不一样;

 

6.客户端配置集群地址时其中可以包括没有启动的节点,也可以只配置集群中的部分节点

posted on 2023-05-13 19:17  Silentdoer  阅读(527)  评论(0编辑  收藏  举报