À propos des instantanés Elasticsearch
Par défaut, GitHub Enterprise Server Backup Utilities et GitHub Enterprise Server Backup Service sauvegardez les données d’index de recherche en copiant des fichiers directement à partir du disque. Cette approche ne suit pas les propres recommandations d’Elasticsearch, peut consommer une grande quantité de stockage de l’appliance de sauvegarde et risque de endommager les index sauvegardés.
En guise d’alternative d’opt-in, votre instance GitHub Enterprise Server prend en charge les fonctionnalités intégrées, incrémentielles d’instantané et de restauration d’Elasticsearch. Lorsque vous configurez un fournisseur de stockage cloud pris en charge et activez la stratégie de sauvegarde d’instantané :
ghe-backupcrée un instantané incrémentiel de vos données d’index de recherche dans votre compte de stockage cloud configuré. Les instantanés incrémentiels sont plus rapides qu’une copie complète, en particulier lors des sauvegardes suivantes.ghe-restorerestaure les données d’index de recherche à partir de votre compte de stockage cloud, si un instantané correspond à la version de l’instance GitHub Enterprise Server cible.- Les instantanés sont isolés par GitHub Enterprise Server version de correctif, ce qui permet des restaurations plus sécurisées entre les versions.
Cette fonctionnalité est facultative. Si vous ne configurez pas de référentiel d’instantanés, votre instance GitHub Enterprise Server continue à sauvegarder les données de l’index de recherche à l’aide de la méthode existante basée sur le disque.
Prerequisites
- Fournisseur de stockage cloud pris en charge : Azure stockage Blob, Amazon S3 ou Google Cloud Storage (ou un service compatible avec l'une de ces API).
- Le conteneur de stockage ou le bucket que vous envisagez d’utiliser comme dépôt d’instantanés. Vous devez créer ce conteneur ou ce compartiment vous-même. GitHub Enterprise Server ne crée pas le conteneur ou le bucket pour vous, et l’enregistrement du dépôt échouera si le conteneur ou le bucket n’existe pas déjà.
Configuration d’un fournisseur de stockage d’instantanés
Configurez les paramètres suivants à l’aide de ghe-config via SSH. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».
Vous allez appliquer la configuration pour enregistrer le référentiel d’instantanés dans Elasticsearch. Le dépôt est nommé search_index_snapshots-VERSION, où VERSION est la version actuelle de GitHub Enterprise Server.
Stockage Blob Azure
-
Définissez les secrets suivants :
ghe-config secrets.elasticsearch.snapshot-provider azure ghe-config secrets.elasticsearch.snapshot.azure.container YOUR-CONTAINER ghe-config secrets.elasticsearch.snapshot.azure.account-name YOUR-STORAGE-ACCOUNT ghe-config secrets.elasticsearch.snapshot.azure.account-key YOUR-ACCOUNT-KEYVous pouvez également définir un suffixe personnalisé pour le point de terminaison Blob (par défaut :
core.windows.net) :ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX -
Appliquer la configuration d’exécution.
ghe-config-apply
Amazon S3
-
Définissez les secrets suivants :
ghe-config secrets.elasticsearch.snapshot-provider s3 ghe-config secrets.elasticsearch.snapshot.bucket-name YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.service-url YOUR-SERVICE-URL ghe-config secrets.elasticsearch.snapshot.region YOUR-AWS-REGION ghe-config secrets.elasticsearch.snapshot.access-key-id YOUR-ACCESS-KEY-ID ghe-config secrets.elasticsearch.snapshot.access-secret YOUR-ACCESS-SECRETPour l’URL du service, utilisez votre point de terminaison S3, par exemple
https://s3.us-east-1.amazonaws.com. -
Appliquer la configuration d’exécution.
ghe-config-apply
Stockage cloud de Google
-
Créez une clé de compte de service JSON avec accès à votre compartiment, puis encodez-la en base64.
base64 -w0 service-account.json -
Définissez les secrets suivants :
ghe-config secrets.elasticsearch.snapshot-provider gcs ghe-config secrets.elasticsearch.snapshot.gcs.bucket YOUR-BUCKET-NAME ghe-config secrets.elasticsearch.snapshot.gcs.credentials YOUR-BASE64-ENCODED-CREDENTIALS -
Appliquer la configuration d’exécution.
ghe-config-apply
Vérification de l’inscription
Une fois l’application de la configuration terminée, vérifiez que le référentiel de snapshots a bien été enregistré.
curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"
S’il manque un secret requis, l’application de la configuration échoue lors de l’enregistrement du référentiel. Mettez à jour les secrets et réexécutez ghe-config-apply pour réessayer.
Activation des instantanés pendant la sauvegarde et la restauration
La configuration d’un fournisseur de stockage enregistre le référentiel d’instantanés, mais vous devez également activer la stratégie de sauvegarde des instantanés afin que ghe-backup et ghe-restore l’utilisent automatiquement.
-
GitHub Enterprise Server Backup Service: Définissez la stratégie à l’aide de
ghe-configsur l’équipement.ghe-config backup.es-backup-strategy snapshot -
GitHub Enterprise Server Backup Utilities: définissez la stratégie dans votre
backup.configfichier sur l’hôte de sauvegarde.GHE_ES_BACKUP_STRATEGY=snapshotLa valeur par défaut est
rsync, qui conserve le comportement de sauvegarde sur disque existant. GitHub Enterprise Server Backup Utilities stocke uniquement les métadonnées d’instantané localement ; Le contenu des captures instantanées reste dans votre stockage cloud configuré.
Si vous ne définissez pas de stratégie de sauvegarde, le référentiel d’instantanés peut toujours être géré manuellement, mais ghe-backup et ghe-restore continueront d’utiliser la méthode sur disque.
Gestion manuelle des instantanés
Vous pouvez gérer des captures instantanées Elasticsearch directement à l’aide des commandes suivantes. Exécutez n’importe quelle commande avec l’indicateur -h pour obtenir des informations d’utilisation.
| Commande | Description |
|---|---|
ghe-es-create-snapshot | Crée un nouvel instantané dans le référentiel configuré. |
ghe-es-list-snapshots | Liste les dépôts d’instantanés ou les instantanés dans un dépôt. |
ghe-es-restore-snapshot | Restaure les index de recherche à partir d’un instantané. |
Conseil
Pour les sauvegardes et restaurations de routine, utilisez GitHub Enterprise Server Backup Utilities ou GitHub Enterprise Server Backup Service plutôt que ces commandes directement. L’outil de sauvegarde coordonne les captures instantanées Elasticsearch avec le reste des données de votre instance pour garantir une sauvegarde ou une restauration cohérentes. Utilisez les commandes manuelles uniquement lorsque vous devez gérer les instantanés d’index de recherche indépendamment d’une sauvegarde ou d’une restauration complète de l’instance.
Restauration d’un instantané à partir d’une version antérieure
Vous pouvez restaurer un instantané créé par une version antérieure GitHub Enterprise Server vers une version ultérieure. Vous ne pouvez pas restaurer un instantané d’une version ultérieure vers une version antérieure.
-
Lister les instantanés disponibles pour la version antérieure.
ghe-es-list-snapshots -v 3.14.0 -
Restaurez l’instantané que vous voulez.
ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
Elasticsearch met automatiquement à niveau les index restaurés au format de la version actuelle.
Gestion du stockage des instantanés
Les instantanés Elasticsearch sont incrémentiels, mais votre compte de stockage cloud peut toujours accumuler d’anciens instantanés au fil du temps. Pour éviter la croissance du stockage non liée, configurez une stratégie de cycle de vie avec votre fournisseur de stockage pour supprimer automatiquement les captures instantanées antérieures à vos besoins de rétention. Pour plus d’informations, consultez la documentation de votre fournisseur :