zookeeper旧集群修改配置
旧集群使用的是静态配置,先修改成动态配置,只需要修改配置文件,加入以下内容,重启zookeeper服务,先重启两个follower,最后重启leader(这是第一次重启 leader 节点,会重新选举leader)
代码语言:javascript复制vim /data/program/zookeeper/conf/zoo.cfg
kipACL=yes
4lw.commands.whitelist=*
reconfigEnabled=true # 启用动态配置
zookeeper新集群修改配置
新集群三个节点直接部署成动态配置,在配置文件中加入新、旧集群所有的节点地址
代码语言:javascript复制vim /data/program/zookeeper/conf/zoo.cfg
autopurge.purgeInterval=1
initLimit=10
syncLimit=5
skipACL=yes
maxClientCnxns=2000
4lw.commands.whitelist=*
tickTime=2000
dataDir=/data/program/zookeeper/data
reconfigEnabled=true
dataLogDir=/data/program/zookeeper/logs
dynamicConfigFile=/data/program/zookeeper/conf/zoo.cfg.dynamic
vim /data/program/zookeeper/conf/zoo.cfg.dynamic
server.1=172.16.20.45:2888:3888;0.0.0.0:2181
server.2=172.16.20.94:2888:3888;0.0.0.0:2181
server.3=172.16.20.120:2888:3888;0.0.0.0:2181
server.4=172.16.20.177:2888:3888;0.0.0.0:2181
server.5=172.16.20.183:2888:3888;0.0.0.0:2181
server.6=172.16.20.250:2888:3888;0.0.0.0:2181
启动新集群三个zookeeper服务
由于现在leader节点还在旧集群上,登录leader节点,动态添加新集群三个节点
代码语言:javascript复制./zkCli.sh
reconfig -add 4=IP:2888:3888;0.0.0.0:2181
reconfig -add 5=IP:2888:3888;0.0.0.0:2181
reconfig -add 6=IP:2888:3888;0.0.0.0:2181
现在是由6个节点组成的集群(1个leader,5个follower)
修改pulsar配置,把pulsar配置中的zookeeper地址切换到新集群的节点上,重启pulsar服务,验证 pulsar 是否正常
登录 leader 节点,先动态移除旧集群节点的2个 follower 节点
代码语言:javascript复制./zkCli.sh
reconfig -remove 1
reconfig -remove 2
手动停止 2个 follower 节点的服务
代码语言:javascript复制./zkServer.sh stop
在 leader 节点上查看数据同步状态
代码语言:javascript复制[root@localhost bin]# echo mntr | nc localhost 2181
zk_version 3.5.6-c11b7e26bc554b8523dc929761dd28808913f091, built on 10/08/2019 20:18 GMT
zk_avg_latency 0
zk_max_latency 77
zk_min_latency 0
zk_packets_received 3960
zk_packets_sent 4011
zk_num_alive_connections 1
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 111
zk_watch_count 0
zk_ephemerals_count 18
zk_approximate_data_size 14245
zk_open_file_descriptor_count 64
zk_max_file_descriptor_count 655350
zk_followers 3 # 现集群中有3个 follower
zk_synced_followers 3 # 已同步的 follower 节点数
zk_pending_syncs 0
zk_last_proposal_size 32
zk_max_proposal_size 1345
zk_min_proposal_size 32
现在是由4个节点组成的集群,leader 在旧集群的第三个节点上,新集群三个节点都是follower
第二次重启 leader节点,zookeeper 会重新选举 leader,新集群会被选举为 leader 节点
代码语言:javascript复制./zkServer.sh restart
然后登录新集群的 leader 节点,动态移除旧集群的最后一个节点
代码语言:javascript复制./zkCli.sh
reconfig -remove 3
停止旧集群最后一个节点服务
代码语言:javascript复制./zkServer.sh stop
登录新集群 leader 节点,查看状态
代码语言:javascript复制[root@localhost bin]# echo mntr | nc localhost 2181
zk_version 3.5.6-c11b7e26bc554b8523dc929761dd28808913f091, built on 10/08/2019 20:18 GMT
zk_avg_latency 1
zk_max_latency 105
zk_min_latency 0
zk_packets_received 121
zk_packets_sent 120
zk_num_alive_connections 7
zk_outstanding_requests 0
zk_server_state leader
zk_znode_count 113
zk_watch_count 15
zk_ephemerals_count 18
zk_approximate_data_size 14539
zk_open_file_descriptor_count 69
zk_max_file_descriptor_count 655350
zk_followers 2 # 由2个 follower 节点
zk_synced_followers 2 # 已同步的 follower 节点数
zk_pending_syncs 0
zk_last_proposal_size 32
zk_max_proposal_size 906
zk_min_proposal_size 32
现集群是由三个新节点组成的
代码语言:javascript复制[zk: localhost:2181(CONNECTING) 0] config
server.4=172.16.20.177:2888:3888:participant;0.0.0.0:2181
server.5=172.16.20.183:2888:3888:participant;0.0.0.0:2181
server.6=172.16.20.250:2888:3888:participant;0.0.0.0:2181
version=300000003
至此,zookeeper 集群迁移完毕。
pulsar迁移zookeeper时,zookeeper中的元数据保存的还是以前pulsar初始化时的老的zookeeper地址,否则会报无法连到zookeeper
代码语言:javascript复制./zkCli.sh -server 127.0.0.1:12181
ls /pulsar/functions
./zkCli.sh -server 127.0.0.1:12181 set /pulsar/functions '复制上面输出的内容,并改成新的zookeeper地址,大概有3行
'