Skip to main content
Skip to content

Konfigurieren von Elasticsearch-Momentaufnahmen

Sie können die Verwendung eines vom Kunden verwalteten Cloudspeicheranbieters für native Elasticsearch-Momentaufnahmen und Wiederherstellungen konfigurieren Ihre GitHub Enterprise Server-Instance , anstatt Suchindexdaten direkt vom Datenträger zu kopieren.

Wer kann dieses Feature verwenden?

Site administrators can configure Elasticsearch snapshot storage.

Informationen zu Elasticsearch-Momentaufnahmen

Standardmäßig sichern GitHub Enterprise Server Backup Utilities und GitHub Enterprise Server Backup Service Suchindexdaten, indem sie Dateien direkt vom Datenträger kopieren. Dieser Ansatz folgt nicht den eigenen Empfehlungen von Elasticsearch, kann eine große Menge an Backup Appliance-Speicher verbrauchen und birgt ein gewisses Risiko, die gesicherten Indizes zu beschädigen.

Als optionale Alternative unterstützt Ihre GitHub Enterprise Server-Instance die integrierte inkrementelle Snapshot- und Restore-Funktion von Elasticsearch. Wenn Sie einen unterstützten Cloudspeicheranbieter konfigurieren und die Snapshot-Sicherungsstrategie aktivieren:

  • ghe-backup erstellt einen inkrementellen Snapshot der Daten Ihres Suchindexes in Ihrem konfigurierten Cloud-Speicherkonto. Inkrementelle Snapshots sind schneller als eine vollständige Sicherung, insbesondere bei nachfolgenden Sicherungen.
  • ghe-restore Stellt Suchindexdaten aus Ihrem Cloudspeicherkonto wieder her, wenn eine Momentaufnahme vorhanden ist, die der Version der Zielinstanz GitHub Enterprise Server entspricht.
  • Momentaufnahmen sind für jede GitHub Enterprise Server-Patchversion isoliert, was sicherere Rollbackvorgänge zwischen Versionen ermöglicht.

Diese Funktion erfordert eine aktive Anmeldung. Wenn Sie kein Snapshot-Repository konfigurieren, sichert Ihre GitHub Enterprise Server-Instance Suchindexdaten weiterhin mit der vorhandenen, auf Datenträgern basierenden Methode.

Voraussetzungen

  • Ein unterstützter Cloudspeicheranbieter: Azure Blob Storage, Amazon S3 oder Google Cloud Storage (oder ein Dienst, der mit einer dieser APIs kompatibel ist).
  • Der Speichercontainer oder Bucket, den Sie als Snapshot-Repository verwenden möchten. Sie müssen diesen Container oder Bucket selbst erstellen. GitHub Enterprise Server erstellt sie nicht für Sie, und die Repositoryregistrierung schlägt fehl, wenn der Container oder Bucket noch nicht vorhanden ist.

Konfigurieren eines Snapshotspeicheranbieters

Konfigurieren Sie die folgenden Einstellungen über ghe-config SSH. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen.

Sie wenden die Konfiguration an, um das Snapshot-Repository bei Elasticsearch zu registrieren. Das Repository heißt search_index_snapshots-VERSION, wobei VERSION die aktuelle GitHub Enterprise Server-Release-Version ist.

Azure Blob-Speicher

  1. Legen Sie die folgenden geheimen Schlüssel fest:

    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-KEY
    

    Optional können Sie ein benutzerdefiniertes Blob-Endpunktsuffix festlegen (Standardwert: core.windows.net):

    ghe-config secrets.elasticsearch.snapshot.azure.endpoint-suffix YOUR-ENDPOINT-SUFFIX
    
  2. Führen Sie die Konfiguration aus.

    ghe-config-apply
    

Amazon S3

  1. Legen Sie die folgenden geheimen Schlüssel fest:

    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-SECRET
    

    Verwenden Sie für die Dienst-URL Ihren S3-Endpunkt, z. B https://s3.us-east-1.amazonaws.com. .

  2. Ausführungskonfiguration anwenden.

    ghe-config-apply
    

Google Cloud Storage

  1. Erstellen Sie einen JSON-Dienstkontoschlüssel mit Zugriff auf Ihren Bucket, und codieren Sie ihn dann als base64.

    base64 -w0 service-account.json
    
  2. Legen Sie die folgenden geheimen Schlüssel fest:

    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
    
  3. Führen Sie die Konfiguration aus.

    ghe-config-apply
    

Überprüfen der Registrierung

Vergewissern Sie sich nach Abschluss der Konfiguration, dass das Snapshot-Repository registriert wurde.

curl -k "http://127.0.0.1:9200/_snapshot/search_index_snapshots-$(ghe-version -v)/_status"

Wenn ein erforderliches Secret fehlt, schlägt das Anwenden der Konfiguration bei der Registrierung des Repositorys fehl. Aktualisieren Sie die Secrets und führen Sie ghe-config-apply erneut aus, um es erneut zu versuchen.

Aktivieren von Momentaufnahmen während der Sicherung und Wiederherstellung

Beim Konfigurieren eines Speicheranbieters wird das Snapshot-Repository registriert, aber Sie müssen auch die Snapshot-Sicherungsstrategie aktivieren, damit ghe-backup und ghe-restore sie automatisch verwenden.

  • GitHub Enterprise Server Backup Service: Legen Sie die Strategie mithilfe von ghe-config auf der Appliance fest.

    ghe-config backup.es-backup-strategy snapshot
    
  • GitHub Enterprise Server Backup Utilities: Legen Sie die Strategie in Ihrer backup.config Datei auf dem Sicherungshost fest.

    GHE_ES_BACKUP_STRATEGY=snapshot
    

    Der Standardwert ist rsync, wodurch das vorhandene datenträgerbasierte Sicherungsverhalten beibehalten wird. GitHub Enterprise Server Backup Utilities speichert nur Momentaufnahmenmetadaten lokal; Snapshotinhalte verbleiben in Ihrem konfigurierten Cloudspeicher.

Wenn Sie keine Sicherungsstrategie festlegen, kann das Snapshot-Repository weiterhin manuell verwaltet werden, aber ghe-backup``ghe-restore weiterhin die datenträgerbasierte Methode verwenden.

Manuelles Verwalten von Momentaufnahmen

Sie können Snapshots von Elasticsearch direkt mithilfe der folgenden Befehle verwalten. Führen Sie einen beliebigen Befehl mit dem -h Kennzeichen für Verwendungsinformationen aus.

BefehlDescription
ghe-es-create-snapshotErstellt eine neue Momentaufnahme im konfigurierten Repository.
ghe-es-list-snapshotsListet Snapshot-Repositorys oder Snapshots innerhalb eines Repositorys auf.
ghe-es-restore-snapshotStellt Suchindizes aus einer Momentaufnahme wieder her.

Tipp

Verwenden Sie für regelmäßige Sicherungen und Wiederherstellungen GitHub Enterprise Server Backup Utilities oder GitHub Enterprise Server Backup Service anstelle dieser Befehle direkt. Die Sicherungstools koordinieren Elasticsearch-Momentaufnahmen mit den restlichen Daten Ihrer Instanz, um eine konsistente Sicherung oder Wiederherstellung sicherzustellen. Verwenden Sie die manuellen Befehle nur, wenn Sie Snapshots des Suchindex unabhängig von einer vollständigen Instanzsicherung oder Wiederherstellung verwalten müssen.

Wiederherstellen einer Momentaufnahme aus einer früheren Version

Sie können eine Momentaufnahme, die von einer früheren GitHub Enterprise Server Version erstellt wurde, in einer späteren Version wiederherstellen. Sie können eine Momentaufnahme von einer späteren Version nicht in einer früheren Version wiederherstellen.

  1. Verfügbare Snapshots für die ältere Version auflisten.

    ghe-es-list-snapshots -v 3.14.0
    
  2. Stellen Sie die gewünschte Momentaufnahme wieder her.

    ghe-es-restore-snapshot -v 3.14.0 -s SNAPSHOT-NAME
    

Elasticsearch aktualisiert die wiederhergestellten Indizes automatisch auf das Format der aktuellen Version.

Verwalten des Snapshotspeichers

Elasticsearch-Momentaufnahmen sind inkrementell, aber Ihr Cloudspeicherkonto kann im Laufe der Zeit weiterhin alte Momentaufnahmen sammeln. Um ein ungebundenes Speicherwachstum zu vermeiden, konfigurieren Sie eine Lifecycle-Richtlinie mit Ihrem Speicheranbieter, um Snapshots, die älter als Ihre Aufbewahrungsanforderungen sind, automatisch zu löschen. Weitere Informationen finden Sie in der Dokumentation Ihres Anbieters: