MST

星途 面试题库

面试题:消息队列 Kafka 在 Docker 部署架构下,如何配置多 broker 集群?

假设你在基于 Docker 的环境中部署 Kafka,现在需要配置一个包含三个 broker 的集群,简述具体的配置步骤以及需要注意的关键参数。
33.1万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

配置步骤

  1. 创建网络
    docker network create kafka - net
    
  2. 配置 broker 0
    • 创建 broker - 0.properties 文件,内容如下:
    broker.id=0
    listeners=PLAINTEXT://broker - 0:9092
    advertised.listeners=PLAINTEXT://localhost:9093
    zookeeper.connect=zookeeper:2181
    
    • 启动 broker 0 容器:
    docker run -d --name broker - 0 \
        --network kafka - net \
        -p 9093:9092 \
        -v $PWD/broker - 0.properties:/etc/kafka/broker.properties \
        confluentinc/cp - kafka:latest
    
  3. 配置 broker 1
    • 创建 broker - 1.properties 文件,内容如下:
    broker.id=1
    listeners=PLAINTEXT://broker - 1:9092
    advertised.listeners=PLAINTEXT://localhost:9094
    zookeeper.connect=zookeeper:2181
    
    • 启动 broker 1 容器:
    docker run -d --name broker - 1 \
        --network kafka - net \
        -p 9094:9092 \
        -v $PWD/broker - 1.properties:/etc/kafka/broker.properties \
        confluentinc/cp - kafka:latest
    
  4. 配置 broker 2
    • 创建 broker - 2.properties 文件,内容如下:
    broker.id=2
    listeners=PLAINTEXT://broker - 2:9092
    advertised.listeners=PLAINTEXT://localhost:9095
    zookeeper.connect=zookeeper:2181
    
    • 启动 broker 2 容器:
    docker run -d --name broker - 2 \
        --network kafka - net \
        -p 9095:9092 \
        -v $PWD/broker - 2.properties:/etc/kafka/broker.properties \
        confluentinc/cp - kafka:latest
    

关键参数

  1. broker.id:每个 broker 必须有唯一的 id,用于标识 broker 在集群中的身份,是区分不同 broker 的重要依据。
  2. listeners:指定 broker 监听的地址和端口,格式为 协议://主机名:端口。在 Docker 环境中,主机名通常为容器名称。
  3. advertised.listeners:对外公布的 broker 地址和端口,供生产者和消费者连接。在 Docker 环境中,需要映射到宿主机可访问的地址和端口。
  4. zookeeper.connect:指定 Zookeeper 集群的连接字符串,Kafka 使用 Zookeeper 来管理集群元数据、选举控制器等,确保连接字符串正确可保证 Kafka 正常运行。