如何动态的向zookeeper中加入或移除节点
什么叫做动态的加入或移除节点?简单理解就是在zookeeper集群不停止的情况下,向这个集群中加入新的节点或移除现有的节点。这是zookeeper3.5+才有的新功能。搭建一个zookeeper集群参考:https://blog.csdn.net/admin_15082037343/article/details/100045048将现有zookeeper的集群上的jdk和zk复制到新需...
·
什么叫做动态的加入或移除节点?
简单理解就是在zookeeper集群不停止的情况下,向这个集群中加入新的节点或移除现有的节点。这是zookeeper3.5+才有的新功能。
- 搭建一个zookeeper集群
参考:https://blog.csdn.net/admin_15082037343/article/details/100045048 - 将现有zookeeper的集群上的jdk和zk复制到新需要加入集群的节点机器上
新的集群配置一下jdk环境变量 - 新的节点修改zookeeper配置,zoo.cfg
注意:这里只需要配置当前节点和集群中的任意节点连接信息即可,zk3.5+节点的连接信息都放在zoo.cfg.dynamic.*文件中,会自动同步,别忘了${dataDir}下面的myid文件。 - 启动该需要加入集群的节点
在${ZOOKEEPER_HOME}/bin目录下
./zkServer.sh start
- 集群任意节点使用命令行客户端连接到集群
在${ZOOKEEPER_HOME}/bin目录下,使用zkCli.sh连接到集群
./zkCli.sh -server master:2181
- 使用
config
查看节点连接信息
- 添加节点
> reconfig -add server.4=worker1-bak:2888:3888;2181
添加节点失败,因为zk在3.5.3之后添加了权限控制,防止任意节点使用客户端连接到集群破坏集群
- 生成摘要
在zk的根目录,使用以下命令生成摘要
java -cp ./lib/*:./* org.apache.zookeeper.server.auth.DigestAuthenticationProvider su:passwd >> passwd
成功后,在passwd文件中就生成好了摘要信息 su:passwd->su:gACzJ4L2A0F2ygTno5HQnfabuik=
9. 更新zkServer.sh
在zkServer.sh文件中新增命令行,注意修改上一步生成的摘要
SERVER_JVMFLAGS="-Dzookeeper.DigestAuthenticationProvider.superDigest=su:gACzJ4L2A0F2ygTno5HQnfabuik="
- 重启该节点
./zkServer.sh restart
- 认证,重新添加节点
> addauth digest su:passwd
> reconfig -add server.4=worker1-bak:2888:3888;2181
12. 可以使用以下命令移除节点
> reconfig -remove 4
更多推荐
已为社区贡献1条内容
所有评论(0)