Docker容器化部署zookeeper+kafka集群详细步骤

一、前言

背景介绍:为了测试使用kafka connect插件读取Oracle数据库日志从而达到实时获取Oracle数据库数据变化的目的,而搭建的三个节点的zookeeper+kafka集群,顺便将自己的步骤记录下来加深印象也希望能对大家有些许的帮助。

二、准备三台云服务器

这里我用的是三台云服务器,大家可以白嫖三家的云服务器新用户优惠,也可以通过流量付费的方式购买三个配置高一些的服务器,当然也可以使用虚拟机。

这里我以kafka01、kafka02、kafka03代指三台服务器

以下操作默认使用root权限

三、安装Docker

1 卸载旧版本Docker

yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

2 安装yum工具包

yum install -y yum-utils

3 设置阿里云镜像

yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4 安装Docker

 

yum install docker-ce docker-ce-cli containerd.io #安装最新版本 docker-ce 社区版 docker-ce 企业版 yum list docker-ce --showduplicates | sort -r #显示docker历史版本 yum install docker-ce-<VERSION_STRING> docker-ce-cli-

<think>好的,我现在需要帮助用户找到使用Docker Compose在单机上部署ZookeeperKafka集群详细步骤。用户之前的问题可能涉及相关部署,但根据提供的引用,用户现在需要更具体的逐步指南。首先,我需要回忆Docker Compose的基本结构,以及ZookeeperKafka集群配置。Zookeeper作为Kafka的依赖,通常需要先启动。在单机上部署集群,需要注意端口冲突和网络配置,确保每个容器有独立的端口和正确的服务发现。接下来,用户提供的引用中有几个相关的部署片段,比如引用[2]提到创建多个Zookeeper配置目录,引用[3]展示了使用bitnami镜像的例子。这可能提示我需要使用bitnami的官方镜像来简化配置,同时确保Zookeeper集群的配置正确。 然后,我需要组织步骤。通常步骤包括:创建目录结构、编写docker-compose.yml、配置Zookeeper集群、配置Kafka集群、启动服务、验证部署。要确保每个步骤清晰,避免遗漏关键点,比如环境变量、端口映射、卷挂载等。 在编写docker-compose文件时,需要注意ZookeeperKafka的服务依赖关系,使用depends_on确保启动顺序。同时,Kafka需要配置连接到Zookeeper集群,这可能需要设置多个Zookeeper节点的主机名和端口。 另外,用户可能关心如何验证集群是否正常工作,比如通过进入容器执行命令,或者使用生产者和消费者测试消息传递。这部分需要包含在步骤中,帮助用户确认部署成功。还需要注意单机部署的资源限制,比如内存和CPU,但用户可能更关注步骤的正确性,而不是优化。此外,网络配置使用Docker的内部网络,确保容器间可以通信。最后,生成相关问题,帮助用户深入理解,比如如何扩展集群、常见错误排查、性能优化等。这些问题应该基于部署步骤的自然延伸,覆盖用户可能遇到的后续需求。</think>### 分步部署ZookeeperKafka集群步骤 #### 1. 创建目录结构 ```bash mkdir -p ~/docker-compose/kafka-cluster/{zookeeper1,zookeeper2,zookeeper3,kafka1,kafka2,kafka3} ``` 此目录用于存放集群配置文件和docker-compose.yml[^2][^3]。 #### 2. 编写docker-compose.yml ```yaml version: '3.8' services: zookeeper1: image: bitnami/zookeeper:3.8 container_name: zookeeper1 ports: - "2181:2181" environment: - ZOO_SERVER_ID=1 - ZOO_SERVERS=zookeeper1:2888:3888;zookeeper2:2888:3888;zookeeper3:2888:3888 volumes: - ./zookeeper1/data:/bitnami/zookeeper/data - ./zookeeper1/logs:/bitnami/zookeeper/logs zookeeper2: image: bitnami/zookeeper:3.8 container_name: zookeeper2 ports: - "2182:2181" environment: - ZOO_SERVER_ID=2 - ZOO_SERVERS=zookeeper1:2888:3888;zookeeper2:2888:3888;zookeeper3:2888:3888 depends_on: - zookeeper1 zookeeper3: image: bitnami/zookeeper:3.8 container_name: zookeeper3 ports: - "2183:2181" environment: - ZOO_SERVER_ID=3 - ZOO_SERVERS=zookeeper1:2888:3888;zookeeper2:2888:3888;zookeeper3:2888:3888 depends_on: - zookeeper1 kafka1: image: bitnami/kafka:3.4 container_name: kafka1 ports: - "9092:9092" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 - KAFKA_BROKER_ID=1 depends_on: - zookeeper1 - zookeeper2 - zookeeper3 kafka2: image: bitnami/kafka:3.4 container_name: kafka2 ports: - "9093:9093" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT - KAFKA_CFG_LISTENERS=PLAINTEXT://:9093 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9093 - KAFKA_BROKER_ID=2 depends_on: - zookeeper1 kafka3: image: bitnami/kafka:3.4 container_name: kafka3 ports: - "9094:9094" environment: - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT - KAFKA_CFG_LISTENERS=PLAINTEXT://:9094 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9094 - KAFKA_BROKER_ID=3 depends_on: - zookeeper1 ``` #### 3. 启动集群 ```bash cd ~/docker-compose/kafka-cluster docker-compose up -d ``` 等待所有容器状态变为`healthy`(约2-5分钟)[^1][^3]。 #### 4. 验证部署 ```bash # 检查Zookeeper集群状态 docker exec zookeeper1 zkServer.sh status # 测试Kafka生产者 docker exec -it kafka1 bash kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic # 另开终端测试消费者 docker exec -it kafka2 bash kafka-console-consumer.sh --bootstrap-server localhost:9093 --topic test-topic ``` ### 关键配置说明 1. **Zookeeper集群**:通过`ZOO_SERVERS`参数实现节点间通信,使用2888端口同步数据,3888端口选举 2. **Kafka跨节点通信**:`advertised.listeners`需配置宿主机的可访问地址 3. **数据持久化**:通过volume挂载实现数据持久化存储[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔向理想的星辰大海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值