Скользящее обновление за HAProxy
Я использую инфраструктурную платформу, состоящую из док-контейнеров, работающих на хосте CentOS.
- Масштабирование нескольких контейнеров через docker compose.
- Консул по открытию сервиса.
- Регистратор службы регистрации
- HAProxy как балансировщик нагрузки
- Consul-шаблон для генерации конфигурации haproxy при каждом добавлении / удалении контейнера.
Каждый раз, когда мы обновляем нашу сборку, создаются новые контейнеры и удаляются старые контейнеры. Проблема в том, что контейнеры удаляются мгновенно, без учета существующих запросов, обслуживаемых контейнерами. В идеале у меня должен быть сигнал пометить контейнеры в режиме обслуживания или слива, чтобы можно было обслужить существующие соединения, а затем изящно удалить их из haproxy, а затем физически.
Кто-нибудь сталкивался с этой проблемой раньше или делал аналогичный процесс автоматического масштабирования через контейнеры.
1 ответ
Из моего понимания того, что вы спрашиваете, вы контролируете все этапы этого процесса и хотите открыть новые версии контейнерных приложений, которые работают за HAProxy, не прерывая клиентские подключения к старым приложениям, но предотвращая новые подключения.
Это похоже на хорошее использование команды сервера HAProxy disable.
Вы должны быть в состоянии отключить ваши устаревшие серверы, пометив их как отключенные для обслуживания в HAProxy, что должно изящно позволить клиентам завершить свою работу, тогда ваш консул / магия HAProxy сможет вывести новые серверы в оперативный режим.