面试题答案
一键面试配置步骤
- 创建网络:
docker network create kafka - net
- 配置
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
- 创建
- 配置
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
- 创建
- 配置
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
- 创建
关键参数
broker.id
:每个broker
必须有唯一的id
,用于标识broker
在集群中的身份,是区分不同broker
的重要依据。listeners
:指定broker
监听的地址和端口,格式为协议://主机名:端口
。在 Docker 环境中,主机名通常为容器名称。advertised.listeners
:对外公布的broker
地址和端口,供生产者和消费者连接。在 Docker 环境中,需要映射到宿主机可访问的地址和端口。zookeeper.connect
:指定Zookeeper
集群的连接字符串,Kafka
使用Zookeeper
来管理集群元数据、选举控制器等,确保连接字符串正确可保证Kafka
正常运行。