為了保障線上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 閱讀(3433)
評論(0) 編輯 收藏 所屬分類:
性能優化 、
Netty 、
ZK