Skip to content

ADMQ Kafka 集群部署

本文档指导部署 3 节点高可用 Kafka 集群(ZooKeeper 与 Kafka Broker 混合部署)。


一、部署规划

节点IP角色
Node 1192.168.1.10ZooKeeper + Kafka Broker
Node 2192.168.1.11ZooKeeper + Kafka Broker
Node 3192.168.1.12ZooKeeper + 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.gz

2.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:3888

3.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:2181

Node 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:2181

Node 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 zk

5.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
# 预期返回:imok

6.2 验证 Kafka 集群元数据

bash
bin/kafka-broker-api-versions.sh --bootstrap-server 192.168.1.10:9092

6.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 技术支持团队。

金蝶天燕(Apusic)企业级消息中间件套件