Как сохранить IP-адреса в докеризованном кластере Consul на одном узле после перезапуска

Я новичок в Docker и Consul и сейчас пытаюсь настроить локальный кластер Consul, состоящий из 3 докеризированных узлов. Я использую образ progrium/consul Docker и прошел весь туториал и описанные примеры.
Кластер работает нормально, пока не доходит до перезапуска/перезагрузки.

Вот мой docker-compose.yml:

--- node1: command: "-server -bootstrap-expect 3 -ui-dir /ui -advertise 10.67.203.217" image: progrium/consul ports: - "10.67.203.217:8300:8300" - "10.67.203.217:8400:8400" - "10.67.203.217:8500:8500" - "10.67.203.217:8301:8301" - "10.67.203.217:8302:8302" - "10.67.203.217:8301:8301/udp" - "10.67.203.217:8302:8302/udp" - "172.17.42.1:53:53/udp" restart: always node2: command: "-server -join 10.67.203.217" image: progrium/consul restart: always node3: command: "-server -join 10.67.203.217" image: progrium/consul restart: always registrator: command: "consul://10.67.203.217:8500" image: "progrium/registrator:latest" restart: always

Я получаю сообщение типа:

[ERR] raft: Failed to make RequestVote RPC to 172.17.0.103:8300: dial tcp 172.17.0.103:8300: no route to host

что, очевидно, связано с новым IP-адресом, который мои узлы 2 и 3 получают после перезапуска. Так можно ли это предотвратить? Прочтите о связывании и переменных среды, но кажется, что эти переменные также не обновляются после перезагрузки.


person ummecasino    schedule 07.05.2015    source источник


Ответы (1)


У меня была такая же проблема, пока я не прочитал, что существует проблема кэширования таблицы ARP при перезапуске контейнерного узла консула.

Насколько я знаю, есть 2 обходных пути:

  1. Запустите свой контейнер, используя --net=host
  2. Очистите таблицу ARP перед перезапуском контейнера: docker run --net=host --privived --rm cap10morgan/conntrack -F

Владелец (Джефф Линдсей) сказал мне, что они переделывают весь контейнер с этим встроенным исправлением, к сожалению, без сроков.

Источник: https://github.com/progrium/docker-consul/issues/26

person Florent Valdelievre    schedule 08.05.2015