在阿里云上使用 docker 部署 kafka

4,831 total views, 3 views today

Kafka 依赖 Zookeeper,因为 kafka 通过 zookeeper 来管理节点的服务器,脱离了 Zookeeper 无法运行,所以安装 Kafka 必须先安装 Zookeeper。

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=内网 ip:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://公网 ip:9092 \ #这里如果是部署在阿里云的,又需要在开发机访问,必须输入公网 IP
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka


其中-e 是配置环境变量的,高亮的配置中,KAFKA_ZOOKEEPER_CONNECT 是 zookeeper 的地址,可以是内网,只要 kafka 能连上,KAFKA_ADVERTISED_LISTENERS,表示 kafka 注册到 zookeeper 时,将告诉 zookeeper 自己的地址为 XXXX,当消费者向 zookeeper 询问 kafka 的地址时,将会返回该地址,消费者会直接指向该地址消费。如果 kafka 部署在阿里云,又需要开发机能访问到它,则 KAFKA_ADVERTISED_LISTENERS 必须使用公网地址,借助 portainer 工具,我们可以更直观的看到 kafka 的环境变量。


其实很多时候,我们需要同时内外网都能访问到 Kafka,这就需要一些其他的操作,必须修改 hosts 文件之类的。可以参考网上的文章 《kafka 中的 内网和公网 IP 配置》。

需要提一下,默认的安装完毕后,kafka_home 这个文件夹并没有映射到宿主机的数据盘上,这个 kafka_home 中有配置文件,如果我们修改了配置文件,可以在宿主机上保存下来。我们可以通过 portainer 这个工具,或者使用命令的方式创建一个数据盘,来映射 kafka_home。
portainer 中设置的数据卷。

portainer中,创建一个数据卷
portainer 中,创建一个数据卷
最后,借助 kafka 工具,测试是否可以连接成功。

原创文章,转载请注明出处!http://www.javathings.top/在阿里云上使用docker部署kafka/

About: wusq


发表评论

邮箱地址不会被公开。 必填项已用*标注