2014-12-03 3 views
1

Я бы хотел использовать fig с kafka для управления кластером kafka.Fig kafka hostPort mapping

Я начинаю с 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-topics.sh --create --zookeeper 192.168.59.103:49157 --repli катион-фактор 2 --partitions 1 --topic тест

Следующая:

$ ./kafka-topics.sh --describe --zookeeper 192.168.59.103:49157 --topic test2 тема: test2 PartitionCount: 1 ReplicationFactor: 2 Configs: тема: test2 Раздел: 0 Лидер: 49158 Реплики: 49159,49158 Isr: 49159,49158

Теперь мои figKakfa_2 падает по каким-то причинам (он работает на 49159 порту).

Как я могу перезапустить этот контейнер с тем же портом?

Если я снова запустил команду масштаба, я получаю новый контейнер, но отображается на другом hostPort, и zookeeper не получает его как старый экземпляр.

Спасибо.

ответ

0

Если вы используете net: host в своем fig.yml, все ваши контейнеры-докеры будут использовать сетевой стек хоста, не нужно выставлять порты. Это означает, что они не будут меняться при перезапуске или масштабировании вниз. Вам нужно выяснить, как заставить экземпляры kafka использовать уникальные порты.

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

+0

С сетью: «мост» (значение по умолчанию) работает. С сетью: «host» => Восстанавливать figKafka_kafka_1 ... Не удается запустить контейнер 26b3c9472f027cde8ca8a01fc4d3fde03fb3e6543696dae3421a438ed0ae6ee0: (статус выхода 2) – Kiva

+0

Хорошо Я нашел это https://github.com/docker/docker/issues/5835 net: host option doesn ' t работать со ссылкой :( – Kiva

0

Самое простое решение не выставлять порты на хосте, но получить доступ к Kafkas на IP своего контейнера (например, 172.17.0.3 или что-то подобное) на порту 9092. Вы можете осмотреть контейнеры IP по $ docker inspect --format "{{json .NetworkSettings.Networks}}" <container id/name>.

Смежные вопросы