1

我想用 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

这是图像给出的示例。

现在,这是我的问题:

我运行这个命令来启动一个集群:

无花果比例卡夫卡=2

我创建了一个这样的kafka主题:

./kafka-topics.sh --create --zookeeper 192.168.59.103:49157 --replication-factor 2 --partitions 1 --topic test

下一个:

$ ./kafka-topics.sh --describe --zookeeper 192.168.59.103:49157 --topic test2 Topic:test2 PartitionCount:1 ReplicationFactor:2 Configs: Topic: test2 Partition: 0 Leader: 49158 Replicas: 49159,49158 Isr: 49159,49158

现在我的 figKakfa_2 由于某些原因崩溃了(它在 49159 端口上运行)。

如何使用相同的端口重新启动此容器?

如果我再次运行 scale 命令,我会得到一个新容器,但映射到另一个 hostPort 并且 zookeeper 不会将它作为旧实例。

谢谢。

4

2 回答 2

0

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

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

于 2014-12-04T16:04:11.233 回答
0

最简单的解决方案不是在主机上公开端口,而是在端口 9092 上访问容器 IP(如 172.17.0.3 或类似的东西)上的 kafkas。您可以通过$ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name>.

于 2016-02-29T08:16:02.447 回答