Аварийное восстановление глобального кластера
Содержание
ОбзорПоддерживаемые сценарии аварииНеподдерживаемые сценарии аварииПримечанияОбзор процессаНеобходимые ресурсыПроцедураШаг 1: Установка основного кластераШаг 2: Установка резервного кластераШаг 3: Включение синхронизации etcdПроцесс аварийного восстановленияРегулярные проверкиЗагрузка пакетовОбзор
Это решение предназначено для сценариев аварийного восстановления, связанных с кластером global. Кластер global выполняет роль управляющей плоскости платформы и отвечает за управление другими кластерами. Чтобы обеспечить непрерывную доступность сервисов платформы при сбое кластера global, в этом решении разворачиваются два кластера global: основной кластер и резервный кластер.
Механизм аварийного восстановления основан на синхронизации данных etcd в реальном времени из основного кластера в резервный. Если основной кластер становится недоступен из-за сбоя, сервисы можно быстро переключить на резервный кластер.
Поддерживаемые сценарии аварии
- Невосстановимый сбой на уровне системы в основном кластере, делающий его неработоспособным;
- Отказ физических или виртуальных машин, на которых размещен основной кластер, из-за чего он становится недоступен;
- Сбой сети в месте размещения основного кластера, приводящий к прерыванию обслуживания;
Неподдерживаемые сценарии аварии
- Сбои приложений, развернутых в кластере
global; - Потеря данных, вызванная отказом системы хранения данных (не входит в область синхронизации etcd);
Роли основного кластера и резервного кластера относительны: кластер, который в данный момент обслуживает платформу, является основным кластером (DNS указывает на него), а резервный кластер — это резервный кластер. После переключения при аварии эти роли меняются местами.
Примечания
-
Это решение синхронизирует только данные etcd кластера
global; оно не включает данные registry, chartmuseum или других компонентов; -
Для удобства диагностики и управления рекомендуется называть узлы в стиле
standby-global-m1, чтобы было видно, к какому кластеру принадлежит узел (основному или резервному). -
Аварийное восстановление данных приложений внутри кластера не поддерживается;
-
Для надежной синхронизации etcd требуется стабильное сетевое соединение между двумя кластерами;
-
Если кластеры основаны на гетерогенных архитектурах (например, x86 и ARM), используйте установочный пакет для двух архитектур;
-
Следующие namespaces исключены из синхронизации etcd. Если ресурсы создаются в этих namespaces, пользователи должны выполнять их резервное копирование вручную:
-
Если оба кластера настроены на использование встроенных image registry, контейнерные image необходимо загружать отдельно в каждый из них;
-
Если в основном кластере развернуты 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,
- Прежде всего необходимо задокументировать все параметры, заданные при прохождении инструкции в 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 следующие параметры ДОЛЖНЫ быть такими же, как в основном кластере:
- Поле
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 и задайте параметры:
- Если порт
2379не перенаправляется через load balancer, необходимо правильно настроить 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 for Elasticsearch:
-
Monitoring for VictoriaMetrics:
Процесс аварийного восстановления
Эта процедура удаляет плагин синхронизации etcd. Перед его удалением убедитесь, что данные резервного кластера согласованы с данными основного кластера. Если удалить плагин, когда в резервном кластере отсутствуют данные, имеющиеся в основном, это может привести к некорректному разрешению owner references, а объекты Machine узлов workload-кластера — включая кластеры с immutable OS, где это уничтожает базовую виртуальную машину, — могут быть удалены. Если проверка согласованности сообщает о missing или surplus keys, не удаляйте плагин; сначала устраните несоответствие или обратитесь в техническую поддержку.
-
При необходимости перезапустите Elasticsearch в резервном кластере:
-
Проверьте согласованность данных в резервном кластере (та же проверка, что и на шаге 3). Если проверка сообщает о missing или surplus keys, резервный кластер не согласован с основным: не переходите к следующему шагу. Сначала устраните несоответствие или обратитесь в техническую поддержку. На обоих кластерах также убедитесь, что ни один узел
Machineне находится в нерабочем состоянии, и устраните все такие случаи перед продолжением: -
Удалите плагин синхронизации etcd;
-
Уберите перенаправление порта
2379для обоих VIP; -
Переключите DNS домена платформы на VIP резервного кластера, который теперь становится основным кластером;
-
Проверьте разрешение DNS:
-
Очистите кеш браузера и откройте страницу платформы, чтобы убедиться, что она отображает бывший резервный кластер;
-
Перезапустите следующие сервисы (если они установлены):
-
Log Storage for Elasticsearch:
-
Monitoring for VictoriaMetrics:
-
cluster-transformer:
-
-
Если workload-кластеры отправляют данные мониторинга в основной кластер, перезапустите warlock в workload-кластере:
-
На исходном основном кластере повторите шаги из раздела Включение синхронизации etcd, чтобы преобразовать его в новый резервный кластер.
Регулярные проверки
Регулярно проверяйте состояние синхронизации на резервном кластере:
Если какие-либо ключи отсутствуют или являются лишними, следуйте инструкциям в выводе, чтобы устранить проблему.
Загрузка пакетов
При использовании violet для загрузки пакетов в резервный кластер необходимо указать параметр --dest-repo <VIP addr of standby cluster>.
Иначе пакеты будут загружены в image repository основного кластера, что не позволит резервному кластеру устанавливать или обновлять расширения.
Также имейте в виду, что необходимо предоставить либо данные аутентификации для image registry резервного кластера, либо параметр --no-auth.
Подробности о подкоманде violet push см. в разделе Загрузка пакетов.