Object Storage Swift - Synchroniser des conteneurs d’objets

Base de connaissances

Object Storage Swift - Synchroniser des conteneurs d’objets


Icons/System/eye-open Created with Sketch. 240 vues 16.11.2022 Cloud / Object Storage S3

Objectif

Si vous souhaitez déplacer vos objets d'un data-centre à un autre, ou même d'un projet à un autre, la synchronisation d'objets entre conteneurs est la meilleure solution afin d'éviter une coupure de service lors de votre migration. Ce guide vous explique comment mettre en place cette solution.

Prérequis

En pratique

Si votre conteneur contient des objets d'une taille supérieure à 5 Go, vos deux conteneurs devront avoir le même nom. De plus, la configuration de la synchronisation doit également être appliquée au conteneur qui contient les segments.

Configuration de la synchronisation

Création de la clé de synchronisation

Afin que les conteneurs puissent s'identifier, il faudra créer une clé puis la configurer sur chacun des conteneurs d'objets :

  • Créer la clé :
root@serveur-1:~$ sharedKey=$(openssl rand -base64 32)

Configuration du conteneur destinataire

Dans un premier temps, il faut configurer la clé sur le conteneur qui recevra les données. Dans notre cas, celui ci se trouve à BHS.

  • Vérifiez la région chargée dans les variables d'environnement :
root@serveur-1~$ env | grep OS_REGION

OS_REGION_NAME=BHS
  • Configurez la clé sur le conteneur destinataire :
root@serveur-1:~$ swift post --sync-key "$sharedKey" containerBHS
  • On vérifie que celle-ci a bien été configurée grâce à la commande suivante et on récupère en même temps le contenu de la variable "Account" :
root@serveur-1:~$ swift stat containerBHS
                         Account: AUTH_b3e269xxxxxxxxxxxxxxxxxxxx2b0ba29
                       Container: containerBHS
                         Objects: 0
                           Bytes: 0
                        Read ACL:
                       Write ACL:
                         Sync To:
                        Sync Key: 4cA5j5LyaaG2ws32d1fsdQSxnvIJv+y2qFnbnm6Kw=
Meta Access-Control-Allow-Origin: https://www.ovh.com
                   Accept-Ranges: bytes
                X-Storage-Policy: Policy-0
                      Connection: close
                     X-Timestamp: 1444812373.28095
                      X-Trans-Id: B2210C05:895E_9E45A961:01BB_561E52E1_16A3:5298
                    Content-Type: text/plain; charset=utf-8
  • Récupérez l'adresse du conteneur destinataire pour ensuite la configurer sur le conteneur source (Celle-ci est du type : //OVH_PUBLIC_CLOUD/Région/Account/Conteneur)
root@serveur-1:~$ export destContainer="//OVH_PUBLIC_CLOUD/BHS/AUTH_b3e269xxxxxxxxxxxxxxxxxxxx2b0ba29/containerBHS"

Configuration du conteneur source

  • Changez de région dans les variables d'environnement :
root@serveur-1:~$ export OS_REGION_NAME=GRA
  • Configurez la clé sur le conteneur source :
root@serveur-1:~$ swift post --sync-key "$sharedKey" containerGRA
  • Configurez le destinataire sur le conteneur source :
root@serveur-1:~$ swift post --sync-to "$destContainer" containerGRA
  • Comme précédemment, il est possible de vérifier que celle ci a bien été configurée grâce à la commande suivante :
root@serveur-1:~$ swift stat containerGRA
         Account: AUTH_b3e269xxxxxxxxxxxxxxxxxxxx2b0ba29
       Container: containerGRA
         Objects: 3
           Bytes: 15
        Read ACL:
       Write ACL:
         Sync To: //OVH_PUBLIC_CLOUD/BHS/AUTH_b3e269xxxxxxxxxxxxxxxxxxxx2b0ba29/containerBHS
        Sync Key: 4cA5j5LyaaG2wU4lDYnDmEwQSxnvIJv+y2qFnbnm6Kw=
   Accept-Ranges: bytes
      Connection: close
     X-Timestamp: 1444813114.55493
      X-Trans-Id: B2210C05:879E_052711B1:01BB_561E559B_24AE:6B1B
X-Storage-Policy: Policy-0
    Content-Type: text/plain; charset=utf-8

Vérification de la synchronisation

Après quelques instants (en fonction du nombre et de la taille des fichiers à envoyer), il est possible de vérifier que la synchronisation s'est bien déroulée, en listant simplement les fichiers dans chacun des conteneurs.

  • Listez les fichiers présents sur le conteneur source :
root@serveur-1:~$ swift list containerGRA
test1.txt
test2.txt
test3.txt
  • Listez les fichiers présents sur le conteneur destinataire :
root@serveur-1:~$ swift list containerBHS
test1.txt
test2.txt
test3.txt

Inverser la synchronisation entre deux conteneurs

Pour inverser la synchronisation entre deux conteneurs, la métadonnée --sync-to doit être supprimée du conteneur source et redéclarée sur l'autre conteneur, qui deviendra alors le nouveau conteneur source.

N'oubliez pas de changer également la région dans la nouvelle URL sync-to.

root@serveur-1:~$ swift post -H "X-Container-Sync-To:" containerGRA
root@serveur-1:~$ export destContainer="//OVH_PUBLIC_CLOUD/GRA/AUTH_b3e269xxxxxxxxxxxxxxxxxxxx2b0ba29/containerGRA"
root@serveur-1:~$ export OS_REGION_NAME=BHS
root@serveur-1:~$ swift post --sync-to "$destContainer" containerBHS

Arrêter la synchronisation entre deux conteneurs

Afin d'arrêter la synchronisation entre deux conteneurs, il faut supprimer les métadonnées --sync-key et --sync-to.

swift post -H "X-Container-Sync-Key:" containerGRA
swift post -H "X-Container-Sync-To:" containerGRA

Ce guide est aussi utilisable pour une migration d'objets de RunAbove vers Public Cloud.

Aller plus loin

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Échangez avec notre communauté d'utilisateurs.

Articles associés