2016-10-28 4 views
1

У меня есть проблема с использованием режима докеры.высокая доступность с режимом роуминга докеров

Я хочу иметь высокую доступность с режимом рой. Думаю, я могу сделать это с обновлением роя.

Что-то вроде этого ...

docker service update --env-add test=test --update-parallelism 1 --update-delay 10s 6bwm30rfabq4 

Однако есть проблема. У моего изображения докеров есть точка входа. Из-за этого есть небольшая задержка до того, как сервис (я имею в виду контейнер докеров) действительно поднялся. Но служба докеров просто думает, что служба уже запущена, потому что статус контейнера - «Вверх». Даже служба по-прежнему работает над точкой входа. Поэтому некоторая ошибка возврата контейнера при попытке подключения службы.

Например, если я создаю службу докеров с именем «test» и масштабируюся до 4 с портом 8080. Я могу получить доступ к тесту: 8080 в веб-браузере. И я пытаюсь выполнить обновление с --update-parallelism 1 --update-delay 10s. После этого я снова пытаюсь подключить службу. Одна ошибка возврата контейнера. Поскольку служба Docker считает, что контейнер уже запущен, даже контейнер по-прежнему не работает из-за точки входа. А после 10 секунд другая ошибка возврата контейнера .. потому что обновление запущено, а служба докеров также считает, что контейнер уже вставлен.

Итак .. Есть ли какие-либо решения для решения этой проблемы? Должен ли я сделать некоторые настройки nginx для отключения соединения с контейнером ошибок и повторного подключения другого?

+0

Вы пытались увеличить значение '--update-delay' до большего значения? –

ответ

1

HEALTHCHECK Команда Dockerfile работает для этого прецедента. Вы указываете, как Docker должен проверить, доступен ли контейнер, и он используется во время обновлений, а также проверяет уровни обслуживания в Swarm.

Здесь есть хорошая статья: Reducing Deploy Risk With Docker’s New Health Check Instruction.

+0

Это именно то, что я ищу! –

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