pulsar + zookeeper(迁移zookeeper集群)

2024-08-07 12:41:51 浏览数 (2)

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行
'

0 人点赞