图kafka hostPort映射

时间:2014-12-03 16:21:52

标签: docker apache-kafka fig

我想使用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不会将它作为旧实例。

感谢。

2 个答案:

答案 0 :(得分:0)

如果在fig.yml中使用net: host,则所有docker容器都将使用主机的网络堆栈,无需公开端口。这意味着他们在重启或缩小时不会改变。您需要弄清楚如何让您的kafka实例使用唯一的端口。

http://www.fig.sh/yml.html

答案 1 :(得分:0)

最简单的解决方案不是在主机上公开端口,而是在端口9092上访问其容器的IP上的kafkas(如172.17.0.3或类似的东西)。您可以通过{{检查容器IP 1}}。