温馨提示×

kafka在ubuntu上如何进行网络配置

小樊
38
2025-12-27 01:57:20
栏目: 智能运维

Ubuntu 上 Kafka 网络配置实操指南

一 基础网络与主机准备

  • 建议为 Kafka 主机配置静态 IP,避免重启后 IP 变化导致客户端失联。Ubuntu 18.04+ 默认使用 Netplan 管理网络,编辑 /etc/netplan/*.yaml(如:01-netcfg.yaml),示例:
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
          addresses: ["192.168.1.100/24"]
          gateway4: "192.168.1.1"
          nameservers:
            addresses: ["8.8.8.8", "8.8.4.4"]
    
    应用:sudo netplan apply。完成后用 ip aping -c 4 8.8.8.8 验证网络连通性。生产环境强烈建议固定 broker.id 与主机名解析。

二 Kafka 核心网络参数配置

  • 编辑 Kafka 配置文件(常见路径:/opt/kafka/config/server.properties/usr/local/kafka/config/server.properties),聚焦以下参数:
    • listeners:Broker 实际监听的协议、IP 与端口。示例:
      • 监听所有接口:listeners=PLAINTEXT://0.0.0.0:9092
      • 仅内网接口:listeners=PLAINTEXT://192.168.1.100:9092
    • advertised.listeners:客户端用于连接的地址,必须是客户端可达的 IP/域名:端口。示例:advertised.listeners=PLAINTEXT://your-public-ip:9092
    • zookeeper.connect:Zookeeper 连接串(单机:localhost:2181;集群:zk1:2181,zk2:2181,zk3:2181
    • 典型最小配置片段:
      broker.id=0
      listeners=PLAINTEXT://0.0.0.0:9092
      advertised.listeners=PLAINTEXT://your-public-ip:9092
      zookeeper.connect=localhost:2181
      log.dirs=/var/lib/kafka/logs
      
    提示:listeners 是“服务端监听地址”,advertised.listeners 是“对外公布地址”,两者不一致(如 NAT/云主机 场景)时必须正确设置,否则客户端会连不上。

三 防火墙与安全组放通

  • 放通 Kafka 与 Zookeeper 端口(示例为 9092/TCP2181/TCP):
    • UFW:sudo ufw allow 9092/tcpsudo ufw allow 2181/tcp,然后 sudo ufw reload
    • iptables:sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 2181 -j ACCEPT;持久化:sudo iptables-save | sudo tee /etc/iptables/rules.v4
  • 如部署 Zookeeper 集群,还需放通节点间通信端口 2888/TCP、3888/TCP;Kafka 集群节点间通信使用 9092/TCP。云上环境请在安全组同步放通对应端口。

四 启动顺序与连通性验证

  • 启动顺序:先启动 Zookeeper,再启动 Kafka Broker。示例:
    # Zookeeper
    /opt/zookeeper/bin/zkServer.sh start
    
    # Kafka
    /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    
  • 验证监听端口:netstat -tuln | grep 9092,应看到 0.0.0.0:9092 或配置的 IP:9092
  • 创建测试主题并收发消息:
    # 创建主题
    /opt/kafka/bin/kafka-topics.sh --create --topic test-topic \
      --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
    
    # 生产者
    /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
    
    # 消费者
    /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
      --topic test-topic --from-beginning
    
    若客户端在外部网络,请将 --bootstrap-server 指向 advertised.listeners 的地址。

五 性能与安全加固建议

  • 操作系统参数优化(/etc/security/limits.conf 与 /etc/sysctl.conf):
    • 文件描述符:* soft nofile 65536* hard nofile 65536;立即生效:ulimit -n 65536
    • TCP:net.core.somaxconn = 1024net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_tw_reuse = 1;生效:sudo sysctl -p
  • 网络与协议优化(server.properties):
    • 线程与缓冲:num.network.threads=8-16socket.send.buffer.bytes=1048576socket.receive.buffer.bytes=1048576
    • 大消息场景:适当增大 socket.request.max.bytes(如 200MB),并同步评估 Zookeeper 限制
  • 安全机制(按需启用):
    • SASL/PLAIN 认证与 SSL/TLS 加密,保护 Broker 间与客户端通信;生产环境建议同时启用认证、授权与加密。

0