我想使用fig与kafka来管理kafka集群。
我是fig的初学者,我遇到了hostPort映射问题。
我使用kafka-docker作为kafka图像。我的fig.yml在这里:
zookeeper:
image: jplock/zookeeper:3.4.6
ports:
- "2181"
kafka:
image: wurstmeister/kafka:0.8.1.1-1
ports:
- "9092"
links:
- zookeeper:zk
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.59.103
volumes:
- /var/run/docker.sock:/var/run/docker.sock
这是图像的例子。
现在,这是我的问题:
我运行此命令来启动集群:
fig scale kafka = 2
我创建了一个像这样的kafka主题:
./ kafka-topics.sh --create --zookeeper 192.168.59.103:49157 - 复制因子2 - 分区1 - 主题测试
下一步:
$ ./kafka-topics.sh - 描述--zookeeper 192.168.59.103:49157 --topic test2主题:test2 PartitionCount:1 ReplicationFactor:2配置:主题: test2分区:0领导者:49158复制品:49159,49158 Isr:49159,49158
现在我的figKakfa_2由于某些原因而崩溃(它运行在49159端口上)。
如何使用相同的端口重新启动此容器?
如果我再次运行scale命令,我会获得一个新容器,但是映射到另一个hostPort上,而zookeeper不会将它作为旧实例。
感谢。
答案 0 :(得分:0)
如果在fig.yml中使用net: host
,则所有docker容器都将使用主机的网络堆栈,无需公开端口。这意味着他们在重启或缩小时不会改变。您需要弄清楚如何让您的kafka实例使用唯一的端口。
答案 1 :(得分:0)
最简单的解决方案不是在主机上公开端口,而是在端口9092上访问其容器的IP上的kafkas(如172.17.0.3或类似的东西)。您可以通过{{检查容器IP 1}}。