Kafka(Go)系列(二)---通过docker-compose 安装 Kafka
本文记录了如何通过 docker-compose 快速启动 kafka,部署一套开发环境。
参考修正:https://www.lixueduan.com/post/kafka/01-install/
1. 概述
Kafka 是由 Apache 软件基金会旗下的一个开源 消息引擎系统
。
使用 docker-compose 来部署开发环境也比较方便,只需要提准备一个 yaml 文件即可。
Kafka 系列相关代码见 Github
2. docker-compose.yml
完整的 docker-compose.yaml
内容如下:
当前 Kafka 还依赖 Zookeeper,所以需要先启动一个 Zookeeper 。
|
|
为了使用内部和外部客户端都能够访问Kafka代理,你需要为每种客户端配置一个侦听器。为此,将以下环境变量添加到docker-compose中
|
|
CLIENT://kafka:9093
供内部客户端broker访问。如果外部的客户端需要访问,比如宿主机等其他的机器,我们需要关注这里EXTERNAL://localhost:9092
,并且需要把9092端口导出,供外部的客户端访问。
KAFKA_CFG_前缀表示kafka的配置,下面是几个配置的作用
- listeners:学名叫监听器,其实就是告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
- advertised.listeners:和 listeners 相比多了个 advertised。Advertised 的含义表示宣称的、公布的,就是说这组监听器是 Broker 用于对外发布的。
监听器它是若干个逗号分隔的三元组,每个三元组的格式为<协议名称,主机名,端口号>
。
这里的协议名称可能是标准的名字,比如 PLAINTEXT 表示明文传输、SSL 表示使用 SSL 或 TLS 加密传输等;也可能是你自己定义的协议名字。CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
。
一旦你自己定义了协议名称,你必须还要指定listener.security.protocol.map
参数告诉这个协议底层使用了哪种安全协议,比如上面指定CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT
为两个不同的协议,并且在listeners
和advertised.listeners
分别进行了配置,其中KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
,这个自定义协议底层使用与内部broker通信。
镜像
在 dockerhub 上 kafka 相关镜像有 wurstmeister/kafka
和 bitnami/kafka
这两个用的人比较多,大概看了下 bitnami/kafka
更新比较频繁所以就选这个了。
监控
监控的话 hlebalbau/kafka-manager
这个比较好用,其他的都太久没更新了。
不过 kafka-manager 除了监控外更偏向于集群管理,误操作的话影响比较大,如果有 prometheus + grafana 监控体系的直接用 kafka_exporter 会舒服很多。
数据卷
如果有持久化需求可以放开 yaml 文件中的 volumes
相关配置,并创建对应文件夹同时将文件夹权限调整为 777
。
因为容器内部使用 uid=1001 的用户在运行程序,容器外部其他用户创建的文件夹对 1001 来说是没有权限的。
启动
在 docker-compose.yaml
文件目录下使用以下命令即可一键启动:
|
|
3. 测试
启动后浏览器直接访问localhost:9000
即可进入 Web 监控界面。
添加cluster 保存之后,可以看到集群状态,topic信息等
参考
- 原文作者:devhg
- 原文链接:https://ihui.ink/post/kafka/01-kafka-install/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。