使用docker安装kafka

这篇博客详细介绍了如何使用Docker安装和配置Kafka,包括启动Zookeeper容器、设置Kafka容器参数、测试Kafka、搭建集群、创建Replication为2,Partition为2的topic以及查看topic状态。关键步骤包括将容器内的IP设置为宿主机IP以确保可访问性,并通过调整brokerId和端口实现集群搭建。

参考:https://blog.youkuaiyun.com/snowcity1231/article/details/54946857

1. 启动zookeeper容器

docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

2. 启动kafka容器

docker run  -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \ 
-e KAFKA_ZOOKEEPER_CONNECT=192.168.204.128:2181 \ 
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.204.128:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka 

这里面主要设置了4个参数

KAFKA_BROKER_ID=0               
KAFKA_ZOOKEEPER_CONNECT=192.168.204.128:2181
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.204.128:9092
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092

中间两个参数的192.168.204.128改为宿主机器的IP地址,如果不这么设置,可能会导致在别的机器上访问不到kafka。

3. 测试kafka

进入kafka容器的命令行

docker exec -ti kafka /bin/bash

进入kafka所在目录

cd opt/kafka_2.12-1.1.0/

后面不再赘述,可参考前一篇文章https://blog.youkuaiyun.com/lblblblblzdx/article/details/80548157

4. 集群搭建

使用docker命令可快速在同一台机器搭建多个kafka,只需要改变brokerId和端口

docker run -d --name kafka1 \
-p 9093:9093 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.204.128:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.204.128:9093 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka

5. 创建Replication为2,Partition为2的topic

在kafka容器中的opt/kafka_2.12-1.1.0/目录下输入

bin/kafka-topics.sh --create --zookeeper 192.168.204.128:2181 --replication-factor 2 --partitions 2 --topic partopic

6. 查看topic的状态

在kafka容器中的opt/kafka_2.12-1.1.0/目录下输入

bin/kafka-topics.sh --describe --zookeeper 192.168.204.128:2181 --topic partopic

输出结果:

Topic:partopic  PartitionCount:2    ReplicationFactor:2 Configs:
    Topic: partopic Partition: 0    Leader: 0   Replicas: 0,1   Isr: 0,1
    Topic: partopic Partition: 1    Leader: 0   Replicas: 1,0   Isr: 0,1

显示每个分区的Leader机器为broker0,在broker0和1上具有备份,Isr代表存活的备份机器中存活的。
当停掉kafka1后,

docker stop kafka1

再查看topic状态,输出结果:

Topic:partopic  PartitionCount:2    ReplicationFactor:2 Configs:
    Topic: partopic Partition: 0    Leader: 0   Replicas: 0,1   Isr: 0
    Topic: partopic Partition: 1    Leader: 0   Replicas: 1,0   Isr: 0
使用Docker安装Kafka单机版可以通过不同方式实现,以下为详细步骤: ### 使用docker run命令 - **拉取Kafka镜像**:执行`docker pull wurstmeister/kafka`命令拉取Kafka镜像[^3]。 - **运行Kafka容器**:使用以下命令运行Kafka容器: ```bash docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=117.72.44.9 --env KAFKA_ADVERTISED_PORT=9092 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka ``` 此命令中需要注意的是,`KAFKA_ZOOKEEPER_CONNECT`指定了Zookeeper的地址和端口,`KAFKA_ADVERTISED_HOST_NAME`和`KAFKA_ADVERTISED_PORT`用于Kafka向外部暴露的地址和端口。且这里假设已经有一个名为`zookeeper`的Zookeeper容器在运行,若没有,需要先启动Zookeeper容器[^3]。 ### 使用Docker Compose - **创建docker-compose.yml文件**:可以根据需求自定义配置,示例如下: ```yaml version: '3' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181" kafka: image: wurstmeister/kafka ports: - "9092:9092" environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_HOST_NAME: localhost KAFKA_ADVERTISED_PORT: 9092 volumes: - /var/run/docker.sock:/var/run/docker.sock ``` - **启动服务**:在包含`docker-compose.yml`文件的目录下执行`docker-compose up -d`命令,即可启动Kafka和Zookeeper服务。这种方式可以更方便地管理多个容器,同时也便于实现持久化,为学习和实践Kafka提供了一个简单方便的环境[^1]。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值