Kafka在CentOS上的网络设置
一、网络与主机准备
二、Kafka核心网络参数
| 参数 | 作用 | 示例 |
|---|---|---|
| listeners | Broker 实际监听的协议与地址 | PLAINTEXT://192.168.88.12:9092 |
| advertised.listeners | 对外公布的地址,客户端据此连接 | PLAINTEXT://203.0.113.10:19092 |
| inter.broker.listener.name | 指定用于 Broker 间通信的监听器名 | INTERNAL |
| listener.security.protocol.map | 监听器名到安全协议的映射 | INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT |
| broker.id | 集群内唯一标识 | 1(每台不同) |
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
listeners=INTERNAL://192.168.88.12:9092,EXTERNAL://203.0.113.10:19092
advertised.listeners=INTERNAL://192.168.88.12:9092,EXTERNAL://203.0.113.10:19092
inter.broker.listener.name=INTERNAL
broker.id=1
说明:上述做法可在同一台机器上通过不同端口/网卡区分内外流量,避免外网直连内网或跨域访问问题。三、防火墙与端口放行
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-port=9092/tcp # 外部监听端口
sudo firewall-cmd --permanent --add-port=19092/tcp # 如配置了外部监听器
sudo firewall-cmd --permanent --add-port=2181/tcp # Zookeeper 客户端端口
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2181 -j ACCEPT
sudo iptables-save > /etc/iptables.rules
四、验证与连通性测试
ss -lntp | grep -E '(:9092|:19092)'
# 列出 Topic
bin/kafka-topics.sh --list --bootstrap-server 203.0.113.10:19092
# 生产消息
bin/kafka-console-producer.sh --bootstrap-server 203.0.113.10:19092 --topic test
# 消费消息
bin/kafka-console-consumer.sh --bootstrap-server 203.0.113.10:19092 --topic test --from-beginning
bin/kafka-topics.sh --create --zookeeper 192.168.1.1:2181 --replication-factor 3 --partitions 3 --topic test
提示:确保客户端使用的连接地址与 advertised.listeners 一致,否则可能出现“能连上但无法收发”的现象。五、常见网络问题与优化