Guide de migration
Ce guide explique comment migrer les données Relution d’un backend de stockage objet vers un autre. Les scénarios courants incluent :
- La migration de MinIO vers SeaweedFS (MinIO n’est plus maintenu)
- Le passage d’un fournisseur cloud vers un hébergement auto-géré (ou l’inverse)
- Le changement de fournisseur cloud
Les exemples ci-dessous illustrent une migration de MinIO vers SeaweedFS, mais les étapes peuvent être adaptées à toute source et destination compatibles S3.
Le processus de migration comprend quatre étapes :
- Mettre en place le nouveau backend de stockage
- Copier les données de l’ancien vers le nouveau stockage
- Mettre à jour la configuration de Relution
- Supprimer l’ancien backend
Prérequis
- Un accès simultané aux deux backends de stockage
- L’outil en ligne de commande
rclone(guide d’installation →) - Les identifiants des deux backends de stockage
Mettre en place le nouveau backend
Pour une migration vers SeaweedFS, suivre d’abord le guide Installer SeaweedFS →. Relution est arrêté avant la copie des données (voir la section « Copier les données ») et reste arrêté jusqu’à la modification de la configuration.
S’assurer que l’ancien et le nouveau backend de stockage sont tous deux en cours d’exécution :
docker compose up -d minio seaweedfs
Configurer rclone
L’outil rclone offre un moyen rapide et fiable de copier des données entre backends compatibles S3.
Installer rclone
Suivre les instructions sur rclone.org/install → selon le système d’exploitation utilisé.
Créer les configurations distantes
Lancer l’assistant de configuration :
rclone config
Configurer la source (MinIO) :
- Taper
npour un nouveau remote - Nom :
source - Type de stockage : sélectionner
s3 - Fournisseur : sélectionner
Minio(ouOtherpour un S3 générique) - Saisir l’Access Key et la Secret Key
- Endpoint :
http://localhost:9000 - Conserver les valeurs par défaut pour les options restantes
- Confirmer avec
y
Configurer la destination (SeaweedFS) :
- Taper
npour un nouveau remote - Nom :
dest - Type de stockage : sélectionner
s3 - Fournisseur : sélectionner
Other - Saisir le nouvel Access Key et le nouveau Secret Key
- Endpoint :
http://localhost:8333 - Conserver les valeurs par défaut pour les options restantes
- Confirmer avec
y
Taper q pour quitter la configuration.
AES256 et la même clé Base64 que celle configurée dans Relution sont renseignés dans la configuration avancée des deux remotes (source et dest) (options rclone sse_customer_algorithm et sse_customer_key_base64). Le nouveau backend doit prendre en charge SSE-C.Avec le chiffrement côté client via AWS KMS, les données de clé sont stockées dans les métadonnées des objets. Ces métadonnées doivent être conservées lors de la copie (option rclone
--metadata).Vérifier l’accès aux ports
rclone accède aux API S3 des deux backends via l’hôte (http://localhost:9000 et http://localhost:8333). Selon les guides Obsolète : MinIO → et Installer SeaweedFS →, les ports S3 ne sont accessibles que dans le réseau Docker. Pour la durée de la migration, ils sont donc publiés sur l’hôte dans le compose.yaml :
minio:
ports:
- "127.0.0.1:9000:9000" # API S3 - pour rclone pendant la migration
- "9001:9001" # Console web
# ...
seaweedfs:
ports:
- "127.0.0.1:8333:8333" # API S3 - pour rclone pendant la migration
- "127.0.0.1:23646:23646" # Console web
Recréer ensuite les conteneurs avec docker compose up -d minio seaweedfs. Si rclone s’exécute sur un autre hôte, la restriction à 127.0.0.1 est supprimée. Après la migration, les publications supplémentaires des ports S3 sont de nouveau retirées.
Copier les données
Arrêter Relution afin d’éviter toute modification des données pendant la migration, et vérifier que seuls les backends de stockage sont encore en cours d’exécution :
docker compose stop relution docker compose ps # Doit afficher les backends de stockage, mais PAS relutionDémarrer le transfert :
rclone copy source:relution dest:relution --progressAttendre la fin du transfert. Le temps de transfert dépend de la quantité de données dans le bucket.
Vérifier le transfert :
rclone check source:relution dest:relutionSortie attendue :
0 differences found
Mettre à jour la configuration de Relution
Mettre à jour la configuration de Relution pour qu’elle pointe vers le nouveau backend. L’endpoint, l’Access Key et la Secret Key sont modifiés ; le nom du bucket et la région uniquement s’ils diffèrent :
| Paramètre | Ancienne valeur | Nouvelle valeur |
|---|---|---|
Endpoint (customEndpoint) | http://minio:9000 | http://seaweedfs:8333 |
| Access Key | Ancienne clé | Nouvelle clé |
| Secret Key | Ancien secret | Nouveau secret |
Nom du bucket (bucketName) | relution | Nom du bucket de destination (uniquement s’il diffère) |
Région (region) | Par défaut eu-west-1 | Région du bucket de destination (par exemple pour AWS S3) |
- Si le bucket de destination porte un autre nom, les commandes rclone utilisent
source:<ancien-bucket> dest:<nouveau-bucket>. La base de données ne stocke que les clés des objets ; il suffit donc d’adapterbucketName. - Pour AWS S3 sans endpoint personnalisé,
customEndpointouRELUTION_STORAGE_S3_CUSTOMENDPOINTest supprimé. L’endpoint est alors déduit de la région. - Les paramètres de chiffrement (clé SSE-C
serverSideEncryption.keyoukeyFile, ou KMS) restent inchangés. - Le bucket de destination est utilisé exclusivement par cette instance Relution. Relution supprime régulièrement les objets du bucket qui ne sont associés à aucune de ses ressources.
Pour une description détaillée de la configuration/modification, consulter Connecter le stockage →
Vérifier et nettoyer
Démarrer Relution :
docker compose up -d relutionVérifier le bon fonctionnement : Se connecter à Relution et confirmer que les applications et ressources se chargent correctement.
Supprimer l’ancien backend (uniquement après une vérification approfondie) :
docker compose down minio # Arrêter l'ancien serviceNettoyer la configuration : Supprimer l’ancien service du
compose.yaml.Supprimer les anciennes données : Supprimer l’ancien volume ou répertoire de stockage (par exemple
./volumes/minio/data).Nettoyer rclone : Il est également possible de supprimer la configuration rclone :
rclone config delete source rclone config delete dest
Connexion refusée / Timeout
S’assurer que les ports de l’API S3 sont exposés et non bloqués par un pare-feu ou une segmentation réseau. Tester la connectivité :
curl http://localhost:8333 # Doit retourner une erreur S3
Access denied / 401 / 403
Vérifier que les identifiants sont corrects et que l’utilisateur a accès au bucket.
Fichiers manquants après la migration
Relancer la vérification :
rclone check source:relution dest:relution
Si des différences sont détectées, relancer rclone copy ; seuls les fichiers manquants seront transférés.