CentOS上使用Docker安装Kafka

1,926 阅读2分钟

1.安装zookeeper

zookeeper是一个开源的分布式应用程序协调服务,主要为了解决分布式架构下的数据一致性问题。

对于Kafka来说,zookeeper存储了集群中所有的主题、配置、副本等元数据信息,因此在安装Kafka之前,需要先安装zookeeper。

(当然,新版本的kafka已经不再需要依赖zookeeper了,可以依靠自身的特定topic来存储元数据信息)

执行docker pull wurstmeister/zookeeper命令拉取镜像 image.png

执行如下命令,运行zookeeper

docker run -d --restart=always \
--log-opt max-size=100m --log-opt max-file=2 \
--name zookeeper \
-p 2181:2181 \
-v /etc/localtime:/etc/localtime \
wurstmeister/zookeeper

其中,-d表示后台执行,--restart=always表示总是开机启动,--log-opt为日志配置项,--name设置了容器名称,-p表示将容器和宿主机的端口进行映射,-v表示挂载卷,这里用来将虚拟机的时间同步到容器中

image.png

2.安装kafka

执行docker pull wurstmeister/kafka命令拉取镜像 image.png

执行如下命令,运行zookeeper

docker run -d --restart=always \
--log-opt max-size=100m --log-opt max-file=2 \
--name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.31.153:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.31.153:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-v /etc/localtime:/etc/localtime \
wurstmeister/kafka

其中,-e为设置环境变量,KAFKA_BROKER_ID设置Broker的ID,KAFKA_ZOOKEEPER_CONNECT设置zookeeper的地址,KAFKA_ADVERTISED_LISTENERS设置kafka发布到zookeeper供客户端使用的服务地址,KAFKA_LISTENERS设置kafka的监听地址,是真正建立连接的地址。这两个Listener配置项的关系可以参考这篇博客

image.png

到这里,zookeeper和kafka都启动起来了。 image.png

3.测试

执行docker exec -it kafka /bin/bash进入 kafka 容器,并进入/opt/kafka_2.13-2.8.1/bin目录下 image.png

创建一个新Topic:

./kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test-kafka --partitions 3 --replication-factor 1

image.png

查看Topic:

./kafka-topics.sh --list --bootstrap-server localhost:9092
./kafka-topics.sh --describe --topic test-kafka --bootstrap-server localhost:9092

image.png

生产消息:

./kafka-console-producer.sh --topic test-kafka --bootstrap-server localhost:9092

消费消息:(重开一个窗口执行)

./kafka-console-consumer.sh --topic test-kafka --bootstrap-server localhost:9092 --from-beginning

在生产者这边生产消息: image.png

在消费者这边消费消息: image.png