Как выполнить резервное копирование и восстановление nexus с помощью Velero
Содержание
Область примененияТерминологияПредварительные требованияРезервное копированиеПодготовкаСоздание бакетаНастройка репозитория резервных копий VeleroВыполнение резервного копированияУдаление сервиса экземпляра nexus для предотвращения изменений данных во время резервного копированияСоздание политики резервного копирования томовВыполнение резервного копированияПосле успешного резервного копирования восстановите сервис экземпляра nexusВосстановлениеПодготовкаВыбор резервной копии для восстановленияОпределение целевого пространства имёнУдаление Nexus operator из кластера.Операции восстановленияСоздание файла конфигурации восстановленияСоздание задачи восстановленияОчистка ресурсовИзменение ресурса Nexus CRРазвертывание Nexus operator в кластере.Вопросы и ответыКак определить, поддерживает ли PVC snapshot?Область применения
Это решение применимо к экземплярам Nexus версии 3.76 и выше.
Это решение не поддерживает экземпляры Nexus, развернутые с использованием хранилища HostPath.
Если необходимо выполнить резервное копирование экземпляров с использованием HostPath, обратитесь к разделу Как выполнить резервное копирование и восстановление nexus с помощью функций Nexus.
Терминология
Предварительные требования
-
Развернуть MinIO Object Storage: Это решение резервного копирования и восстановления использует объектное хранилище для сохранения данных резервных копий, поэтому необходимо предварительно развернуть экземпляр MinIO. ACP предоставляет Быстрое создание экземпляра MinIO.
-
Развернуть Velero: Velero — это инструмент для резервного копирования и восстановления. ACP предоставляет
Alauda Container Platform Data Backup for Velero, который можно развернуть во вкладкеAdministratorв разделеMarketplace->Cluster Plugins, выполнив поиск по словуVelero. -
Установить командную утилиту mc: mc — это командный инструмент управления MinIO. Инструкции по установке см. в официальной документации MinIO.
-
Установить командную утилиту kubectl: kubectl — это командный инструмент управления Kubernetes. Инструкции по установке см. в официальной документации Kubernetes.
-
Удалить nexus operator из кластера.
Почему нужно удалить Nexus operator?
Во время восстановления Velero необходимо запускать backup pods для восстановления данных PVC, что занимает много времени. Если Operator не удалить, могут возникнуть следующие проблемы:
- Operator может пересоздавать workloads на основе Nexus CR, из-за чего восстановленные pods будут перезапущены или пересозданы, что приведет к прерыванию или неудаче восстановления.
- Некоторые восстановленные ресурсы могут конфликтовать с существующими ресурсами, например, Ingress.
Влияние удаления Nexus operator
После удаления Operator изменения в Nexus CR не будут применяться, например, изменение ресурсов или размера хранилища.
Удаление Operator не вызовет сбоев в работе существующих экземпляров.
Для удобства последующих операций сначала задайте следующие переменные окружения:
Выполните следующие команды для настройки инструмента mc и проверки подключения:
Если ping до экземпляра MinIO успешен, значит mc настроен корректно.
Резервное копирование
Подготовка
Подготовка к резервному копированию состоит из двух шагов:
- Создание бакета
- Настройка репозитория резервных копий Velero
Создание бакета
Выполните следующую команду для создания бакета для хранения данных резервных копий:
Настройка репозитория резервных копий Velero
Выполните следующую команду для создания репозитория резервных копий Velero:
Выполнение резервного копирования
Ручное резервное копирование состоит из четырёх шагов:
- Удалить сервис экземпляра nexus, чтобы предотвратить изменения данных
- Создать политику резервного копирования томов
- Выполнить резервное копирование
- После успешного резервного копирования восстановить сервис экземпляра nexus
Удаление сервиса экземпляра nexus для предотвращения изменений данных во время резервного копирования
Выполните следующую команду для удаления сервиса экземпляра nexus:
Создание политики резервного копирования томов
Политика томов используется для указания метода резервного копирования PVC. По умолчанию PVC резервируются с помощью метода fs-backup.
Если PVC поддерживает snapshot, можно использовать snapshot для резервного копирования pvc, чтобы ускорить процесс. Для этого необходимо изменить configmap политики томов, указав, что класс хранилища использует snapshot для резервного копирования. Например, если класс хранилища ceph поддерживает snapshot, добавьте следующую конфигурацию (условие, добавленное в начало, имеет более высокий приоритет):
Как определить, поддерживает ли PVC snapshot?
Если вы используете резервное копирование pvc через snapshot, при восстановлении нельзя менять класс хранилища. Пожалуйста, корректируйте класс хранилища в соответствии с реальной ситуацией.
Если Velero не включен с поддержкой CSI snapshot, при резервном копировании вы получите следующую ошибку:
Для исправления необходимо добавить параметр --features=EnableCSI в развертывание velero.
Выполнение резервного копирования
Выполните следующие команды для создания расписания резервного копирования и запуска задания резервного копирования:
Просмотр логов резервного копирования:
Проверьте прогресс задачи. Если статус Completed, резервное копирование прошло успешно.
После успешного резервного копирования восстановите сервис экземпляра nexus
Перейдите на страницу Administrator -> Marketplace -> Operator Hub, переключитесь на целевой кластер и повторно разверните Operator Alauda Build of Nexus.
Восстановление
Подготовка
Подготовка к восстановлению состоит из четырёх шагов:
- Выбрать резервную копию для восстановления
- Определить целевое пространство имён для восстановления
- Удалить Nexus operator из кластера.
Выбор резервной копии для восстановления
Выполните следующую команду для просмотра всех успешных записей резервного копирования и выберите нужную по времени начала.
Задайте переменную окружения BACKUP_NAME:
Определение целевого пространства имён
Рекомендуется восстанавливать в новое пространство имён. Задайте следующие переменные окружения:
Удаление Nexus operator из кластера.
Выполните следующую команду для удаления Nexus operator:
Почему нужно удалить Nexus operator?
Во время восстановления Velero необходимо запускать backup pods для восстановления данных PVC, что занимает много времени. Если Operator не удалить, могут возникнуть следующие проблемы:
- Operator может пересоздавать workloads на основе Nexus CR, из-за чего восстановленные pods будут перезапущены или пересозданы, что приведет к прерыванию или неудаче восстановления.
- Некоторые восстановленные ресурсы могут конфликтовать с существующими ресурсами, например, Ingress.
Влияние удаления Nexus operator
После удаления Operator изменения в Nexus CR не будут применяться, например, изменение ресурсов или размера хранилища.
Удаление Operator не вызовет сбоев в работе существующих экземпляров.
Операции восстановления
Операции восстановления состоят из пяти шагов:
- Создать файл конфигурации восстановления
- Создать задачу восстановления
- Очистить ресурсы
- Изменить ресурс Nexus CR
- Развернуть Nexus operator в кластере.
Создание файла конфигурации восстановления
Внимательно прочитайте комментарии в YAML и при необходимости внесите изменения (например, измените класс хранилища) перед созданием.
Создание задачи восстановления
Выполните следующую команду для создания задачи восстановления:
Просмотр логов восстановления:
Проверьте прогресс задачи. Если статус Completed, восстановление прошло успешно.
Очистка ресурсов
Убедитесь, что операция восстановления завершена, прежде чем продолжить!
Выполните следующие команды для очистки ресурсов:
Изменение ресурса Nexus CR
В новом экземпляре CR ресурса могут потребоваться следующие изменения. Пожалуйста, настройте в соответствии с вашей реальной ситуацией:
- Доменное имя:
- Применимый сценарий: исходный экземпляр был развернут с использованием доменного имени
- Причина: одинаковое доменное имя в ресурсах Ingress старого и нового экземпляров вызовет конфликт, из-за чего не удастся создать Ingress для нового экземпляра
- Рекомендация:
- (Рекомендуется) Изменить домен исходного экземпляра на временный, оставить новый экземпляр без изменений
- Или оставить исходный экземпляр без изменений, а новый экземпляр изменить на новый домен
- Как изменить: см. Настройка сетевого доступа экземпляра
- NodePort:
- Применимый сценарий: исходный экземпляр был развернут с использованием NodePort
- Причина: одинаковый NodePort в ресурсах Service старого и нового экземпляров вызовет конфликт, из-за чего не удастся создать Service для нового экземпляра
- Рекомендация:
- (Рекомендуется) Изменить NodePort исходного экземпляра на временный порт, оставить новый экземпляр без изменений
- Или оставить исходный экземпляр без изменений, а новый экземпляр изменить на новый порт
- Как изменить: см. Настройка сетевого доступа экземпляра
- Класс хранилища:
- Применимый сценарий: класс хранилища старого и нового экземпляров отличается (например, исходный использовал NFS, новый — Ceph)
- Причина: если не изменить, Operator продолжит использовать старый класс хранилища для создания PVC, что вызовет конфликт с восстановленными PVC
- Рекомендация: изменить на корректный класс хранилища
- Как изменить: см. Настройка хранилища экземпляра
Развертывание Nexus operator в кластере.
Перейдите во вкладку Administrator, на страницу Marketplace -> OperatorHub и повторно разверните Operator Alauda Build of Nexus.
После развертывания Operator он развернет новый экземпляр согласно Nexus CR. Вы можете отслеживать прогресс на странице деталей экземпляра.
После возвращения статуса экземпляра в норму войдите в Nexus и проверьте успешность восстановления данных. Проверяемые элементы включают, но не ограничиваются:
- Пользователи
- Репозитории
- Задачи
Вопросы и ответы
Как определить, поддерживает ли PVC snapshot?
Чтобы определить, поддерживает ли PVC snapshot, необходимо проверить, поддерживает ли его базовый StorageClass функцию snapshot. PVC поддерживает snapshot, если в кластере существует VolumeSnapshotClass, у которого поле driver совпадает со значением provisioner StorageClass. Если такой VolumeSnapshotClass есть, значит StorageClass (а значит и PVC) поддерживает функцию snapshot.
Пример конфигурации:
Ключевые моменты:
- Значение
provisionerв StorageClass должно точно совпадать со значениемdriverв VolumeSnapshotClass - Оба ресурса должны существовать в кластере
- CSI драйвер должен поддерживать операции snapshot