Kafka:集群部署

1. 下载安装Kafka(所有节点执行)

1
2
3
4
5
6
7
# 下载Kafka(版本可调整)
cd /opt
wget https://archive.apache.org/dist/kafka/2.8.0/kafka_2.13-2.8.0.tgz

# 解压并创建软链接
tar -zxvf kafka_2.13-2.8.0.tgz -C /opt/
ln -s /opt/kafka_2.13-2.8.0 /opt/kafka

2. 配置Kafka(各节点分别配置)

进入配置目录

1
2
cd /opt/kafka/config
vim server.properties

192.168.154.34 (cluster1) 配置:

1
2
3
4
5
6
broker.id=0
listeners=PLAINTEXT://192.168.154.34:9092
advertised.listeners=PLAINTEXT://192.168.154.34:9092
zookeeper.connect=cluster1:2181,cluster2:2181,cluster3:2181
log.dirs=/tmp/kafka-logs
num.partitions=3

192.168.154.35 (cluster2) 配置:

1
2
3
4
5
6
broker.id=1
listeners=PLAINTEXT://192.168.154.35:9092
advertised.listeners=PLAINTEXT://192.168.154.35:9092
zookeeper.connect=cluster1:2181,cluster2:2181,cluster3:2181
log.dirs=/tmp/kafka-logs
num.partitions=3

192.168.154.36 (cluster3) 配置:

1
2
3
4
5
6
broker.id=2
listeners=PLAINTEXT://192.168.154.36:9092
advertised.listeners=PLAINTEXT://192.168.154.36:9092
zookeeper.connect=cluster1:2181,cluster2:2181,cluster3:2181
log.dirs=/tmp/kafka-logs
num.partitions=3

3. 配置环境变量(所有节点执行)

1
vim /etc/profile

添加以下内容:

1
2
export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

使环境变量生效:

1
source /etc/profile

4. 启动Kafka集群(各节点分别执行)

1
2
3
4
5
6
7
8
# 启动服务(前台运行,方便查看日志)
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &

# 或者以守护进程方式启动(生产环境推荐)
JMX_PORT=9988 /opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

# 检查进程
ps -ef | grep kafka.Kafka

5. 集群验证测试

创建测试主题

1
2
3
4
5
/opt/kafka/bin/kafka-topics.sh --create \
--bootstrap-server cluster1:9092 \
--replication-factor 3 \
--partitions 3 \
--topic test-topic

查看主题信息

1
2
3
/opt/kafka/bin/kafka-topics.sh --describe \
--bootstrap-server cluster1:9092 \
--topic test-topic

生产者测试(任意节点执行)

1
2
3
/opt/kafka/bin/kafka-console-producer.sh \
--broker-list cluster1:9092,cluster2:9092,cluster3:9092 \
--topic test-topic

消费者测试(另一节点执行)

1
2
3
4
/opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server cluster1:9092,cluster2:9092,cluster3:9092 \
--topic test-topic \
--from-beginning

6. 常用管理命令

查看所有主题

1
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server cluster1:9092

删除主题

1
2
3
/opt/kafka/bin/kafka-topics.sh --delete \
--bootstrap-server cluster1:9092 \
--topic test-topic

查看消费者组

1
2
3
/opt/kafka/bin/kafka-consumer-groups.sh \
--bootstrap-server cluster1:9092 \
--list

注意事项

  1. 确保ZooKeeper集群已正常启动
  2. 各节点broker.id必须唯一
  3. 生产环境建议配置合理的log.dirs路径(非/tmp目录)
  4. 根据硬件配置调整num.network.threads和num.io.threads参数
  5. 防火墙需开放9092端口(Kafka服务端口)