外观
ADMQ Kafka 集群部署
本文档指导部署 3 节点高可用 Kafka 集群(ZooKeeper 与 Kafka Broker 混合部署)。
一、部署规划
| 节点 | IP | 角色 |
|---|---|---|
| Node 1 | 192.168.1.10 | ZooKeeper + Kafka Broker |
| Node 2 | 192.168.1.11 | ZooKeeper + Kafka Broker |
| Node 3 | 192.168.1.12 | ZooKeeper + Kafka Broker |
前置要求:
- 三台机器时间同步(NTP)
- 开放端口:
2181(ZK 客户端)、2888(ZK 选举)、3888(ZK 选举)、9092(Kafka) - 关闭防火墙或按需放行以上端口
二、所有节点:基础安装
在 Node 1、Node 2、Node 3 上分别执行:
2.1 创建目录并解压
bash
mkdir -p /apusic/admq-kafka
cd /apusic/admq-kafka
tar -xzf admq-kafka-<version>.tar.gz2.2 放置授权文件
bash
cp license.xml /apusic/admq-kafka/三、配置 ZooKeeper 集群
3.1 修改 ZK 配置文件
编辑 config/kafka-zk.conf,三个节点配置内容完全一致:
ini
tickTime=2000
dataDir=/apusic/admq-kafka/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.10:2888:3888
server.2=192.168.1.11:2888:3888
server.3=192.168.1.12:2888:38883.2 创建 MyID 文件(每台机器不同)
bash
# Node 1(192.168.1.10)
mkdir -p /apusic/admq-kafka/data/zookeeper
echo "1" > /apusic/admq-kafka/data/zookeeper/myid
# Node 2(192.168.1.11)
mkdir -p /apusic/admq-kafka/data/zookeeper
echo "2" > /apusic/admq-kafka/data/zookeeper/myid
# Node 3(192.168.1.12)
mkdir -p /apusic/admq-kafka/data/zookeeper
echo "3" > /apusic/admq-kafka/data/zookeeper/myid四、配置 Kafka Broker
编辑 config/kafka-broker.conf,各节点配置不同:
Node 1(192.168.1.10)
ini
broker.id=1
listeners=PLAINTEXT://192.168.1.10:9092
log.dirs=/apusic/admq-kafka/data/kafka
zookeeper.connect=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181Node 2(192.168.1.11)
ini
broker.id=2
listeners=PLAINTEXT://192.168.1.11:9092
log.dirs=/apusic/admq-kafka/data/kafka
zookeeper.connect=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181Node 3(192.168.1.12)
ini
broker.id=3
listeners=PLAINTEXT://192.168.1.12:9092
log.dirs=/apusic/admq-kafka/data/kafka
zookeeper.connect=192.168.1.10:2181,192.168.1.11:2181,192.168.1.12:2181五、启动集群
严格遵循启动顺序:先启动 ZooKeeper,再启动 Kafka。
5.1 启动所有节点的 ZooKeeper
依次登录 Node 1、Node 2、Node 3,执行:
bash
bin/admq kafka zk5.2 启动所有节点的 Kafka Broker
依次登录 Node 1、Node 2、Node 3,执行:
bash
bin/admq kafka broker
# 或后台模式
bin/admq-daemon start kafka broker六、验证与测试
6.1 验证 ZooKeeper 集群状态
在任意节点执行:
bash
echo ruok | nc localhost 2181
# 预期返回:imok6.2 验证 Kafka 集群元数据
bash
bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.10:90926.3 功能测试
创建 Topic(3 副本,数据分布在所有节点):
bash
bin/kafka-topics.sh --create \
--bootstrap-server 192.168.1.10:9092 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic查看 Topic 详情(确认 ISR 和 Leader 分布):
bash
bin/kafka-topics.sh --describe \
--bootstrap-server 192.168.1.10:9092 \
--topic test-topic
# Leader 均匀分布在不同节点,ISR 包含所有节点,表示集群健康生产消息:
bash
bin/kafka-console-producer.sh \
--bootstrap-server 192.168.1.10:9092 \
--topic test-topic消费消息:
bash
bin/kafka-console-consumer.sh \
--bootstrap-server 192.168.1.10:9092 \
--topic test-topic \
--from-beginning七、停止服务
bash
# 先停 Kafka,再停 ZooKeeper
bin/admq-daemon stop kafka broker
bin/admq-daemon stop kafka zk八、常见问题
ZK 启动失败:Connection refused 或 Session expired
- 检查
myid文件是否存在且内容正确 - 检查
server.1/2/3配置中的 IP 是否正确 - 确认各节点时间同步
Kafka 无法连接 ZooKeeper
- 确认 ZooKeeper 已正常启动(
echo ruok | nc localhost 2181返回imok) - 检查
zookeeper.connect配置中的地址和端口
如需技术支持,请联系 Apusic 技术支持团队。