Восстановление после катастрофы для глобального кластера
Содержание
Обзор
Это решение предназначено для сценариев восстановления после катастрофы, связанных с кластером global. Кластер global служит управляющей плоскостью платформы и отвечает за управление другими кластерами. Для обеспечения непрерывной доступности платформы при сбое кластера global это решение развертывает два кластера global: основной кластер (Primary Cluster) и резервный кластер (Standby Cluster).
Механизм восстановления после катастрофы основан на синхронизации данных etcd в реальном времени с основного кластера на резервный. Если основной кластер становится недоступен из-за сбоя, сервисы могут быстро переключиться на резервный кластер.
Поддерживаемые сценарии катастроф
- Неисправимый системный сбой основного кластера, делающий его непригодным к работе;
- Сбой физических или виртуальных машин, на которых размещён основной кластер, что делает его недоступным;
- Сбой сети в месте расположения основного кластера, приводящий к прерыванию сервиса;
Неподдерживаемые сценарии катастроф
- Сбои приложений, развернутых внутри кластера
global; - Потеря данных, вызванная сбоями системы хранения (вне области синхронизации etcd);
Роли Primary Cluster и Standby Cluster относительны: кластер, который в данный момент обслуживает платформу, является основным (DNS указывает на него), а резервный — резервным. После переключения роли меняются местами.
Примечания
-
Это решение синхронизирует только данные etcd кластера
global; данные реестра, 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-окружения,
- В первую очередь задокументируйте все параметры, установленные при следовании руководству веб-интерфейса установки. Необходимо сохранить некоторые опции одинаковыми при установке резервного кластера.
- Необходимо предварительно настроить Load Balancer, предоставленный пользователем, для маршрутизации трафика, направленного на виртуальный 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. - Все поля сертификата.
- Все поля
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: Ключи есть в основном кластере, но отсутствуют в резервном. Часто вызвано GC из-за порядка ресурсов при синхронизации. Перезапустите один 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.