关于 kafka 是是一个分布式流数据平台和消息队列系统
依赖于 zookeeper,部署稍微麻烦
现在写一个容器化部署 kafka 的方式
首先看 docker-compose 的配置文件
version: '3' # 指定 docker-compose 语法版本
services: # 从以下定义服务配置列表
zookeeper: #服务名,可自定义
image: wurstmeister/zookeeper # 指定使用的镜像名及标签
container_name: zookeeper # 指定实例化后的容器名
restart: always # 设置无论遇到什么错,重启容器
privileged: true #让 docker 应用容器 获取宿主机 root 权限
ports: # 容器内的映射端口,本地端口: 容器内端口
- 2181:2181 # zookeeper 对外的端口
environment: # 定义环境变量
ZOO_MY_ID: 1 # zk 服务器唯一 Id,不能和其它服务器 myid 一样
ZOO_SERVERS: server.1=zookeeper:2888:3888;2181 # zk 集群的服务器
kafka:
image: wurstmeister/kafka
container_name: kafka
restart: always
privileged: true
ports:
- 9092:9092
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
之后使用 docker-compose 命令部署
docker-compose up -d
当执行命令查看两个容器都监控时,即 kafka 启动完成
[root@VM-16-6-centos kafka]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------
kafka start-kafka.sh Up 0.0.0.0:9092->9092/tcp,:::9092->9092/tcp
zookeeper /bin/sh -c /usr/sbin/sshd ... Up 0.0.0.0:2181->2181/tcp,:::2181->2181/tcp, 22/tcp, 2888/tcp, 3888/tcp
然后登录进 kafka 的 docker 容器中
docker-compose exec kafka bash
使用命令生成一个主题
./kafka-console-producer.sh --broker-list kafka:9092 --topic test
使用命令查看 kafka 中的消息
./kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic test --from-beginning
查看已经存在的主题命令
./kafka-topics.sh --list --bootstrap-server kafka:9092
正文完