Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Архитектурные решения
  • Рекомендации по отказоустойчивости в Yandex Cloud
  • Развертывание веб-приложения в отказоустойчивой конфигурации в Yandex Cloud
  • Тестирование отказоустойчивости в Yandex Cloud

В этой статье:

  • Цели тестирования
  • Подготовка к тестированию
  • Среда тестирования
  • Требования к проведению тестирования
  • Инструменты тестирования
  • Методика проведения тестирования
  • Подготовка
  • Запуск тестирования
  • Оценка состояния
  • Завершение тестирования
  • Application Load Balancer
  • Заключение

Руководство по тестированию отказоустойчивости в Yandex Cloud

Статья создана
Yandex Cloud
Обновлена 18 июля 2025 г.
  • Цели тестирования
  • Подготовка к тестированию
    • Среда тестирования
    • Требования к проведению тестирования
    • Инструменты тестирования
  • Методика проведения тестирования
    • Подготовка
    • Запуск тестирования
    • Оценка состояния
    • Завершение тестирования
    • Application Load Balancer
  • Заключение

Данное руководство описывает практическую часть рекомендаций по тестированию отказоустойчивости, которые содержатся в статье Рекомендации по отказоустойчивости в Yandex Cloud. Предполагается, что принципы построения тестируемой инфраструктуры не противоречат принципам, изложенным в статье.

Цели тестированияЦели тестирования

В данном руководстве описывается методология проведения учений по отказу одной зоны доступности в облаке, которая позволит:

  • Исследовать поведение системы во время отказа.
  • Оценить способность системы переживать отключение одной зоны доступности.
  • Выявить неявные зависимости и уязвимости.
  • Собрать информацию о симптомах отказа.
  • Проверить способность системы к быстрому восстановлению.

Исследование отказа ограничено случаем полного отказа зоны доступности. Частичные отказы выходят за рамки данного руководства из-за их многообразия.

Подготовка к тестированиюПодготовка к тестированию

Среда тестированияСреда тестирования

  1. Соответствие продуктовой среде:

    Важно

    Не рекомендуется проводить тестирование сразу в рабочей (продуктовой) среде, сначала следует провести учения в тестовой среде.

    • Тестовая среда должна быть максимально приближена по конфигурации к продуктовой среде.
    • Нагрузка на тестовую среду должна имитировать нагрузку на продуктовую. Для имитации нагрузки используйте инструменты нагрузочного тестирования, например, Yandex Load Testing.
    • Для автоматизации создания тестовых сред рекомендуется применять подход Infrastructure as Code.
  2. Для оптимизации затрат при развертывании ресурсов в тестовой среде рекомендуется:

    • Использовать NRD-диски вместо SSD-IO дисков.
    • Использовать прерываемые виртуальные машины.
    • Динамически создавать ресурсы только на время тестирования.
    • Автоматически освобождать ресурсы после завершения тестов.
    • Использовать компоненты без SLA для снижения затрат.

Требования к проведению тестированияТребования к проведению тестирования

  1. Наличие системы мониторинга, которая позволит оценить результаты тестирования.
  2. Сохранение результатов тестирования для ретроспективного анализа.
  3. Тестирования должны проводиться на регулярной основе.
  4. Использовать при проведении тестирования инструмент CLI Yandex Cloud (yc) версии 0.154.0 и выше.

Инструменты тестированияИнструменты тестирования

В данном документе рассматривается тестирование отказоустойчивости с помощью инструментов отключения балансировки нагрузки в отдельной зоне доступности для Network Load Balancer или для Application Load Balancer.

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

  • В группах безопасности поддерживаются только разрешающие правила, поэтому для блокировки трафика необходимо предусмотреть отдельный набор правил, разрешающих трафик между зонами; для организации блокировки эти правила нужно будет удалить.
  • Удаление разрешающих правил из группы безопасности блокирует установку новых сетевых соединений, но не разрывает уже установленные соединения.

Методика проведения тестированияМетодика проведения тестирования

ПодготовкаПодготовка

  1. Подготовьте, если требуется, окружение к проведению тестирования.

  2. Выберите зону доступности, которая будет отключаться (из которой будет уводиться трафик). Например, ru-central1-b.

  3. Определите продолжительность теста. Отключение зоны балансировщика может быть как постоянным, так и на заданный период времени (от 1 минуты до 72 часов). Например, 30 минут.

  4. Получите список балансировщиков, которые будут принимать участие в тестировании:

    yc load-balancer nlb list
    

Запуск тестированияЗапуск тестирования

  1. Отключите доставку трафика в выбранную зону доступности для каждого балансировщика из списка. Для отключения балансировки трафика в выбранной зоне доступности используется команда disable-zones. Для отключения балансировки трафика в зоне доступности ru-central1-b от отдельного сетевого балансировщика нагрузки (NLB) на 30 минут необходимо выполнить команду:

    yc load-balancer nlb disable-zones enpmq******** --zones=ru-central1-b --duration 30m
    

    Результат выполнения команды должен быть примерно следующим (обратите внимание на блок disable_zone_statuses):

     id: enpmq********
     ...
     disable_zone_statuses:
       - zone_id: ru-central1-b
         disabled_until: "2025-07-17T15:30:18.176751322Z"
    

    Команда поддерживает одновременное отключение сразу нескольких зон доступности, которые можно перечислить через запятую.

    При повторном выполнении команды период времени на блокировку будет снова выставлен в 30 минут от текущего момента.

    Если в команде не указывать параметр --duration, то балансировка трафика в выбранных зонах доступности будет заблокирована без ограничения по времени.

    Важно

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

Оценка состоянияОценка состояния

  1. Для получения информации о состоянии блокировки ресурсов за отдельным сетевым балансировщиком нагрузки (NLB) необходимо выполнить команду:

    yc load-balancer nlb get enpmq********
    

    Результат выполнения команды должен быть примерно следующим:

     id: enpmq********
     folder_id: b1g********
     created_at: "2025-07-17T13:42:24Z"
     name: ...
     region_id: ru-central1
     status: ACTIVE
     type: EXTERNAL
     listeners:
       - name: ...
         ...
     attached_target_groups:
       - target_group_id: enpn********
         health_checks:
           - name: ...
             ...
     disable_zone_statuses:
       - zone_id: ru-central1-b
         disabled_until: "2025-07-17T15:30:18.176751322Z"
    
  2. Проконтролируйте, что трафик перестал поступать в выбранную зону. Это можно сделать в сервисе мониторинга, выведя на график суммарный трафик на интерфейсах виртуальных машин с группировкой по зонам доступности.

    На текущий момент нет возможности получить одним простым запросом к сервису мониторинга график распределения трафика по зонам. Чтобы решить эту задачу:

    1. Создайте график в сервисе мониторинга.
    2. Составьте списки id виртуальных машин для зоны ru-central1-a, например, с помощью команды
      yc compute instance list --jq '[.[] | select(.zone_id=="ru-central1-a") | .id ] | join("|")'`
      
      Результатом выполнения команды будет однострочный список id виртуальных машин, разделенных |. Пример: fhm**********uv5|fhm**********aab|fhm**********ui1|....
    3. В графике мониторинга добавьте запрос
      alias(series_sum("network_received_packets"{folderId = "b1g**********", service = "compute", resource_type = "vm", resource_id = "<Полученный на предыдущем шаге список id виртуальных машин, разделенных |>"}), "ru-central1-a")`
      
    4. Повторите шаги 2 и 3 для зон ru-central1-b и ru-central1-d.
    5. Выполните запросы.

Завершение тестированияЗавершение тестирования

  1. Выполните команду enable-zones для возврата отключенной ранее зоны доступности обратно в балансировку трафика:

    yc load-balancer nlb enable-zones enpmq******** --zones=ru-central1-b
    
  2. Проконтролируйте, что трафик начал поступать в выбранную зону.

    Важно помнить, что существует ограничение по времени для операции повторного выключения балансировки после включения обратно. Повторное отключение после обратного включения может быть выполнено не ранее чем через 2 минуты.

Application Load BalancerApplication Load Balancer

Синтаксис и семантика команд отключения и обратного включения балансировки для выбранной зоны доступности в сервисе Application Load Balancer соответствуют командам для отключения и обратного включения балансировки для выбранной зоны доступности в сервисе Network Load Balancer.

ЗаключениеЗаключение

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

Была ли статья полезна?

Предыдущая
Развертывание веб-приложения в отказоустойчивой конфигурации в Yandex Cloud
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»