zookeeper集群节点扩容数据迁移,3节点扩容至7节点

集群扩容说明

扩容过程中要保证原zookeeper集群还是能提供服务,新zookeeper集群同步老集群的数据,后续将zookeeper域名指向新曾集群的4个节点IP。

扩容步骤

原有集群zookeeper的配置:

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

查看当前节点的角色:

# echo srvr | nc HOST_IP 2181

# ./zkServer.sh status

查看Mode

# echo mntr |nc 192.168.1.101 2181

zk_followers               3#followers节点数

zk_synced_followers   3#数据已同步的followers节点数

zookeeper新增节点确保版本一致(zookeeper-3.4.11),避免不必要的问题。

查看服务器配置 echo conf |  nc ip port

查看客户端信息 echo cons | nc ip port

查看环境变量 echo envi | nc ip port

监控zk健康信息 echo mntr | nc ip port

1、扩容节点4(192.168.104)

查看配置:

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

写入myid编号

echo 4 >/data/zookeeper/myid

启动服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh start

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

# echo mntr |nc 192.168.1.101 2181

zk_followers               4#followers节点数

zk_synced_followers   4#数据已同步的followers节点数

如果出现俩个leader,需要还原整个集群。

2、扩容节点5(19168.1.105)

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

写入myid编号

echo 5 >/data/zookeeper/myid

启动服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh start

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

# echo mntr |nc 192.168.1.101 2181

zk_followers               5#followers节点数

zk_synced_followers   5#数据已同步的followers节点数

3、扩容节点6(192.168.1.106)

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

server.6=192.168.1.106:2888:3888

写入myid编号

echo 6 >/data/zookeeper/myid

启动服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh start

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

# echo mntr |nc 192.168.1.101 2181

zk_followers               6#followers节点数

zk_synced_followers   6#数据已同步的followers节点数

4、扩容节点7(192.168.1.106)

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

server.6=192.168.1.106:2888:3888

server.7=192.168.1.107:2888:3888

写入myid编号

echo 7 >/data/zookeeper/myid

启动服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh start

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

# echo mntr |nc 192.168.1.101 2181

zk_followers               7#followers节点数

zk_synced_followers   7#数据已同步的followers节点数

5、依次调整(4、5、6)节点配置

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

server.6=192.168.1.106:2888:3888

server.7=192.168.1.107:2888:3888

重启服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh restart

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

通过下面命令查看当前集群的状态:

# echo mntr |nc 192.168.1.101 2181

zk_followers               7#followers节点数

zk_synced_followers   7#数据已同步的followers节点数

6、调整老节点(2、3)配置,滚动重启

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

server.6=192.168.1.106:2888:3888

server.7=192.168.1.107:2888:3888

重启服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh restart

检查节点Mode

# echo srvr | nc HOST_IP 2181

确定只有一个leader节点,且为192.168.1.101

# echo mntr |nc 192.168.1.101 2181

zk_followers               7#followers节点数

zk_synced_followers   7#数据已同步的followers节点数

7、调整leader节点(1)配置

# cat zoo.cfg

zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper

dataLogDir=/data/zookeeper/log

clientPort=2181

maxClientCnxns=0

server.1=192.168.1.101:2888:3888

server.2=192.168.1.102:2888:3888

server.3=192.168.1.103:2888:3888

server.4=192.168.1.104:2888:3888

server.5=192.168.1.105:2888:3888

server.6=192.168.1.106:2888:3888

server.7=192.168.1.107:2888:3888

重启服务:

${ZOOKEEPER_HOME}/bin/zkServer.sh restart

检查节点Mode

# echo srvr | nc HOST_IP 2181

Leader应该会在server.7节点上。

# echo mntr |nc 192.168.1.107 2181

zk_followers               7#followers节点数

zk_synced_followers   7#数据已同步的followers节点数

至此,zookeeper集群由3节点已扩容为7节点。

数据已经从老节点迁移至新节点,如果要剔除老节点,用同样的思路去操作处理即可。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kafka可以通过添加更多的broker节点来进行扩容,以下是详细的步骤: 1. 向集群中添加新的broker节点。 2. 配置新的broker节点以加入现有集群。 3. 在Kafka集群中创建新的Topic和Partitions。 4. 将新的Partitions分配给新的broker节点。 5. 等待一段时间,直到所有的消息都被重新平衡到新的broker节点上。 6. 逐步将现有的生产者和消费者迁移到新的broker节点。 具体步骤如下: 1. 向集群中添加新的broker节点: - 安装Kafka软件到新的节点上。 - 配置新的节点以连接现有集群。在新节点的server.properties文件中设置以下属性: ``` broker.id=<new_broker_id> listeners=<new_broker_listener> zookeeper.connect=<zookeeper_connection_string> ``` 其中,<new_broker_id>是一个唯一的整数,<new_broker_listener>是新broker节点的监听地址,<zookeeper_connection_string>是Zookeeper集群的连接地址。 2. 创建新的Topic和Partitions: - 使用kafka-topics.sh脚本创建新的Topic和Partitions。 - 例如,要创建一个名为“new_topic”的Topic并在新节点上创建4个Partitions,使用以下命令: ``` ./kafka-topics.sh --create --zookeeper <zookeeper_connection_string> --replication-factor 2 --partitions 4 --topic new_topic ``` 其中,<zookeeper_connection_string>是Zookeeper集群的连接地址。 3. 将新的Partitions分配给新的broker节点: - 使用kafka-reassign-partitions.sh脚本将新的Partitions分配给新节点。例如,要将new_topic的Partitions重新分配并将其中两个分配给新节点,使用以下命令: ``` ./kafka-reassign-partitions.sh --zookeeper <zookeeper_connection_string> --reassignment-json-file <reassignment_json_file> ``` 其中,<reassignment_json_file>是包含重新分配信息的JSON文件,例如: ``` { "version":1, "partitions":[ {"topic":"new_topic","partition":0,"replicas":[0,1]}, {"topic":"new_topic","partition":1,"replicas":[0,1]}, {"topic":"new_topic","partition":2,"replicas":[0,2]}, {"topic":"new_topic","partition":3,"replicas":[0,2,3]} ] } ``` 上面的配置将new_topic的Partition 0和1分配给broker 0和1,Partition 2分配给broker 0和2,Partition 3分配给broker 0、2和3。 4. 等待一段时间,直到所有的消息都被重新平衡到新的broker节点上。 5. 逐步将现有的生产者和消费者迁移到新的broker节点: - 生产者可以在新的broker节点上使用新的Topic和Partitions开始发送消息。 - 消费者可以通过修改其配置文件来连接新的broker节点,并在新节点上使用新的Topic和Partitions消费消息。 - 逐步将现有的生产者和消费者迁移到新的broker节点,直到所有的消息都被平衡到新的节点上。 以上就是扩展Kafka集群的详细步骤。需要注意的是,在执行以上步骤时,要确保Kafka集群保持稳定,以避免数据丢失或服务停机等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值