0Pricing
DevOps Bootcamp · Урок

Вывод узлов из балансировщика и повторное включение

Безопасно исключайте узлы и возвращайте их обратно

«Вывод узлов из балансировщика и повторное включение» — бесплатный урок 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 — локальная установка не требуется.

Все уроки этого курса

  1. Автоматизация сетевых устройств с cli_command
  2. delegate_to и run_once для оркестрации
  3. Координация уровней веб-сервера, приложения и DB
  4. Вывод узлов из балансировщика и повторное включение
← Назад к DevOps Bootcamp