一、添加新机
1、先停掉一台zookeeper,留作备份;(非常重要)
2、修改配置zoo.cfg,添加进新zookeeper机器的配置,myid比旧机器的myid依次增加(myid大的连小的);
3、先启动新机器中myid最小的机器。注意:启动过程中,观察DATA文件夹下,是否已同步SNAPSHOT和事物日志,快照的大小是否正常。观察zookeeper.out应该会出现:Getting a snapshot from leader的日志。如果获取不到快照,请立即停止操作!分析原因,避免整个集群数据丢失的问题。
4、按myid从小到大逐个启动新机器,直至新机器启动完毕;
5、按myid从小到大逐个发布集群旧机器,leader最后启动。启动过程中,注意观察启动日志,同时观察集群的健康情况,看是否能正常提供服务,如果没有异常,添加动作完毕;
6、负载均衡上添加新机器;
二、摘掉老机器
1、修改配置zoo.cfg,注释掉需要摘掉的zookeeper机器的配置;
2、从负载均衡上摘掉要下掉机器的流量;
3、如果机器数量未过半的话,逐个停掉要摘掉的zookeeper机器,观察集群是否能正常提供服务;
4、按myid从小到大逐个启动机器,直至机器启动完毕,leader最后启动。
能不用zookeeper,就不用zookeeper,如果一定要用,尽量不要强依赖zookeeper;
如果你要用到分布式锁,zookeeper是个不错的选择,如果不需要分布式锁,你应该优先考虑不用zookeeper;
采用监听方式,而不是主动查询方式,相信zookeeper的监听推送吧,只要你实现的代码没问题,它还是很稳定的;
不要对zookeeper频繁写入,它只应该存储控制信息和配置信息,也就是说,它更多应该用来做读操作。
不要把zookeeper作为数据存储器。
不要与那些大应用共用一个zookeeper集群,你可能会被它拖挂的。