Вывод узлов из балансировщика и повторное включение
Безопасно исключайте узлы и возвращайте их обратно
«Вывод узлов из балансировщика и повторное включение» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Обновление рабочего трафика рискованно
Если обновлять сервер, пока пользователи обращаются к нему, запросы завершаются ошибками. Решение — сначала вывести узел из балансировщика нагрузки. 🚦
Что означает вывод из трафика
Вывести узел из трафика — значит перестать отправлять ему новые запросы и позволить завершиться уже выполняющимся. После этого его безопасно обновлять.
Цикл вывода, обновления и возврата
Безопасный шаблон состоит из трёх шагов: вывести узел из трафика, развернуть изменение, а затем снова включить его в балансировщике нагрузки.
Отключение узла в HAProxy
Модуль community.general.haproxy переводит узел бэкенда в отключённое состояние, сообщая HAProxy, что трафик на него направлять не следует.
- name: Drain web node
community.general.haproxy:
state: disabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sockЗапуск задачи LB на LB
Сокет HAProxy находится на балансировщике нагрузки, поэтому используйте delegate_to для узла LB, продолжая при этом указывать веб-узел, который выводится из трафика.
delegate_to: lb01Ожидание завершения соединений
Дайте активным запросам завершиться. Используйте wait_for или небольшую паузу, чтобы не прервать работу пользователей посреди запроса.
- name: Let traffic drain
ansible.builtin.wait_for:
timeout: 30
delegate_to: localhostБезопасное развёртывание
После вывода узла из ротации выполните задачи обновления: установите пакеты, отправьте конфигурацию и перезапустите приложение. Рабочий трафик не затрагивается. 🔧
Повторное включение узла
После обновления переведите узел обратно в состояние enabled, чтобы HAProxy снова направлял трафик на только что обновлённый сервер.
- name: Re-enable web node
community.general.haproxy:
state: enabled
host: "{{ inventory_hostname }}"
socket: /var/run/haproxy.sock
delegate_to: lb01Проверка состояния перед включением
Перед возвратом узла убедитесь, что приложение действительно запущено. Проверка wait_for или uri для конечной точки состояния не позволит обслуживать неисправным узлом.
- ansible.builtin.uri:
url: http://localhost:8080/health
status_code: 200
retries: 5
delay: 3Обрабатывайте по одному узлу
Объедините этот цикл с serial, чтобы одновременно выводить из трафика только один или два узла. Остальные продолжат обслуживать запросы, обеспечивая отсутствие простоя.
- hosts: web
serial: 1Всегда включайте узел обратно даже при ошибке
Оберните развёртывание в block с always, чтобы после неудачного обновления узел всё равно вернулся в ротацию, а не остался выключенным.
Быстрая проверка
Проверим безопасный шаблон развёртывания.
Итоги
Для отсутствия простоя выведите узел из трафика, выполните развёртывание, проверьте состояние и снова включите его — по одному узлу за раз, с serial и блоком always. ✅
Часто задаваемые вопросы
Урок «Вывод узлов из балансировщика и повторное включение» бесплатный?
Да — полный текст урока «Вывод узлов из балансировщика и повторное включение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Вывод узлов из балансировщика и повторное включение»?
Безопасно исключайте узлы и возвращайте их обратно Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Вывод узлов из балансировщика и повторное включение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Автоматизация сетевых устройств с cli_command
- delegate_to и run_once для оркестрации
- Координация уровней веб-сервера, приложения и DB
- Вывод узлов из балансировщика и повторное включение