Connecter le stockage

Une fois qu’un backend de stockage objet compatible S3 est disponible - qu’il soit auto-hébergé ou basé sur le cloud - Relution doit être configuré pour l’utiliser.


Prérequis

Les informations suivantes sont nécessaires, à demander auprès du fournisseur de stockage objet :

ParamètreDescription
EndpointL’URL de l’API S3. Facultatif pour AWS S3, l’endpoint étant alors déduit de la région.
Access KeyL’ID de la clé d’authentification
Secret KeyLe secret d’authentification
Nom du bucketLe nom du bucket de stockage. Relution ne crée pas le bucket lui-même, il doit donc déjà exister et n’est utilisé que par cette instance Relution.
RégionRégion du bucket (facultatif, par défaut eu-west-1). Pour AWS S3, la région réelle du bucket, par exemple eu-central-1.

Si l’Access Key et la Secret Key restent vides, Relution s’authentifie via le profil d’instance. Cela n’est utile que pour un fonctionnement sur AWS EC2 avec un rôle IAM attribué.

Les exemples de configuration ci-dessous utilisent des valeurs d’exemple correspondant à Installer SeaweedFS →. Pour un backend ou un fournisseur différent, adapter ces valeurs en conséquence.


Configuration

Choisir une des deux options suivantes. Les deux permettent d’obtenir le même résultat.

Option A : utilisation de application.yml

Ajouter ce qui suit à l’application.yml :

relution:
  storage:
    resourceStorageType: S3
    s3:
      customEndpoint: http://seaweedfs:8333
      accessKey: %ACCESS-KEY%
      secretKey: %SECRET-KEY%
      bucketName: relution
      region: eu-west-1 # facultatif, par défaut : eu-west-1

Option B : utilisation de variables d’environnement

Ajouter ces variables d’environnement au service relution dans le compose.yaml :

services:
  relution:
    environment:
      - RELUTION_STORAGE_RESOURCESTORAGETYPE=S3
      - RELUTION_STORAGE_S3_CUSTOMENDPOINT=http://seaweedfs:8333
      - RELUTION_STORAGE_S3_ACCESSKEY=%ACCESS-KEY%
      - RELUTION_STORAGE_S3_SECRETKEY=%SECRET-KEY%
      - RELUTION_STORAGE_S3_BUCKETNAME=relution
      - RELUTION_STORAGE_S3_REGION=eu-west-1 # facultatif, par défaut : eu-west-1

Les valeurs sont indiquées sans guillemets, car dans cette forme de liste, Docker Compose conserve les guillemets comme partie de la valeur. Les entrées existantes sous environment: (par exemple TZ) sont conservées.

Si le stockage objet doit être chiffré avec une clé fournie par le client, cela doit être fait avant le premier démarrage : Chiffrement côté serveur (SSE-C) →


Démarrer les services

  1. Télécharger les images les plus récentes :

    docker compose pull
    
  2. Démarrer ou redémarrer les conteneurs :

    docker compose up -d
    
  3. Relution commence automatiquement la migration du contenu de la table de base de données resource vers le bucket de stockage objet.

Tous les contenus ne sont pas transférés dans le bucket :

  • Les fichiers jusqu’à 512 Ko restent dans la base de données (relution.storage.s3.smallFileThreshold ; la valeur 0 désactive cette règle).
  • Les certificats et les clés privées restent toujours chiffrés dans la base de données.

La première migration démarre au premier démarrage avec le stockage objet. Les ressources encore présentes dans la base de données sont ensuite traitées chaque jour à 3 h 00 (relution.storage.s3.resourceMigrationSchedule). Les transferts ayant échoué sont relancés au bout de 5 minutes.


Surveiller la progression

Observer la progression de la migration dans les logs :

docker logs -f relution

Chaque fichier transféré vers le stockage objet apparaît sous la forme Saving file <UUID> in S3 at key <Key>, les fichiers volumineux sous la forme Saving large file <UUID> in S3 via multipart upload. Avec le niveau de log par défaut, Relution n’affiche ni nombre total ni pourcentage. Les transferts ayant échoué apparaissent sous la forme Scheduling retry attempt for resource migration of <UUID> et sont relancés plus tard. Les ressources qui ne peuvent pas être migrées apparaissent sous la forme Won't migrate resource <UUID>.

Il est également possible de vérifier que des fichiers sont créés en consultant le backend de stockage objet (par exemple via l’interface web de SeaweedFS ou la console du fournisseur cloud).


Remarques importantes

Top