Это решение предназначено для сценариев восстановления после катастрофы, связанных с кластером global. Кластер global служит управляющей плоскостью платформы и отвечает за управление другими кластерами. Для обеспечения непрерывной доступности платформы при сбое кластера global в рамках этого решения разворачиваются два кластера global: основной кластер (Primary Cluster) и резервный кластер (Standby Cluster).
Механизм восстановления после катастрофы основан на синхронизации данных etcd в реальном времени с основного кластера на резервный. В случае недоступности основного кластера из-за сбоя сервисы могут быстро переключиться на резервный кластер.
global;Роли Primary Cluster и Standby Cluster являются относительными: кластер, обслуживающий платформу в данный момент, считается основным (DNS указывает на него), а резервный — резервным. После переключения роли меняются местами.
Это решение синхронизирует только данные etcd кластера global; данные из registry, chartmuseum и других компонентов не включены;
Для удобства устранения неполадок и управления рекомендуется называть узлы в стиле standby-global-m1, чтобы указывать, к какому кластеру принадлежит узел (Primary или Standby).
Восстановление данных приложений внутри кластера не поддерживается;
Для надежной синхронизации etcd требуется стабильное сетевое соединение между двумя кластерами;
Если кластеры основаны на гетерогенных архитектурах (например, x86 и ARM), используйте установочный пакет с поддержкой двух архитектур;
Следующие пространства имён исключены из синхронизации etcd. Если в этих пространствах создаются ресурсы, пользователям необходимо выполнять их резервное копирование вручную:
Если оба кластера настроены на использование встроенных реестров образов, контейнерные образы необходимо загружать отдельно в каждый из них;
Если в основном кластере развернут DevOps Eventing v3 (knative-operator) и его экземпляры, те же компоненты должны быть предварительно развернуты в резервном кластере.
Единое доменное имя, которое будет Platform Access Address, а также TLS-сертификат и приватный ключ для обслуживания HTTPS на этом домене;
Выделенный виртуальный IP-адрес для каждого кластера — один для Primary Cluster и другой для Standby Cluster;
80, 443, 6443, 2379 и 11443 на управляющие узлы за соответствующим VIP.При установке основного кластера среды DR,
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 текущего кластера.Обратитесь к следующей документации для завершения установки:
Временно укажите доменное имя на VIP резервного кластера;
Войдите на первый управляющий узел Primary Cluster и скопируйте конфигурацию шифрования etcd на все управляющие узлы резервного кластера:
Установите резервный кластер так же, как основной
При установке резервного кластера среды DR, следующие параметры ДОЛЖНЫ совпадать с параметрами основного кластера:
Platform Access Address.Certificate).Image Repository).И ОБЯЗАТЕЛЬНО следуйте NOTES OF DR (Disaster Recovery Environment) INSTALLING из Шага 1.
Обратитесь к следующей документации для завершения установки:
При необходимости настройте балансировщик нагрузки для перенаправления порта 2379 на управляющие узлы соответствующего кластера. Поддерживается ТОЛЬКО TCP-режим; перенаправление на уровне L7 не поддерживается.
Перенаправление порта через балансировщик нагрузки не обязательно. Если из резервного кластера доступен прямой доступ к активному глобальному кластеру, укажите адреса etcd через Active Global Cluster ETCD Endpoints.
Зайдите в веб-консоль резервного глобального кластера через его VIP и переключитесь в режим Administrator;
Перейдите в Marketplace > Cluster Plugins, выберите кластер global;
Найдите etcd Synchronizer, нажмите Install, настройте параметры:
2379 не перенаправляется через балансировщик, необходимо правильно указать Active Global Cluster ETCD Endpoints;Проверьте, что 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.