Скользящее обновление за HAProxy

Я использую инфраструктурную платформу, состоящую из док-контейнеров, работающих на хосте CentOS.

  • Масштабирование нескольких контейнеров через docker compose.
  • Консул по открытию сервиса.
  • Регистратор службы регистрации
  • HAProxy как балансировщик нагрузки
  • Consul-шаблон для генерации конфигурации haproxy при каждом добавлении / удалении контейнера.

Каждый раз, когда мы обновляем нашу сборку, создаются новые контейнеры и удаляются старые контейнеры. Проблема в том, что контейнеры удаляются мгновенно, без учета существующих запросов, обслуживаемых контейнерами. В идеале у меня должен быть сигнал пометить контейнеры в режиме обслуживания или слива, чтобы можно было обслужить существующие соединения, а затем изящно удалить их из haproxy, а затем физически.

Кто-нибудь сталкивался с этой проблемой раньше или делал аналогичный процесс автоматического масштабирования через контейнеры.

1 ответ

Решение

Из моего понимания того, что вы спрашиваете, вы контролируете все этапы этого процесса и хотите открыть новые версии контейнерных приложений, которые работают за HAProxy, не прерывая клиентские подключения к старым приложениям, но предотвращая новые подключения.

Это похоже на хорошее использование команды сервера HAProxy disable.

Вы должны быть в состоянии отключить ваши устаревшие серверы, пометив их как отключенные для обслуживания в HAProxy, что должно изящно позволить клиентам завершить свою работу, тогда ваш консул / магия HAProxy сможет вывести новые серверы в оперативный режим.

Другие вопросы по тегам