Порт повторного использования Docker в цикле проверки работоспособности TCP Consul

Примеры:

Момент 1: Docker запускает контейнер A, который прослушивает 32781 (экспортный порт) -> 8000 (сервисный порт). Проверка работоспособности Consul выполняется через TCP-соединение (цикл 10 с).

момент 2: Docker перезапускает контейнер A и запускает контейнер B в момент закрытия (менее 10 с). Теперь порт 32781 — это контейнер B (порт повторного использования), новый контейнер A получил другой порт.

Но следующий цикл проверки здоровья консула, порт 32781 в порядке, и консул принимает контейнер А в порядке.

Как решить проблему?


person eaglewu    schedule 21.03.2017    source источник


Ответы (1)


Мне кажется, вам нужно отменить регистрацию службы и проверить ее работоспособность при перезапуске контейнера. Consul API предоставляет такую ​​возможность, вам остается только использовать ее в своих микросервисах. Как именно заставить это работать, зависит от того, как построены ваши сервисы. В противном случае Консул никак не определит, что какой-то сервис был перезапущен с другим портом.

person Stanislav    schedule 21.03.2017