Docker обслуживает сеть маршрутизации до фактического запуска задачи - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время я работаю Docker версии 18.03.1-ce, сборка 9ee9f40 на нескольких узлах.Моя установка - это служба nginx и несколько java restful API-сервисов, работающих в кластере wildfly.Для моих сервисов API я настроил простую проверку работоспособности, чтобы определить, действительно ли моя задача API выполнена:

HEALTHCHECK --interval=5m --timeout=3s \
  --retries=2 --start-period=1m  \
  CMD curl -f http://localhost:8080/api/healthcheck || exit 1

Но даже с использованием HealthCheck мой nginx иногда получает и выдает ошибку -вызвано тем, что API все еще не полностью - не может обслуживать запросы на отдых.

Единственное решение, которое мне удалось получить до сих пор, - это увеличение - начального периода вручную на гораздо более длительные периоды.

Как работает докер?служба балансировщик нагрузки решает, когда начинать маршрутизацию запросов к новой службе?

Является ли установка более высокого времени с помощью - начальный период в настоящее время единственным способом предотвратить перенаправление балансировщиком нагрузки трафика на задачу, которая не готова к трафику, или я что-то упустил?

Я видел «сине-зеленые» ответы о развертывании, такие как это , где вы можете управлять нулевым временем простоя, но я все еще надеюсь, что это можно сделать с помощью служб докеров.

1 Ответ

0 голосов
/ 13 июня 2018

Сетка маршрутизации начнет маршрутизацию трафика при «первой успешной проверке работоспособности», даже если в будущем произойдет сбой.

Независимо от того, что вы указали в команде HEALTHCHECK, необходимо только начать возвращать «выход 0», когда вседействительно готов.Если он возвращает хороший результат слишком рано, то это не хорошая команда проверки здоровья.

--start-period только сообщает рое, когда нужно убить задачу, если она еще не прошла успешную проверку здоровья, но она выигралане приводить к игнорированию зеленых проверок здоровья в течение начального периода.

...