首页
首页
文章目录
  1. 简介
  2. 当前状态
  3. 增加节点流程
  4. 增加topic副本流程
  5. 增加分区流程
  6. 结束

kafka集群扩容操作记录

简介

一些历史遗留的项目 需要扩容时 都是找不到相关的人员,最后都变成运维团队的事情。 今天晚上遇到一个需要扩容的集群,依旧如此。

Kafka的扩容可以细分为以下三种:

1、增加节点
2、增加Topic副本
3、增加分区

当前状态

三台机器如下

序号 本机IP 系统版本 brokerID 主机名 kafka软件版本 zk软件版 备注
1 20.21.8.82 centos 7.7 1 kafka1 kafka_2.12-2.1.0 zookeeper-3.4.13 已存在
2 20.21.8.83 centos 7.7 2 kafka2 kafka_2.12-2.1.0 zookeeper-3.4.13 已存在
3 20.21.8.84 centos 7.7 3 kafka3 kafka_2.12-2.1.0 zookeeper-3.4.13 已存在
4 20.21.8.175 centos 7.7 4 kafka3 kafka_2.12-2.1.0 zookeeper-3.4.13 待扩容
5 20.21.8.176 centos 7.7 5 kafka3 kafka_2.12-2.1.0 zookeeper-3.4.13 待扩容

增加节点流程

1、部署java环境
请参考上一篇文章
2、配置hosts

1
2
3
20.21.8.82 node01
20.21.8.83 node02
20.21.8.84 node03

将以上内容添加到新的节点中
3、配置kafka配置
将任意一台机器上面的kafka拷贝到新机器上面

修改config/server.properties中的broker.id、log.dirs、listeners三个参数
注: 记得创建log.dirs 并允许读写,不然kafka可能启动失败

4、启动kafka
检查第三步确认无误后

1
bin/kafka-server-start.sh config/server.properties  &

启动kafka ,到此增加kafka节点完成。

增加topic副本流程

1、确认topic名称和编写迁移json文件
这里已PGYUG为例
movetopic.json

1
2
3
4
5
6
{
"topics":[
{"topic":"PGYUG"}
],
"version":1
}

2、生成迁移计划

1
2
3
4
5
# kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --topics-to-move-json-file movetopic.json --broker-list "0,1,2,3,4" --generate
Current partition replica assignment
{"version":1,"partitions":[{"topic":"PGYUG","partition":3,"replicas":[1,2,0]},{"topic":"PGYUG","partition":1,"replicas":[2,1,0]},{"topic":"PGYUG","partition":0,"replicas":[1,2,0]},{"topic":"PGYUG","partition":2,"replicas":[0,2,1]},{"topic":"PGYUG","partition":5,"replicas":[0,1,2]},{"topic":"PGYUG","partition":4,"replicas":[2,0,1]}]}
Proposed partition reassignment configuration
{"version":1,"partitions":[{"topic":"PGYUG","partition":3,"replicas":[2,0,1]},{"topic":"PGYUG","partition":1,"replicas":[0,3,4]},{"topic":"PGYUG","partition":0,"replicas":[4,2,3]},{"topic":"PGYUG","partition":2,"replicas":[1,4,0]},{"topic":"PGYUG","partition":5,"replicas":[4,3,0]},{"topic":"PGYUG","partition":4,"replicas":[3,1,2]}]}

3、重新分配partition
将生成的迁移计划保存为run.json并运行

1
# kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --reassignment-json-file ~/run.json --execute

4、查看执行状态

1
# kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --reassignment-json-file  ~/run.json --verify

其实通过generate的结果我们也可以看出,其实不管是扩容,减容,迁移,其实都是重新分配Topic或者Partition的过程。json文件的内容都是指定Topic下的Partition要移动到哪个Node上。

增加分区流程

1、调整分区数量

1
# kafka-topics.sh --zookeeper  127.0.0.1:2181 --alter --topic PGYUG --partitions 6

2、检查调整后状态

1
# kafka-topics.sh --describe --zookeeper  127.0.0.1:2181 --topic PGYUG

3、编写add_partition.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
"version":1,
"partitions":[
{
"topic":"PGYUG",
"partition":0,
"replicas":[
0,
1
]
},
{
"topic":"PGYUG",
"partition":1,
"replicas":[
1,
2
]
},
{
"topic":"PGYUG",
"partition":2,
"replicas":[
2,
0
]
},
{
"topic":"PGYUG",
"partition":3,
"replicas":[
0,
1
]
},
{
"topic":"PGYUG",
"partition":4,
"replicas":[
1,
2
]
},
{
"topic":"PGYUG",
"partition":5,
"replicas":[
2,
0
]
}
]
}

4、运行重新分配partition

1
# kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --reassignment-json-file ~/add_partition.json --execute

5、检查状态

1
# kafka-reassign-partitions.sh --zookeeper 127.0.0.1:2181 --reassignment-json-file ~/add_partition.json --verify

结束

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫