Docker Swarm: трафик в назначенном состоянии - PullRequest
0 голосов
/ 05 июня 2019

Когда я масштабирую сервис с 1 узла (Узел A) до 2 узлов (Узел A и Узел B), я вижу, что трафик немедленно направляется на оба узла (включая новый Узел B, даже если он не готов).

В результате прокси-сервер Nginx будет возвращать 502 с половину времени (пока не будет готов узел B).

Есть предложения, как можно задержать этот трафик?

Примечание: это не ожидает появления другого контейнера, как указано здесь: Docker Compose ожидает контейнера X перед запуском Y Речь идет о задержке сетевого подключения до тех пор, пока контейнер не будет готов.

1 Ответ

0 голосов
/ 05 июня 2019

Если вы не настроите раздел healthcheck , докер будет считать, что контейнер доступен, как только он будет запущен.

Обратите внимание, что начальная проверка работоспособности выполняется только после набора interval.

Таким образом, вы можете добавить что-то чрезвычайно простое, например, тестирование, если порт 80 подключаем (вам нужен nc в образе докера):

healthcheck:
  test: nc -w 1 127.0.0.1 80 < /dev/null
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 5s
...