为了保障线上zk服务正常,需要平滑进行扩容或者缩容
原始配置如下:
server.1=10.200.93.103:2888:3888
server.3=10.200.93.108:2888:3888
server.4=10.135.29.163:2888:3888
server.5=10.135.29.164:2888:3888
server.6=10.176.30.87:2888:3888 #leader
将所有机器的conf/zoo.cfg文件中 server.6修改为server.10, 目的是为新增的机器编码空出位置。
server.1=10.200.93.103:2888:3888
server.3=10.200.93.108:2888:3888
server.4=10.135.29.163:2888:3888
server.5=10.135.29.164:2888:3888
server.10=10.176.30.87:2888:3888 #leader
同时将leader的机器myid由6修改为10[必须]
myid位置可以查看conf/zoo.cfg中的dataDir=/letv/data/zookeeper
按照myid的从小到大顺序重启zookeeper,1、3、4、5、10.
如果不修改myid直接启动提示已启动,但实际进程没有起来。
配置-myid
在dataDir里会放置一个myid文件,里面就一个数字,用来唯一标识这个服务。这个id是很重要的,一定要保证整个集群中唯一。zookeeper会根据这个id来取出server.x上的配置。比如当前id为1,则对应着zoo.cfg里的server.1的配置。
如果myid跟server.id不匹配,启动zk,日志会抛出如下错误:
2014-05-13 14:12:58,801 [myid:] – ERROR [main:QuorumPeerMain@85] – Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing
当还剩下一台follower未重启时,通过nc命在leader机器上查看,会提示This ZooKeeper instance is not currently serving requests,此时剩余2台机器,违反了zk集群“过半存活”原则,处于不可用状态。
[root@vm-30-87-pro01-zwdx conf]# echo mntr | nc localhost 2181
zk_version 3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency 0
zk_max_latency 331
zk_min_latency 0
zk_packets_received 273980621
zk_packets_sent 273931833
zk_num_alive_connections 186
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 9402
zk_watch_count 2975
zk_ephemerals_count 1563
zk_approximate_data_size 1497826
zk_open_file_descriptor_count 262
zk_max_file_descriptor_count 600000
zk_followers 2
zk_synced_followers 2
zk_pending_syncs 0
[root@vm-30-87-pro01-zwdx conf]# echo mntr | nc localhost 2181
This ZooKeeper instance is not currently serving requests
重启后,会选举server.5作为leader,此时因server.10未重启,与server.10之间没有通讯连接,所以将server.10重启后变为follower。 此时,重启server.5上的zookeeper,重新选举server.10为leader即可。
先扩容到7台,然后缩容为2台,最终配置如下:
#server.1=10.200.93.103:2888:3888
#server.3=10.200.93.108:2888:3888
server.4=10.135.29.163:2888:3888
server.5=10.135.29.164:2888:3888
server.6=10.180.1.204:2888:3888
server.7=10.180.1.196:2888:3888
server.10=10.176.30.87:2888:3888
参考资料:
posted on 2017-07-19 18:10
David1228 阅读(3415)
评论(0) 编辑 收藏 所属分类:
性能优化 、
Netty 、
ZK