在 Ubuntu 上对 Kafka 进行扩容,一般分两种场景:
下面按常见生产做法说明。
在 Ubuntu 上新机器或新目录下:
sudo apt update
sudo apt install openjdk-11-jdk -y
下载并解压 Kafka(版本要和集群一致):
wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz
tar -xzf kafka_2.13-3.6.1.tgz
cd kafka_2.13-3.6.1
server.properties复制已有 broker 的配置,并修改:
broker.id=3 # 不能和已有冲突
listeners=PLAINTEXT://:9092
log.dirs=/data/kafka-logs
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
如果是 KRaft 模式(无 ZooKeeper):
process.roles=broker
node.id=3
controller.quorum.voters=1@broker1:9093,2@broker2:9093,3@broker3:9093
bin/kafka-server-start.sh -daemon config/server.properties
查看是否加入集群:
bin/kafka-broker-api-versions.sh --bootstrap-server broker1:9092
新 broker 启动后 不会自动迁移数据。
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--topics-to-move-json-file topics.json \
--broker-list "1,2,3" \
--generate
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--reassignment-json-file reassign.json \
--execute
bin/kafka-reassign-partitions.sh \
--bootstrap-server broker1:9092 \
--reassignment-json-file reassign.json \
--verify
bin/kafka-topics.sh --bootstrap-server broker1:9092 \
--describe --topic my-topic
bin/kafka-topics.sh --bootstrap-server broker1:9092 \
--alter --topic my-topic \
--partitions 12
⚠️ 注意:
log.dirs=/data1/kafka-logs,/data2/kafka-logs
Kafka 会自动在目录间分配 partition。
如果你用的是:
可以告诉我,我可以给你更精确的 Ubuntu 配置示例。