docker compose 搭建并运行kafka服务 并配置对外的访问入口
时间: 2024-03-16 14:45:05 浏览: 149
要使用 Docker Compose 搭建并运行 Kafka 服务,并配置对外的访问入口,可以按照以下步骤进行操作:
1. 创建一个 `docker-compose.yml` 文件,并添加以下内容:
```
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
restart: always
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
restart: always
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: <your-host-ip>
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "test:1:1"
```
这个 `docker-compose.yml` 文件中,定义了两个服务:zookeeper 和 kafka。zookeeper 是 Kafka 集群中必不可少的一个组件,用于协调集群中的各个 Kafka Broker。kafka 即是 Kafka Broker,用于接收和处理消息。
在 `kafka` 服务中,我们设置了 `KAFKA_ADVERTISED_HOST_NAME` 和 `KAFKA_ADVERTISED_PORT` 两个环境变量,用于配置 Kafka Broker 对外的访问入口。`KAFKA_ADVERTISED_HOST_NAME` 的值应该设置为你的主机 IP,这样其他主机才能通过网络访问到你的 Kafka Broker。`KAFKA_ADVERTISED_PORT` 的值应该设置为 Kafka Broker 对外提供服务的端口号。
`KAFKA_ZOOKEEPER_CONNECT` 指定了 Kafka Broker 连接 ZooKeeper 的地址。
`KAFKA_CREATE_TOPICS` 用于在容器启动时创建一个名为 `test` 的主题。
2. 运行 `docker-compose up` 命令启动 Kafka 集群。
```
$ docker-compose up -d
```
3. 验证 Kafka 集群是否正常工作。可以运行以下命令创建一个测试主题,并向其中发送一些消息:
```
$ docker exec -it kafka /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
$ docker exec -it kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
```
在第一个命令中,我们使用 `kafka-topics.sh` 脚本创建了一个名为 `test` 的主题。在第二个命令中,我们使用 `kafka-console-producer.sh` 脚本向主题中发送消息。
4. 验证 Kafka 集群对外的访问入口是否配置正确。可以在其他主机上运行以下命令,尝试连接到 Kafka Broker 并消费 `test` 主题中的消息:
```
$ docker run --rm -it wurstmeister/kafka /bin/bash
$ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server <your-host-ip>:9092 --topic test --from-beginning
```
在第一个命令中,我们启动了一个新的 Docker 容器,并通过 `/bin/bash` 进入容器的交互式终端。在第二个命令中,我们使用 `kafka-console-consumer.sh` 脚本连接到 Kafka Broker 并消费 `test` 主题中的消息。
如果能够成功消费到 `test` 主题中的消息,则说明 Kafka 集群对外的访问入口已经配置正确。
阅读全文