Аварийное восстановление глобального кластера
На этой странице описано аварийное восстановление для кластеров global, работающих на традиционной операционной системе. Аварийное восстановление для кластеров global на Immutable Infrastructure находится в разработке; см. Аварийное восстановление глобального кластера на Immutable Infrastructure.
Содержание
ОбзорПоддерживаемые сценарии аварииНеподдерживаемые сценарии аварииПримечанияОбзор процессаТребуемые ресурсыПроцедураШаг 1: Установка основного кластераШаг 2: Установка резервного кластераШаг 3: Включение синхронизации etcdПроцесс аварийного восстановленияРегулярные проверкиЗагрузка пакетовОбзор
Это решение предназначено для сценариев аварийного восстановления, связанных с кластером global. Кластер global выступает в роли управляющей плоскости платформы и отвечает за управление другими кластерами. Чтобы обеспечить непрерывную доступность сервисов платформы при отказе кластера global, в этом решении разворачиваются два кластера global: основной кластер и резервный кластер.
Механизм аварийного восстановления основан на синхронизации данных etcd в реальном времени из основного кластера в резервный. Если основной кластер становится недоступен из-за сбоя, сервисы можно быстро переключить на резервный кластер.
Поддерживаемые сценарии аварии
- Неустранимый сбой на уровне системы в основном кластере, делающий его неработоспособным;
- Отказ физических или виртуальных машин, на которых размещен основной кластер, из-за чего он становится недоступен;
- Сбой сети в месте размещения основного кластера, приводящий к прерыванию сервиса;
Неподдерживаемые сценарии аварии
- Сбои приложений, развернутых внутри кластера
global; - Потеря данных, вызванная сбоями системы хранения (вне области синхронизации etcd);
Роли основного кластера и резервного кластера относительны: кластер, который в данный момент обслуживает платформу, является основным кластером (на него указывает DNS), а резервный кластер является резервным. После переключения при отказе эти роли меняются местами.
Примечания
-
Это решение синхронизирует только данные etcd кластера
global; оно не включает данные registry, chartmuseum или других компонентов; -
Для удобства устранения неполадок и управления рекомендуется называть узлы в стиле
standby-global-m1, чтобы было понятно, к какому кластеру относится узел (основному или резервному). -
Аварийное восстановление данных приложений внутри кластера не поддерживается;
-
Для надежной синхронизации etcd между двумя кластерами требуется стабильная сетевая связность;
-
Если кластеры основаны на разнородных архитектурах (например, x86 и ARM), используйте установочный пакет для двух архитектур;
-
Следующие пространства имен исключены из синхронизации etcd. Если ресурсы создаются в этих пространствах имен, пользователям необходимо выполнять их резервное копирование вручную:
-
Если оба кластера настроены на использование встроенных image registry, контейнерные образы необходимо загружать отдельно в каждый из них;
-
Если основной кластер разворачивает DevOps Eventing v3 (knative-operator) и его экземпляры, те же компоненты должны быть предварительно развернуты в резервном кластере.
Обзор процесса
- Подготовьте единый домен для доступа к платформе;
- Укажите домен на VIP основного кластера и установите основной кластер;
- Временно переключите DNS-разрешение на резервный VIP для установки резервного кластера;
- Скопируйте ключ шифрования ETCD основного кластера на узлы, которые впоследствии станут узлами управляющей плоскости резервного кластера;
- Установите и включите плагин синхронизации etcd;
- Проверьте состояние синхронизации и выполняйте регулярные проверки;
- В случае сбоя переключите DNS на резервный кластер, чтобы завершить аварийное восстановление.
Требуемые ресурсы
-
Единый домен, который будет служить
Platform Access Address, а также TLS-сертификат и закрытый ключ для обслуживания HTTPS на этом домене; -
Выделенный виртуальный IP-адрес для каждого кластера — один для основного кластера и другой для резервного кластера;
- Предварительно настройте load balancer так, чтобы он маршрутизировал TCP-трафик на портах
80,443,6443,2379и11443на узлы управляющей плоскости за соответствующим VIP.
- Предварительно настройте load balancer так, чтобы он маршрутизировал TCP-трафик на портах
Процедура
Шаг 1: Установка основного кластера
При установке основного кластера DR Environment,
- Прежде всего, документируйте все параметры, заданные при выполнении руководства в web UI установки. Некоторые параметры необходимо оставить одинаковыми при установке резервного кластера.
- Должен быть заранее настроен load balancer User-provisioned, который будет маршрутизировать трафик, отправляемый на виртуальный 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. - На второй странице руководства по установке (шаг:
Advanced) полеOther Platform Access Addressesдолжно включать виртуальный IP текущего кластера.
Для завершения установки см. следующую документацию:
Шаг 2: Установка резервного кластера
-
Временно укажите доменное имя на VIP резервного кластера;
-
Войдите на первый узел управляющей плоскости основного кластера и скопируйте конфигурацию шифрования etcd на все узлы управляющей плоскости резервного кластера:
-
Установите резервный кластер так же, как и основной кластер
При установке резервного кластера DR Environment следующие параметры должны быть такими же, как у основного кластера:
- Поле
Platform Access Address. - Все поля
Certificate. - Все поля
Image Repository. - Важно: убедитесь, что учетные данные image repository и администраторский пользователь совпадают с теми, что заданы в основном кластере.
и ОБЯЗАТЕЛЬНО следуйте указаниям ПРИМЕЧАНИЯ ПО УСТАНОВКЕ DR (ОКРУЖЕНИЕ АВАРИЙНОГО ВОССТАНОВЛЕНИЯ) в шаге 1.
Для завершения установки см. следующую документацию:
Шаг 3: Включение синхронизации etcd
-
При необходимости настройте load balancer так, чтобы он перенаправлял порт
2379на узлы управляющей плоскости соответствующего кластера. Поддерживается ТОЛЬКО режим TCP; перенаправление на L7 не поддерживается.INFOПроброс портов через load balancer не требуется. Если доступ от резервного кластера к активному глобальному кластеру возможен напрямую, укажите адреса etcd через Active Global Cluster ETCD Endpoints.
-
Откройте Web Console резервного глобального кластера через его VIP и переключитесь в представление Administrator.
-
Перейдите в Marketplace > Cluster Plugins, выберите кластер
global. -
Найдите etcd Synchronizer, нажмите Install и настройте следующие параметры:
Предварительное условие (только для 4.3.1+): создайте Secret
etcd-sync-active-cluster-tokenв резервном глобальном кластере. Сначала получите bearer token для доступа к API server активного глобального кластера из активного глобального кластера. Затем скопируйте вывод команды и используйте его при создании Secret. Secret хранит токен в ключе данныхtoken.Скопируйте значение вывода, затем выполните эту команду в резервном кластере:
- Установите для Active Global Cluster VIP VIP активного глобального кластера.
- Если порт
2379не пробрасывается через load balancer, корректно настройте Active Global Cluster ETCD Endpoints. - Установите для Standby Cluster ETCD Endpoints адрес etcd резервного кластера. Используйте значение по умолчанию, если локальный сервис etcd не экспонируется через другой endpoint.
- Установите для Active Global Cluster Token Secret значение
etcd-sync-active-cluster-token. - Используйте значение по умолчанию для Data Check Interval.
- Оставьте Print detail logs выключенным, если только вы не выполняете диагностику.
Во время установки система запускает Job
etcd-sync-bootstrapдо старта Deploymentetcd-sync. Установка плагина продолжается только после того, как Job подготовитremote-etcd-ca,remote-etcd-issuerиremote-etcd-client.Проверьте bootstrap Job и runtime-ресурсы:
Дождитесь, пока kubectl get lease -n cpaas-system etcd-sync-mirror -o jsonpath='{.spec.holderIdentity}' не вернет непустое значение, прежде чем продолжать.
Проверьте, что sync Pod'ы запущены в резервном кластере, и определите текущего лидера:
Если ресурсы с зависимостями ownerReference нужно повторно синхронизировать, пересоздайте Pod текущего лидера после появления сообщения Start Sync update:
Проверьте состояние синхронизации:
Интерпретация вывода:
LOCAL ETCD missed keys: ключи существуют в основном глобальном кластере, но отсутствуют в резервном. Это часто устраняется после перезапуска текущего Pod'а-лидераetcd-sync.LOCAL ETCD surplus keys: ключи существуют в резервном глобальном кластере, но отсутствуют в основном. Перед удалением проверьте их совместно с вашей операционной командой.
Если установлены следующие компоненты, перезапустите их сервисы:
-
Log Storage для Elasticsearch:
-
Monitoring для VictoriaMetrics:
Процесс аварийного восстановления
В этой процедуре удаляется плагин синхронизации etcd. Перед его удалением убедитесь, что данные резервного кластера согласованы с основным кластером. Удаление плагина, когда в резервном кластере отсутствуют данные, имеющиеся в основном, может привести к некорректному разрешению ссылок owner reference, а объекты Machine узлов workload-кластера — включая кластеры на immutable OS, где это приведет к уничтожению базовой виртуальной машины — могут быть удалены. Если проверка согласованности сообщает о пропущенных или избыточных ключах, не удаляйте плагин; сначала устраните несоответствие или обратитесь в службу технической поддержки.
-
При необходимости перезапустите Elasticsearch в резервном кластере:
-
Проверьте согласованность данных в резервном кластере (та же проверка, что и в Шаге 3). Если проверка сообщает о пропущенных или избыточных ключах, резервный кластер не согласован с основным: не переходите к следующему шагу. Сначала устраните несоответствие или обратитесь в службу технической поддержки. На обоих кластерах также убедитесь, что ни один узел
Machineне находится в неработающем состоянии, и устраните все такие состояния перед продолжением: -
Удалите плагин синхронизации etcd;
-
Уберите проброс порта
2379для обоих VIP; -
Переключите DNS домена платформы на VIP резервного кластера, который теперь становится основным кластером;
-
Проверьте DNS-разрешение:
-
Очистите кэш браузера и откройте страницу платформы, чтобы убедиться, что отображается бывший резервный кластер;
-
Перезапустите следующие сервисы (если они установлены):
-
Log Storage для Elasticsearch:
-
Monitoring для VictoriaMetrics:
-
cluster-transformer:
-
-
Если workload-кластеры отправляют данные мониторинга в основной кластер, перезапустите warlock в workload-кластере:
-
В исходном основном кластере повторите шаги Включение синхронизации etcd, чтобы преобразовать его в новый резервный кластер.
Регулярные проверки
Регулярно проверяйте состояние синхронизации в резервном кластере:
Если какие-либо ключи отсутствуют или являются избыточными, следуйте инструкциям в выводе, чтобы устранить проблему.
Загрузка пакетов
Подробности по подкоманде violet push см. в разделе Загрузка пакетов.