Aller au contenu principal

Intégrer et configurer le stockage S3

Le stockage s3 permet une forte durabilité, des performances constantes et une disponibilité maximale. Il permet aussi de s'affranchir de limites telles que le nombre d'objets dans un bucket.

Recommandations

Mise en œuvre interne (ceph, minio, etc.)

Attention à bien répartir les données sur plusieurs machines, au réseau et aux disques en dessous (ssd/nvme uniquement, cf. recommandations ci-dessus).

⚠️ 1Gb de réseau vers le s3 ne peut convenir qu'à de petites installations, tous les e-mails étant persistés dedans.

Mise en œuvre avec achat de service (scality ring, etc.)

Le point d'attention principal sera le réseau entre la messagerie et le stockage S3 : la latence est généralement élevée et des ratelimits existent.

La mise en œuvre dans le cadre d'usages avec webmail et synchronisation EAS n'est envisageable qu'à partir de la présente version 5.3 de BlueMind.

Dans le cadre de scénarios avec l'usage de clients lourds, la mise en œuvre sera d'autant plus compliquée, ceux-ci téléchargeant toute une salve de mail complets lors de leur reconnection ; la réinitialisation d'un client Outlook pouvant alors à lui tout seul saturer le quota de requêtes du fournisseur.

Sauvegarde

Le S3 est réputé durable, laissant penser qu'une sauvegarde n'est pas nécessaire. En pratique un bug logiciel ou une commande d'administration malheureuse sont des éventualités à prendre en compte.
La restauration sur un scénario catastrophe de récupération d'objets supprimés demanderait le développement de code spécifique et n'est pas gérée nativement par BlueMind à l'heure actuelle. Il est donc recommandé d'activer le versioning s3 pour que les suppressions soient simplement des marqueurs de suppression qui expirent bien plus tard, ainsi les objets ne sont pas perdus immédiatement.

Configuration du stockage S3 pour une nouvelle installation BlueMind

Pour une nouvelle installation de BlueMind, il convient d'installer BlueMind sur un serveur vierge avant de procéder à la configuration puis à l'activation du stockage S3 :

  1. Vérifier les Prérequis à l'installation
  2. Procéder à l'Installation de BlueMind

    ⚠️ Ne pas utiliser le setup wizard à cette étape.

  3. Installer la souscription manuellement.
  4. Installer les nouveaux paquets :
    apt update && apt install bm-plugin-cli-setup bm-setup-wizard
  5. Lancer l'assistant d'installation en renseignant les informations nécessaires :
    bm-cli setup install \
    --domain "nom-du-domaine.tld" \
    --external-url "url-externe.tld" \
    --set-contact "email-de-contact@domaine.tld" \
    --admin0-pass 'CHANGEME'
    --sw-pass 'CHANGEME2'
    --domain-admin-pass 'CHANGEME3'
  6. Optionnel : activer le Filehosting si désiré :
    bm-cli filehosting activate --domain bluemind.lab --group user
  7. Configurer la connexion de BlueMind au serveur de stockage S3 :

    ⚠️ L'exemple ci-dessous doit être édité et adapté à l'environnement

    cat << EOF > bm-s3-config.json
    {
    "archive_kind": "s3",
    "sds_s3_endpoint": "http://s3.bluemind.lab:8333", # ATTENTION, doit contenir le protocole sinon erreur : "The URI scheme of endpointOverride must not be null"
    "sds_s3_bucket": "NOM DU BUCKET S3",
    "sds_s3_region": "", # Peut être vide
    "sds_s3_access_key": "ACCESS KEY S3",
    "sds_s3_secret_key": "SECRET KEY S3",
    "sds_filehosting_storetype": "s3", # Optionnel, Configuration S3 pour le file hosting.
    "sds_filehosting_endpoint": "http://s3.bluemind.lab:8333", # Optionnel, Configuration S3 pour le file hosting.
    "sds_filehosting_s3_bucket": "NOM DU BUCKET S3", # Optionnel, Configuration S3 pour le file hosting.
    "sds_filehosting_s3_region": "", # Optionnel, Configuration S3 pour le file hosting.
    "sds_filehosting_s3_access_key": "ACCESS KEY S3", # Optionnel, Configuration S3 pour le file hosting.
    "sds_filehosting_s3_secret_key": "SECRET KEY S3" # Optionnel, Configuration S3 pour le file hosting.
    }
    EOF
  8. Activer la configuration S3 :
    bm-cli sysconf mset --format=json bm-s3-config.json

    💡 Aucun redémarrage de service n'est nécessaire, l'application de la configuration est immédiate.

Migrer le spool d'e-mails vers un nouveau stockage

  1. Suivre les étapes 1 à 7 de la procédure du chapitre précédent

    ⚠️ NE PAS APPLIQUER L'ÉTAPE 8 (Activer la configuration S3)

  2. Copier les e-mails de l'ancien stockage vers le nouveau grâce à la commande bm-cli sds migrate :
    bm-cli sds migrate config2.json --workers 8 --format=json --no-filehosting
    # ^ adapter le nombre de workers au besoin

    💡 Cette étape peut s'avérer longue mais peut être faite à chaud. De plus la commande peut être interrompue et relancée.

  3. Suivre à présent l'étape 8 Activer la configuration S3.
  4. Relancer la commande de copie des e-mails pour migrer un éventuel delta entre la 1ère migration et l'activation.

Migrer le Filehosting avec Rclone

La commande bm-cli sds migrate permet de migrer le Filehosting uniquement du stockage local (fichier) vers un SDS.

L'outil Rclone, quant à lui, permet de le migrer depuis le stockage local mais aussi depuis un SDS.

Dans les commandes ci-dessous :
  • src : Le serveur SDS actuel (optionnel dans le cas d'un stockage local)
  • dst : Le serveur SDS de destination
  • remplacer src:BUCKET_SOURCE par le chemin absolu du filehosting (/var/spool/bm-filehosting) dans le cas d'une migration depuis un stockage local.
  1. Installer Rclone :
    apt install rclone
  2. Configurer les remotes Rclone grâce à la commande rclone config.
  3. Préparer le fichier de configuration JSON (s3-destination.json) pour le nouveau serveur de stockage SDS (voir ci-dessus Configuration pour une nouvelle installation, Étape 7.).
  4. Copier les données depuis l'ancien stockage S3 vers le nouveau :
    rclone sync --progress src:BUCKET_SOURCE dst:BUCKET_DESTINATION

    💡 Cette étape peut être interrompue et relancée.

  5. Appliquer la configuration du nouveau stockage S3 :
    rclone sync --progress src:BUCKET_SOURCE dst:BUCKET_DESTINATION && bm-cli sysconf mset --format=json s3-destination.json

    💡 Aucun redémarrage de service n'est nécessaire.

  6. Relancer une synchronisation des données de l'ancien serveur S3 vers le nouveau pour les e-mails qui sont arrivés entre la dernière synchronisation et la bascule :
    rclone copy --progress src:BUCKET_SOURCE dst:BUCKET_DESTINATION

    ⚠️ Utilisation de la commande COPY Attention, à cette étape il FAUT utiliser la commande copy. La commande sync peut supprimer des e-mails dans la destination.

Pour aller plus loin

Consultez la documentation BlueMind en relation