Docker 快速搭建 Kafka 集群
你是否想要一个 Kafka 集群,但又不想经历繁琐的手动配置过程?别担心,有了 Docker 和 Docker Compose,我们可以轻松快捷地搭建一个 Kafka 集群,让你能专注于享受实时数据流处理的乐趣。
环境与工具
软件环境:
- Docker:v20.10.21
- Docker Compose:v2.15.1
硬件要求:
- 内存:至少 4GB
- CPU:至少双核
前置信息:
- 使用 Bitnami 提供的 Kafka 和 ZooKeeper Docker 镜像。
- 通过 Docker Compose 搭建多节点 Kafka 集群,包括一个 ZooKeeper 和三个 Kafka Broker。
步骤一览
- 安装 Docker 和 Docker Compose
- 准备 Docker Compose 文件
- 配置 Kafka 和 ZooKeeper 环境
- 启动集群
- 测试 Kafka 集群
详细步骤
1. 安装 Docker 和 Docker Compose
如果你还没有安装 Docker 和 Docker Compose,先别慌,这里有详细的安装步骤。
Docker 安装步骤:
- 卸载旧版本 Docker(如果有):
sudoapt-get remove docker docker-engine docker.io containerd runc
- 更新软件包列表并安装所需依赖:
sudoapt-get update
sudoapt-getinstall apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 官方 GPG 密钥:
curl-fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor-o /usr/share/keyrings/docker-archive-keyring.gpg
- 设置 Docker 仓库:
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"|sudotee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker:
sudoapt-get update
sudoapt-getinstall docker-ce docker-ce-cli containerd.io
- 检查 Docker 安装是否成功:
docker--version
Docker Compose 安装步骤:
- 下载 Docker Compose 二进制文件:
sudocurl-L"https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-$(uname-s)-$(uname-m)"-o /usr/local/bin/docker-compose
- 为二进制文件添加执行权限:
sudochmod +x /usr/local/bin/docker-compose
- 检查 Docker Compose 安装是否成功:
docker-compose--version
2. 准备 Docker Compose 文件
接下来,让我们为 Kafka 集群编写 Docker Compose 配置文件。创建一个
docker-compose.yml
文件,并将以下内容填入其中:
# docker-compose.ymlversion:'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
3. 配置 Kafka 和 ZooKeeper 环境
在
docker-compose.yml
文件中,我们为每个服务设定了必要的环境变量:
- ZooKeeper: 使用
bitnami/zookeeper
镜像,并在2181
端口上提供服务。 - Kafka Broker: 每个 Kafka Broker 使用
bitnami/kafka
镜像,监听不同的端口: -kafka1
监听9092
-kafka2
监听9093
-kafka3
监听9094
小提醒:
- 请确保
ALLOW_PLAINTEXT_LISTENER
参数设置为yes
,以便允许明文传输。 - 如果你是为了生产环境,请务必启用加密连接和身份验证。
4. 启动集群
现在是时候让 Kafka 集群运转起来了。在
docker-compose.yml
文件所在目录执行以下命令:
docker-compose up -d
检查 Kafka 集群状态:
docker-composeps
你应该会看到类似这样的输出:
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
5. 测试 Kafka 集群
让我们看看这个集群是否真的能工作吧!
1. 创建一个主题:
通过
kafka1
容器创建一个名为
test-topic
的主题:
dockerexec-it kafka-cluster_kafka1_1 kafka-topics.sh --create--topic test-topic --bootstrap-server kafka1:9092 --replication-factor 3--partitions1
2. 列出主题:
检查主题是否创建成功:
dockerexec-it kafka-cluster_kafka1_1 kafka-topics.sh --list --bootstrap-server kafka1:9092
你应该会看到:
test-topic
3. 发送测试消息:
通过
kafka1
容器向
test-topic
发送一些消息:
dockerexec-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
中的消息:
dockerexec-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
端口没有被其他服务占用。 - ZooKeeper 检查: 可以通过
localhost:2181
确保 ZooKeeper 正常运行。 - Kafka 检查: 确保每个 Kafka Broker 正常运行并监听正确的端口。
好了,现在你有了自己的 Kafka 集群,尽情玩耍吧!有什么疑问或者建议,欢迎留言。
版权归原作者 带篮子~ 所有, 如有侵权,请联系我们删除。