赞
踩
参考文章:传送门
背景:方便玩kafka,使用docker安装也方便
1、docker下载zookeeper和kafka
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka
2、docker 运行一个zookper容器
docker run -d --name zookeeper_kafka_single -p 2181:2181 -t wurstmeister/zookeeper
参数解释
-d:以后台模式运行容器。
--name:为容器指定一个名称,这里是 zookeeper_kafka_single。
-p 2181:2181:将容器内部的 2181 端口映射到主机的 2181 端口,以便外部可以访问。
-t:分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,以便可以在容器中交互式地执行命令。
wurstmeister/zookeeper:要运行的镜像名称。
3、docker 运行kafka
ip地址通过ifconfig 查找更换(这里的ip是找宿主机的ip,以mac为例)
# 查看mac ip
ifconfig eth0
# mac 精准查找ip
ifconfig en0 | grep inet| awk '{print $2}'
#运行kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.124.8:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.8:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
参数解释
-d:以后台模式运行容器。
--name:为容器指定一个名称,这里是 kafka。
-p 9092:9092:将容器内部的 9092 端口映射到主机的 9092 端口,以便外部可以访问 Kafka。
-e KAFKA_BROKER_ID=0:设置 Kafka broker 的 ID,这里设置为 0。
-e KAFKA_ZOOKEEPER_CONNECT=192.168.124.8:2181:指定 ZooKeeper 的连接地址和端口号,这里连接到 IP 地址为 192.168.124.8 的 ZooKeeper 容器,端口号为 2181。
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.124.8:9092:指定 Kafka 的广告监听器地址,这里设置为 PLAINTEXT://192.168.124.8:9092,表示 Kafka 的客户端将使用此地址来连接 Kafka 集群。
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092:指定 Kafka 监听器地址,这里设置为 PLAINTEXT://0.0.0.0:9092,表示 Kafka 监听所有可用的网络接口,以便接受来自任何 IP 地址的连接请求。
wurstmeister/kafka:要运行的镜像名称。
进入kafka容器
docker exec -it kafka /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
主题创建
./kafka-topics.sh --zookeeper 192.168.124.8:2181 --topic message --create --replication-factor 1 --partitions 1
开一个窗口运行生产者
./kafka-console-producer.sh --broker-list 192.168.124.8:9092 --topic message
开一个窗口运行消费者
./kafka-console-consumer.sh --bootstrap-server 192.168.124.8:9092 --topic message --from-beginning
然后就可以愉快的生产和消费了。
即宿主机ip全部用 host.docker.internal
替换 这个可以访问宿主机的ip,这样我的mac每次更换ip也不用重新搞了,很方便!!!
# 运行 kafka-1 容器
docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
# 创建一个主题
./kafka-topics.sh --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1
# 生产消息
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
# 消费消息
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning
1、创建kafka-1、kafka-2 两个容器
注意不同之处:端口不一样!!!、KAFKA_BROKER_ID不一样!!!、
docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker run -d --name kafka-2 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
2、进入到容器中
docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
3、生产一个topic
./kafka-topics.sh --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1
4、生产者生产、消费者消费
# 9092端口 生产和消费
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning
# 9093端口 生产和消费
./kafka-console-producer.sh --broker-list host.docker.internal:9093 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9093 --topic message --from-beginning
5、命令和在一起
docker run -d --name kafka-1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
./kafka-topics.sh --zookeeper host.docker.internal:2181 --topic message --create --replication-factor 1 --partitions 1
./kafka-console-producer.sh --broker-list host.docker.internal:9092 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9092 --topic message --from-beginning
docker run -d --name kafka-2 -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=host.docker.internal:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
docker exec -it kafka-2 /bin/bash
cd /opt/kafka_2.13-2.8.1/bin
./kafka-console-producer.sh --broker-list host.docker.internal:9093 --topic message
./kafka-console-consumer.sh --bootstrap-server host.docker.internal:9093 --topic message --from-beginning
6、其他命令
# 查看都有哪些 topic
./kafka-topics.sh --zookeeper host.docker.internal:2181 --list
可以愉快的玩集群了~
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。