docker安装kafka集群 - 副本

发布时间 2023-07-07 00:51:34作者: 张Blog
## 搭建docker基本环境 搭建docker环境非本处详细讲解, 了解或查阅资料即可 ## 拉取镜像(zookeeper以及kafka的) ```bash docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka ``` ## 启动启动zookeeper容器 ```text docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper ``` - `docker run`: 运行一个新的容器。 - `-d`: 指定容器在后台以守护进程模式运行。 - `--name zookeeper`: 为容器指定一个名称,即 "zookeeper"。 - `-p 2181:2181`: 将容器的 2181 端口映射到宿主机的 2181 端口。格式为 `<宿主机端口>:<容器端口>`。 - `-t`: 分配一个伪终端(pseudo-TTY)。 - `wurstmeister/zookeeper`: 使用 wurstmeister/zookeeper 镜像创建容器。 ## 启动启动kafka容器 > 宿主机ip需要以实际为准, 不能使用localhost的原因为: docker各个容器的网络是相互通的, 所以需要将docker内部的接口映射到宿主机上, 然后实现各个容器之间的相互访问 ```bash docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=<宿主机ip>:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<宿主机ip>:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka docker run -d --name kafka1 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=<宿主机ip>:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<宿主机ip>:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka docker run -d --name kafka2 -p 9094:9094 -e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=<宿主机ip>:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<宿主机ip>:9094 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka ``` - `docker run`: 运行一个新的容器。 - `-d`: 指定容器在后台以守护进程模式运行。 - `--name kafka`: 为容器指定一个名称,即 "kafka"。 - `-p 9092:9092`: 将容器的 9092 端口映射到宿主机的 9092 端口。格式为 `<宿主机端口>:<容器端口>`。 - `-e KAFKA_BROKER_ID=0`: 设置 Kafka Broker 的唯一标识符为 0。 - `-e KAFKA_ZOOKEEPER_CONNECT=<宿主机ip>:2181`: 指定与 ZooKeeper 的连接地址,其中 `<宿主机ip>` 需要替换为实际的宿主机 IP 地址。 - `-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<宿主机ip>`: 设置 Kafka 的广告监听器地址,用于外部访问,其中 `<宿主机ip>` 需要替换为实际的宿主机 IP 地址。 - `-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092`: 设置 Kafka 的监听器地址,允许从任意地址访问 Kafka,监听 9092 端口。 - `-t`: 分配一个伪终端(pseudo-TTY)。 - `wurstmeister/kafka`: 使用 wurstmeister/kafka 镜像创建容器。 ## 创建和查看 topic ,ip改为宿主机器的IP地址 > 创建Replication为2,Partition为2的topic(容器目录opt/kafka_2.11-2.0.0/中执行) ```text bin/kafka-topics.sh --create --zookeeper <宿主机ip>:2181 --replication-factor 2 --partitions 2 --topic <主题名称> ``` > 查看topic的状态(容器目录opt/kafka_2.11-2.0.0/中执行)Isr代表存活的备份机器中存活的。 ```text bin/kafka-topics.sh --describe --zookeeper <宿主机ip>:2181 --topic <主题名称> ``` > 查看所有的 topic 名字 ```text bin/kafka-topics.sh --bootstrap-server <宿主机ip>:9092 --list ``` ## 发送测试 192.168.0.89:9092宿主机ip test_topic主题 > 启动消息发送方(容器目录opt/kafka_2.11-2.0.0/中执行) ```text ./bin/kafka-console-producer.sh --broker-list 192.168.0.89:9092 --topic test_topic ``` ![image-20230703231121048](https://img2023.cnblogs.com/blog/2395785/202307/2395785-20230707004813697-1340988374.png) > 启动消息接收方(容器目录opt/kafka_2.11-2.0.0/中执行) ```text ./bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.89:9092:9092 --topic test_topic --from-beginning ``` ![image-20230703231054565](https://img2023.cnblogs.com/blog/2395785/202307/2395785-20230707004814467-652182519.png)