跨主机docker部署kraft
时间: 2024-12-26 14:26:20 浏览: 6
### 跨多台主机部署 Docker Kafka KRaft 模式
#### 准备工作
为了成功在多个主机上部署Kafka KRaft模式,需确保每台机器已安装并配置好Docker环境。此外,各节点间网络互通良好,能够通过IP地址相互访问。
#### 编写 `compose-docker.yml` 文件
创建一个名为 `compose-docker.yml` 的文件用于定义服务。此文件应包含所有必要的参数来启动Kafka实例以及设置其为KRaft模式运行[^2]:
```yaml
version: '3'
services:
kafka-node1:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=1
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- "9092:9092"
networks:
- kafka-net
kafka-node2:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=2
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- ALLOW_PLAINTEXT_LISTENER=yes
ports:
- "9092:9092"
networks:
- kafka-net
kafka-node3:
image: bitnami/kafka:latest
environment:
- KAFKA_BROKER_ID=3
- KAFKA_PROCESS_ROLES=controller,broker
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${HOST_IP}:9092
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@node1_ip:9093,2@node2_ip:9093,3@node3_ip:9093
- KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=3
- ALLOW_PLAINTEXT_LISTENER=yes
ports:
- "9092:9092"
networks:
- kafka-net
networks:
kafka-net:
```
上述YAML片段展示了如何配置三个独立的Kafka节点作为控制器和代理角色的一部分。请注意替换 `${HOST_IP}` 和 `nodeX_ip` 变量的实际值为对应服务器的真实IP地址。
#### 启动集群
将编写的 `compose-docker.yml` 文件放置于任意目录下,并依次执行如下命令以启动各个节点上的Kafka服务:
```bash
docker-compose -f /path/to/compose-docker.yml up -d kafka-node1
docker-compose -f /path/to/compose-docker.yml up -d kafka-node2
docker-compose -f /path/to/compose-docker.yml up -d kafka-node3
```
以上操作将在指定路径下的三台不同物理机或虚拟机环境中分别拉起对应的Kafka容器实例。
#### 测试连接性
一旦所有组件都正常运作之后,可以通过任一客户端工具向任何一个暴露在外网端口的服务发送消息来进行验证测试。如果一切顺利,则表明分布式架构搭建完成并且可以投入使用了。
阅读全文