Восстановление после катастрофы для глобального кластера
Содержание
OverviewПоддерживаемые сценарии катастрофыНеподдерживаемые сценарии катастрофыПримечанияОбзор процессаТребуемые ресурсыПроцедураШаг 1: Установка основного кластераШаг 2: Установка резервного кластераШаг 3: Включение синхронизации etcdПроцесс восстановления после катастрофыРегулярные проверкиЗагрузка пакетовOverview
Это решение предназначено для сценариев восстановления после катастрофы, связанных с кластером global. Кластер global служит управляющей плоскостью платформы и отвечает за управление другими кластерами. Для обеспечения непрерывной доступности платформы при сбое кластера global в рамках этого решения разворачиваются два кластера global: основной кластер (Primary Cluster) и резервный кластер (Standby Cluster).
Механизм восстановления после катастрофы основан на синхронизации данных etcd в реальном времени с основного кластера на резервный. В случае недоступности основного кластера из-за сбоя сервисы могут быстро переключиться на резервный кластер.
Поддерживаемые сценарии катастрофы
- Неисправимый системный сбой основного кластера, делающий его непригодным к работе;
- Сбой физических или виртуальных машин, на которых размещён основной кластер, приводящий к его недоступности;
- Сбой сети в месте расположения основного кластера, вызывающий прерывание сервиса;
Неподдерживаемые сценарии катастрофы
- Сбои приложений, развернутых внутри кластера
global; - Потеря данных из-за сбоев в системе хранения (вне области синхронизации etcd);
Роли Primary Cluster и Standby Cluster являются относительными: кластер, обслуживающий платформу в данный момент, считается основным (DNS указывает на него), а резервный — резервным. После переключения роли меняются местами.
Примечания
-
Это решение синхронизирует только данные etcd кластера
global; данные из registry, chartmuseum и других компонентов не включены; -
Для удобства устранения неполадок и управления рекомендуется называть узлы в стиле
standby-global-m1, чтобы указывать, к какому кластеру принадлежит узел (Primary или Standby). -
Восстановление данных приложений внутри кластера не поддерживается;
-
Для надежной синхронизации etcd требуется стабильное сетевое соединение между двумя кластерами;
-
Если кластеры основаны на гетерогенных архитектурах (например, x86 и ARM), используйте установочный пакет с поддержкой двух архитектур;
-
Следующие пространства имён исключены из синхронизации etcd. Если в этих пространствах создаются ресурсы, пользователям необходимо выполнять их резервное копирование вручную:
-
Если оба кластера настроены на использование встроенных реестров образов, контейнерные образы необходимо загружать отдельно в каждый из них;
-
Если в основном кластере развернут DevOps Eventing v3 (knative-operator) и его экземпляры, те же компоненты должны быть предварительно развернуты в резервном кластере.
Обзор процесса
- Подготовить единое доменное имя для доступа к платформе;
- Указать домен на VIP основного кластера и установить Primary Cluster;
- Временно переключить разрешение DNS на резервный VIP для установки Standby Cluster;
- Скопировать ключ шифрования ETCD основного кластера на узлы, которые впоследствии станут управляющими узлами резервного кластера;
- Установить и включить плагин синхронизации etcd;
- Проверить статус синхронизации и выполнять регулярные проверки;
- В случае сбоя переключить DNS на резервный кластер для завершения восстановления после катастрофы.
Требуемые ресурсы
-
Единое доменное имя, которое будет
Platform Access Address, а также TLS-сертификат и приватный ключ для обслуживания HTTPS на этом домене; -
Выделенный виртуальный IP-адрес для каждого кластера — один для Primary Cluster и другой для Standby Cluster;
- Предварительно настроить балансировщик нагрузки для маршрутизации TCP-трафика на порты
80,443,6443,2379и11443на управляющие узлы за соответствующим VIP.
- Предварительно настроить балансировщик нагрузки для маршрутизации TCP-трафика на порты
Процедура
Шаг 1: Установка основного кластера
При установке основного кластера среды DR,
- В первую очередь задокументируйте все параметры, установленные при следовании руководству веб-интерфейса установки. Необходимо сохранить некоторые опции неизменными при установке резервного кластера.
- ДОЛЖЕН быть предварительно настроен балансировщик нагрузки, предоставленный пользователем, для маршрутизации трафика, направленного на виртуальный IP. Опция
Self-built VIPНЕ доступна. - Поле
Platform Access AddressДОЛЖНО содержать домен, аCluster Endpoint— виртуальный IP-адрес. - Оба кластера ДОЛЖНЫ быть настроены на использование
An Existing Certificate(одинакового сертификата), при необходимости запросите легитимный сертификат. ОпцияSelf-signed CertificateНЕ доступна. - При установке
Image Repositoryв значениеPlatform DeploymentполяUsernameиPasswordНЕ должны быть пустыми; полеIP/DomainДОЛЖНО быть установлено на домен, используемый какPlatform Access Address. - Порты
HTTP PortиHTTPS PortдляPlatform Access AddressДОЛЖНЫ быть 80 и 443 соответственно. - На втором шаге установки (Step:
Advanced) полеOther Platform Access AddressesДОЛЖНО включать виртуальный IP текущего кластера.
Обратитесь к следующей документации для завершения установки:
Шаг 2: Установка резервного кластера
-
Временно укажите доменное имя на VIP резервного кластера;
-
Войдите на первый управляющий узел Primary Cluster и скопируйте конфигурацию шифрования etcd на все управляющие узлы резервного кластера:
-
Установите резервный кластер так же, как основной
При установке резервного кластера среды DR, следующие параметры ДОЛЖНЫ совпадать с параметрами основного кластера:
- Поле
Platform Access Address. - Все поля сертификата (
Certificate). - Все поля репозитория образов (
Image Repository). - Важно: убедитесь, что учётные данные репозитория образов и пользователь admin совпадают с теми, что установлены в Primary Cluster.
И ОБЯЗАТЕЛЬНО следуйте NOTES OF DR (Disaster Recovery Environment) INSTALLING из Шага 1.
Обратитесь к следующей документации для завершения установки:
Шаг 3: Включение синхронизации etcd
-
При необходимости настройте балансировщик нагрузки для перенаправления порта
2379на управляющие узлы соответствующего кластера. Поддерживается ТОЛЬКО TCP-режим; перенаправление на уровне L7 не поддерживается.INFOПеренаправление порта через балансировщик нагрузки не обязательно. Если из резервного кластера доступен прямой доступ к активному глобальному кластеру, укажите адреса etcd через Active Global Cluster ETCD Endpoints.
-
Зайдите в веб-консоль резервного глобального кластера через его VIP и переключитесь в режим Administrator;
-
Перейдите в Marketplace > Cluster Plugins, выберите кластер
global; -
Найдите etcd Synchronizer, нажмите Install, настройте параметры:
- Если порт
2379не перенаправляется через балансировщик, необходимо правильно указать Active Global Cluster ETCD Endpoints; - Используйте значение по умолчанию для Data Check Interval;
- Оставьте переключатель Print detail logs выключенным, если не требуется отладка.
- Если порт
Проверьте, что Pod синхронизации запущен на резервном кластере:
Когда появится сообщение “Start Sync update”, пересоздайте один из pod’ов, чтобы повторно инициировать синхронизацию ресурсов с зависимостями ownerReference:
Проверьте статус синхронизации:
Объяснение вывода:
LOCAL ETCD missed keys: ключи, которые есть в основном кластере, но отсутствуют в резервном. Часто вызвано сборщиком мусора из-за порядка ресурсов при синхронизации. Перезапустите один pod etcd-sync для исправления;LOCAL ETCD surplus keys: лишние ключи, присутствующие только в резервном кластере. Перед удалением этих ключей из резервного кластера согласуйте с командой эксплуатации.
Если установлены следующие компоненты, перезапустите их сервисы:
-
Log Storage для Elasticsearch:
-
Monitoring для VictoriaMetrics:
Процесс восстановления после катастрофы
-
При необходимости перезапустите Elasticsearch на резервном кластере:
-
Проверьте согласованность данных в резервном кластере (та же проверка, что и в Шаге 3);
-
Удалите плагин синхронизации etcd;
-
Уберите перенаправление порта
2379с обоих VIP; -
Переключите DNS домена платформы на резервный VIP, который теперь становится основным кластером;
-
Проверьте разрешение DNS:
-
Очистите кэш браузера и зайдите на страницу платформы, чтобы убедиться, что отображается бывший резервный кластер;
-
Перезапустите следующие сервисы (если установлены):
-
Log Storage для Elasticsearch:
-
Monitoring для VictoriaMetrics:
-
cluster-transformer:
-
-
Если рабочие кластеры отправляют данные мониторинга в основной, перезапустите warlock в рабочем кластере:
-
На исходном основном кластере повторите шаги Включения синхронизации etcd, чтобы превратить его в новый резервный кластер.
Регулярные проверки
Регулярно проверяйте статус синхронизации на резервном кластере:
Если обнаружены отсутствующие или лишние ключи, следуйте инструкциям в выводе для их устранения.
Загрузка пакетов
При использовании violet для загрузки пакетов в резервный кластер необходимо указать параметр --dest-repo <VIP addr of standby cluster>.
В противном случае пакеты будут загружены в репозиторий образов основного кластера, что помешает установке или обновлению расширений в резервном кластере.
Также необходимо предоставить либо данные аутентификации реестра образов резервного кластера, либо параметр --no-auth.
Подробности по подкоманде violet push см. в разделе Upload Packages.