赞
踩
你是否想要一个 Kafka 集群,但又不想经历繁琐的手动配置过程?别担心,有了 Docker 和 Docker Compose,我们可以轻松快捷地搭建一个 Kafka 集群,让你能专注于享受实时数据流处理的乐趣。
软件环境:
硬件要求:
前置信息:
如果你还没有安装 Docker 和 Docker Compose,先别慌,这里有详细的安装步骤。
Docker 安装步骤:
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
docker --version
Docker Compose 安装步骤:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
接下来,让我们为 Kafka 集群编写 Docker Compose 配置文件。创建一个 docker-compose.yml
文件,并将以下内容填入其中:
# docker-compose.yml version: '3.8' services: zookeeper: image: bitnami/zookeeper:latest environment: - ZOO_ENABLE_AUTH=no - ALLOW_ANONYMOUS_LOGIN=yes ports: - "2181:2181" kafka1: image: bitnami/kafka:latest environment: - KAFKA_BROKER_ID=1 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes ports: - "9092:9092" depends_on: - zookeeper kafka2: image: bitnami/kafka:latest environment: - KAFKA_BROKER_ID=2 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes ports: - "9093:9093" depends_on: - zookeeper kafka3: image: bitnami/kafka:latest environment: - KAFKA_BROKER_ID=3 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094 - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes ports: - "9094:9094" depends_on: - zookeeper
在 docker-compose.yml
文件中,我们为每个服务设定了必要的环境变量:
bitnami/zookeeper
镜像,并在 2181
端口上提供服务。bitnami/kafka
镜像,监听不同的端口:
kafka1
监听 9092
kafka2
监听 9093
kafka3
监听 9094
小提醒:
ALLOW_PLAINTEXT_LISTENER
参数设置为 yes
,以便允许明文传输。现在是时候让 Kafka 集群运转起来了。在 docker-compose.yml
文件所在目录执行以下命令:
docker-compose up -d
检查 Kafka 集群状态:
docker-compose ps
你应该会看到类似这样的输出:
Name Command State Ports
------------------------------------------------------------------------
kafka-cluster_kafka1_1 /opt/bitnami/script ... Up 0.0.0.0:9092->9092/tcp
kafka-cluster_kafka2_1 /opt/bitnami/script ... Up 0.0.0.0:9093->9093/tcp
kafka-cluster_kafka3_1 /opt/bitnami/script ... Up 0.0.0.0:9094->9094/tcp
kafka-cluster_zookeeper_1 /opt/bitnami/script ... Up 0.0.0.0:2181->2181/tcp
让我们看看这个集群是否真的能工作吧!
1. 创建一个主题:
通过 kafka1
容器创建一个名为 test-topic
的主题:
docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --create --topic test-topic --bootstrap-server kafka1:9092 --replication-factor 3 --partitions 1
2. 列出主题:
检查主题是否创建成功:
docker exec -it kafka-cluster_kafka1_1 kafka-topics.sh --list --bootstrap-server kafka1:9092
你应该会看到:
test-topic
3. 发送测试消息:
通过 kafka1
容器向 test-topic
发送一些消息:
docker exec -it kafka-cluster_kafka1_1 kafka-console-producer.sh --topic test-topic --bootstrap-server kafka1:9092
输入以下内容作为测试消息:
Hello Kafka
This is a test message
使用 Ctrl+C
退出。
4. 消费测试消息:
在另一个终端窗口,通过 kafka1
容器消费 test-topic
中的消息:
docker exec -it kafka-cluster_kafka1_1 kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server kafka1:9092
你应该会看到:
Hello Kafka
This is a test message
9092
, 9093
和 9094
端口没有被其他服务占用。localhost:2181
确保 ZooKeeper 正常运行。好了,现在你有了自己的 Kafka 集群,尽情玩耍吧!有什么疑问或者建议,欢迎留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。