Руководство по миграции данных из MinIO в Rook Ceph RGW
Содержание
1. Обзор и архитектура1.1 Особенности архитектуры1.2 Стратегия синхронизации2. Требования и подготовка2.1 Проверка установки Alauda VolSync и извлечение версии (Критическое требование)2.2 Сбор информации о MinIO источнике2.3 Создание пользователя Ceph RGW (назначение)3. Конфигурация развертывания (манифесты)3.1 Создание секрета конфигурации Rclone3.2 Определение Job миграции4. Порядок выполненияФаза 1: Начальная полная синхронизацияФаза 2: Инкрементальная синхронизацияФаза 3: Окончательное переключение5. Рекомендации по устранению неполадок и настройке1. Обзор и архитектура
В этом документе объясняется, как использовать встроенный компонент Rclone в установленном образе оператора Alauda Build of VolSync для миграции всех данных из высокодоступного (HA) развертывания MinIO в Kubernetes в Rook Ceph RGW.
1.1 Особенности архитектуры
- Безопасное повторное использование образа: данный подход запускает Kubernetes Job, который повторно использует образ оператора
build-harbor.alauda.cn/acp/volsyncс исправлениями безопасности, переопределяет стандартную точку входа и напрямую вызывает внутренний бинарник Rclone для выполнения стандартной синхронизации объектов на уровне API S3-to-S3.
1.2 Стратегия синхронизации
Используйте трехфазную стратегию: «Полная -> Инкрементальная -> Переключение»:
- Начальная синхронизация (Полная синхронизация): поддерживайте сервисы в онлайн-режиме при миграции исторических данных.
- Инкрементальная синхронизация: поддерживайте сервисы в онлайн-режиме и запускайте несколько раз для догоняющей синхронизации новых или изменённых данных.
- Переключение (Cutover): остановите записи, выполните строгие проверки согласованности и завершите окончательное переключение.
2. Требования и подготовка
2.1 Проверка установки Alauda VolSync и извлечение версии (Критическое требование)
Перед выполнением данного плана убедитесь, что оператор "Alauda Build of VolSync" установлен в namespace volsync-system. Версия образа для Job миграции должна строго совпадать с версией запущенного оператора.
Подробные инструкции по установке Alauda Build of VolSync см. в разделе Configure PVC DR with VolSync.
Как получить версию:
Войдите в консоль управления кластером, перейдите в Marketplace / OperatorHub, откройте Installed Operators, найдите оператор VolSync и запишите отображаемую версию (например, v0.8.0 или v0.9.0). Сохраните это значение как <OPERATOR_VERSION> для дальнейшей настройки.
2.2 Сбор информации о MinIO источнике
- Endpoint: внутренний адрес сервиса MinIO (например:
http://minio.tenant-ns.svc:9000). - Учетные данные: Access Key / Secret Key с правами
ReadиListдля всех бакетов.
2.3 Создание пользователя Ceph RGW (назначение)
Примените следующий YAML в кластере Rook Ceph для создания выделенного пользователя миграции и предоставления прав на создание бакетов.
Для минимизации прав оставьте только разрешения на уровне бакетов и не предоставляйте возможность управления пользователями (user).
Извлеките и декодируйте учетные данные Ceph для дальнейшего использования:
3. Конфигурация развертывания (манифесты)
Рекомендуется развертывать задачи миграции в namespace на стороне назначения (Ceph RGW) или в выделенном namespace для операций.
Создайте namespace, используемый обоими манифестами, перед их применением:
Рекомендация по месту развертывания (Важно)
Во время миграции Rclone читает данные локально для обработки, а затем загружает их в целевой S3 кластер. Следовательно, сетевое расположение кластера, в котором выполняется задача миграции, напрямую влияет на пропускную способность и время завершения. Рекомендуется развернуть оператор VolSync/Job миграции в кластере MinIO или Ceph, чтобы уменьшить сетевые накладные расходы между кластерами и повысить стабильность передачи.
3.1 Создание секрета конфигурации Rclone
Запишите учетные данные источника и назначения S3 в Secret. Важно: никогда не добавляйте кавычки вокруг endpoint или значений секретов.
3.2 Определение Job миграции
Разверните Job, который вызывает исправленный образ Alauda VolSync для выполнения синхронизации данных S3.
О
remote:bucket[/prefix]vsremote:(Важно)
- Для S3 backend’ов распространённый паттерн Rclone —
remote:bucketилиremote:bucket/prefix, что является самым явным и безопасным способом определения области.- В этом документе намеренно используется
source-minio:->dest-ceph:, чтобы поддержать полную миграцию на уровне инстанса (все видимые бакеты со стороны источника).- Предупреждение о рисках:
remote:охватывает более широкую область. Если учетные данные имеют избыточные права, могут быть мигрированы бакеты вне предполагаемой области. Всегда проверяйте в тестовой среде и рассмотрите возможность перехода на явный allowlist сremote:bucket[/prefix]для финального переключения в продакшене.
Обязательно замените <OPERATOR_VERSION> в YAML ниже на фактическую версию, полученную в разделе 2.1.
4. Порядок выполнения
Фаза 1: Начальная полная синхронизация
- Создайте namespace для операций:
kubectl create ns migration-ops - Примените Secret:
kubectl apply -f rclone-secret.yaml - Запустите Job:
kubectl apply -f rclone-job.yaml - Отслеживайте прогресс:
kubectl -n migration-ops logs -f job/volsync-s3-sync-job
Фаза 2: Инкрементальная синхронизация
Для догоняющей синхронизации новых данных, появившихся во время полной синхронизации, повторяйте этот шаг по мере необходимости.
- Удалите предыдущий Job:
kubectl -n migration-ops delete job volsync-s3-sync-job - Воссоздайте Job:
kubectl apply -f rclone-job.yaml
Примечание по механизму: по умолчанию Rclone сравнивает Size и ModTime для решения о необходимости передачи. Существующие неизменённые файлы пропускаются.
Фаза 3: Окончательное переключение
- Остановите записи: прекратите записи в MinIO на уровне приложений или заблокируйте запись через балансировщик нагрузки/Ingress.
- Строгая проверка синхронизации:
- Удалите текущий Job:
kubectl -n migration-ops delete job volsync-s3-sync-job - Обновите
rclone-job.yaml: удалите- "--ignore-errors"для финального запуска, затем добавьте- "--checksum"вargs. Это предотвратит маскировку ошибок объектов и отдаст приоритет сравнению Size+Checksum (если доступно) для обнаружения различий. - Рекомендация по согласованности (Обязательно): не полагайтесь только на количество объектов или ETag. Перед переключением выполните
rclone check source-minio: dest-ceph: --download --checksum(или выполните выборочные загрузки критичных объектов и вычислите SHA256), чтобы снизить ложные срабатывания из-за multipart/ETag различий. - Повторно примените Job:
kubectl apply -f rclone-job.yaml
- Проверьте и переключитесь: после того, как Job завершится со статусом
Completedи в логах не будет ошибок, обновите S3 Endpoint и учетные данные приложения на Ceph RGW.