Hinweis:

Regionsübergreifende bidirektionale Synchronisierung in Oracle Cloud Infrastructure mit Syncthing ausführen

Einführung

Die regionsübergreifende Objektspeichersynchronisierung ist für verschiedene Cloud-Workloads unerlässlich, einschließlich Datensicherung, Disaster Recovery und Zugriff über mehrere Regionen. Oracle Cloud Infrastructure (OCI) bietet zwar Replikationsfunktionen für OCI Object Storage, bietet aber keine native bidirektionale Synchronisierungslösung. Diese Einschränkung bedeutet, dass Benutzer sich auf benutzerdefinierte Implementierungen verlassen müssen, um Dateien regionsübergreifend zu synchronisieren.

Syncthing, ein Open-Source-Tool für dezentrale Dateisynchronisierung, bietet eine kontinuierliche, bidirektionale Synchronisierung, die alternativ in Echtzeit funktioniert. Im Gegensatz zu OCI Functions, die für die Objektreplikation auf einem ereignisgesteuerten Modell basieren, synchronisiert Syncthing ganze Dateistrukturen effizient zwischen virtuellen Maschinen (VMs) und unterstützt lokale und OCI Object Storage-gemountete Verzeichnisse.

In diesem Tutorial stellen wir Syncthing auf OCI Compute-Instanzen über zwei Regionen hinweg mit einem OCI Resource Manager-Stack bereit, um eine automatische, bidirektionale Synchronisierung zwischen lokalem VM-Speicher und OCI Object Storage-gemounteten Verzeichnissen zu ermöglichen.

Hinweise

Wenn Sie die Synchronisierung mit OCI Object Storage mit s3fs mounten:

Wann ist Syncthing eine gute Idee?

Ziele

Voraussetzungen

Aufgabe 1: Erforderliche Informationen für das VM-Deployment vorbereiten

  1. Laden Sie den OCI Resource Manager-Stack herunter. Dieser Stack automatisiert das Deployment einer VM, auf der Oracle Linux 8 auf einer VM.Standard.E5 ausgeführt wird. Flex-Ausprägung. Es installiert Syncthing mit CloudInit, mountet einen vorhandenen OCI-Bucket und konfiguriert den Zugriff mit s3fs. Die VM wird mit SSH-Zugriff und einer öffentlichen IP bereitgestellt und zur einfachen Identifizierung gekennzeichnet. Weitere Informationen finden Sie unter OCI Resource Manager-Stack.

  2. Erstellen Sie ein VCN mit einem öffentlichen Subnetz in beiden Zielregionen.

    Der Stack wird an beiden Standorten bereitgestellt, um eine VM mit Syncthing für die bidirektionale regionsübergreifende Speichersynchronisierung bereitzustellen. Nach der Bereitstellung kann im Browser über die öffentliche IP der VM auf Syncthing zugegriffen werden.

  3. Stellen Sie sicher, dass in jeder Region, in der die Tests durchgeführt werden, ein OCI Object Storage-Bucket vorhanden ist. Die Sichtbarkeit des Buckets kann Privat lauten.

  4. Erstellen Sie einen Customer Secret Key für den s3fs-Mount. Der Kunden-Secret-Key wird für den Zugriff auf OCI Object Storage verwendet.

    1. Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Profil, klicken Sie auf Ihren Benutzernamen und auf Kunden-Secret-Keys.

      Profil - Kunden-Secret-Key

    2. Klicken Sie auf Secret Key generieren, und geben Sie einen Namen wie s3fs-access ein.

    3. Kopieren Sie den generierten Schlüssel, wie wir ihn später in Aufgabe 2 verwenden.

      Kunden-Secret-Zugriffsschlüssel

    4. Klicken Sie auf Zugriffsschlüssel, und kopieren Sie den Wert, wie er später in Aufgabe 2 verwendet wird.

      Kunden-Secret-Zugriffsschlüssel

    5. Kopieren Sie den Namespace von der Seite Bucket-Details, die Sie später in Aufgabe 2 verwenden werden.

      Object Storage-Bucket-Namespace

Aufgabe 2: Stack anwenden

  1. Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Entwicklerservices, Resource Manager, und klicken Sie auf Stacks.

    OCI Resource Manager-Stacks

  2. Erstellen Sie den Terraform OCI Resource Manager-Stack. Weitere Informationen finden Sie unter Stack aus ZIP-Dateien erstellen.

    1. Klicken Sie auf Stack erstellen.

    2. Wählen Sie die Datei .zip aus, und fügen Sie den Stack hinzu.

    3. Geben Sie den Tagschlüssel ein.

    4. Klicken Sie anschließend auf Weiter.

  3. Geben Sie auf der Seite Variablen konfigurieren die folgenden Informationen ein.

    • Compartment: Geben Sie das Compartment ein.
    • VCN und Subnetz: Wählen Sie ein vorhandenes VCN und ein öffentliches Subnetz aus.
    • Ändern Sie gegebenenfalls den vm-Anzeigenamen.
    • SSH-Public Key: Geben Sie den SSH-Public Key für die VM ein.
    • Availability-Domain: Wählen Sie die Availability-Domain aus.
    • OCID des Kunden-Secret-Keys und des Kunden-Secret-Access-Keys: Geben Sie die OCID des Kunden-Secret-Keys und den in Aufgabe 1 erstellten Kunden-Secret-Access-Key ein.
    • Gruppenname: Geben Sie den Bucket-Namen ein.
    • Object Storage-Namespace: Wählen Sie den Objektspeicher-Namespace aus.
  4. Klicken Sie auf Weiter, um die Informationen zu prüfen. Wenn alles in Ordnung ist, wählen Sie Anwenden ausführen aus, und klicken Sie auf Erstellen.

    OCI ORM Apply-Stack

    Wenn der Apply-Job erfolgreich abgeschlossen wurde, müssen die öffentlichen und privaten IPs der neu erstellten VM zurückgegeben werden.

    ORM-Stackausgabe

  5. Wiederholen Sie die Schritte in einer sekundären Region, um dort die zweite VM zu erstellen.

  6. Stellen Sie sicher, dass die OCI Object Storage-Buckets auf VM-Ebene in /home/opc/logging gemountet sind, indem Sie mit den folgenden Befehlen eine SSH-Verbindung herstellen.

    mount | grep s3fs
    

    Wenn der Bucket erfolgreich gemountet wurde, sollte die Ausgabe wie folgt angezeigt werden:

    Informationen zum Mount-Bucket

    Dadurch wird bestätigt, dass s3fs den Bucket auf einer der VMs in /home/opc/logging gemountet hat.

Aufgabe 3: Synchronisierung konfigurieren

Nachdem beide VMs in den beiden Regionen bereitgestellt wurden, konfigurieren Sie die Synchronisierung auf jeder VM, indem Sie die folgenden Schritte ausführen, um den Speicher zwischen ihnen zu synchronisieren.

  1. Kopieren Sie die öffentliche IP der VM in der ersten Region, und verwenden Sie sie im Browser, um auf die Syncthing-Schnittstelle zuzugreifen. Geben Sie die folgende URL ein.

    http://<vm1-public-ip>:8384
    
  2. Nach dem Zugriff auf die Schnittstelle wird die Syncthing-Schnittstelle angezeigt, die dem folgenden Bild ähnelt. Ordner und Remotegeräte sind die Bereiche, die Sie im nächsten Schritt für die Synchronisierung konfigurieren.

    Synchronisierungsbildschirm

    Hinweis: Sie können im Abschnitt GUI im Abschnitt Einstellungen einen Benutzernamen und ein Kennwort festlegen, um die Warnungen zu entfernen.

  3. Klicken Sie im Abschnitt Ordner auf Ordner hinzufügen, um einen lokalen VM-Ordner zu erstellen oder in die Syncthing-Administrationsschnittstelle aufzunehmen.

    Ordner zum Hinzufügen synchronisieren

  4. Geben Sie die folgenden Informationen ein, um einen lokalen Ordner zu konfigurieren, und klicken Sie auf Speichern.

    • Ordnerlabel: Ein benutzerdefinierter Name zum Identifizieren des Ordners. Beispiel: local_VM1.
    • Ordnerpfad: Der Verzeichnispfad des lokalen Ordners. Beispiel: ~/local_VM1.

    Lokaler Ordner wird synchronisiert

    Sie können das VM-Terminal einchecken, das der neue Ordner local_VM1 erstellt hat.

  5. Wiederholen Sie die Schritte 1 bis 4 in der VM aus der sekundären Region, und fügen Sie den Ordner local_VM2 in der VM2-Synchronisierungsschnittstelle hinzu.

  6. Konfigurieren Sie die regionsübergreifende Synchronisierungsverbindung zwischen den beiden VMs ab VM1.

    1. Klicken Sie im Abschnitt Remote Devices der ersten Synchronisierungs-VM auf Add Remote Device, um einen Remoteordner aus der zweiten Region einzuschließen.

      Entferntes Gerät hinzufügen

    2. Geben Sie unter Allgemein die folgenden Informationen ein.

      • Geräte-ID: Dies ist die ID des zweiten Synchronisierungsgeräts. Öffnen Sie auf VM2 die Synchronisierungsschnittstelle, navigieren Sie zu Aktionen, ID anzeigen, kopieren Sie den angezeigten Wert, und fügen Sie ihn in dieses Feld ein.

        Entferntes Gerät - ID anzeigen

      • Gerätename: Geben Sie einen relevanten Namen wie remote_VM2 ein.

        Externes Gerät – Allgemeiner Tab

    3. Wählen Sie unter Freigeben die Option local_VM1 aus, die mit dem Remotegerät gemeinsam verwendet werden soll.

      Externes Gerät – Tab teilen

    4. Geben Sie unter Erweitert tcp://<vm2-public-ip>:22000 in Adressen ein, 22000 ist der TCP-Port, der für die Synchronisierung von Daten verwendet wird.

    5. Klicken Sie auf Speichern.

  7. An dieser Stelle wird bei der VM1-Synchronisierung der lokale Ordner local_VM1 grün unter Up to Date angezeigt, und das Remotegerät remote_VM2 zeigt Disconnected an.

    Um die Verbindung abzuschließen, führen Sie die gleichen Schritte beim Synchronisieren von VM2 aus. Verwenden Sie dabei die äquivalenten Daten, die beim Synchronisieren von VM1 gesammelt wurden, geben Sie Geräte-ID, tcp://<vm1-public-ip>:22000 als Adressen und Gerätename ein, wie remote_VM1.

    Hinweis: Stellen Sie sicher, dass der Port 22000 in der Sicherheitsliste der VCNs geöffnet ist.

  8. Nach den entsprechenden Konfigurationen müssen Sie in jeder Syncthing-Schnittstelle aufgefordert werden, das Hinzufügen des Remoteordners zu akzeptieren. Klicken Sie auf Hinzufügen.

    Remoteordner akzeptieren

  9. Sie werden aufgefordert, ihn lokal mit bestimmten Details zu speichern. Beispiel: Auf VM1 werden Sie aufgefordert, die eingehende local_VM2 zu speichern. Sie können den Namen für die eingehende Datei auf VM1 in remote_VM2 ändern, um eine klarere Anzeige zu erhalten. Außerdem haben Sie die Möglichkeit, es einem lokalen VM1-Pfad zuzuordnen. Dabei kann es sich um einen beliebigen Pfad handeln. Ein neuer Ordner wird erstellt, wenn er nicht vorhanden ist. Sie können auch ~/local_VM1 auswählen, d.h. der Inhalt der beiden Ordner aus den beiden VMs wird an demselben Speicherort zusammengeführt. Geben Sie in unserem Beispiel den Pfad ~/remote_VM2 ein.

  10. Führen Sie denselben Schritt in VM2 relativ zum eingehenden Ordner local_VM1 aus, und ordnen Sie ihn als remote_VM1 zu.

  11. Jetzt müssen die beiden VMs synchron sein und die von Syncthing verwalteten Ordner, VM1, local_VM1 und remote_VM2, VM2, local_VM2 und remote_VM1.

    Ordner synchronisiert

Aufgabe 4: Synchronisierung des lokalen Speichers testen

Um die Synchronisierungssynchronisierung zu testen, melden Sie sich mit SSH bei jeder VM an. Im opc-Home-Verzeichnis finden Sie zwei Ordner.

Um die Synchronisierung zu überprüfen, fügen wir eine Datei im lokalen Ordner auf einer VM hinzu oder ändern sie und prüfen, ob die Änderungen im entsprechenden Ordner auf der Remote-VM angezeigt werden. Darüber hinaus überwachen wir die Syncthing-Schnittstelle oder -Logs, um die erfolgreiche Synchronisierung zwischen den beiden OCI-Regionen zu bestätigen.

  1. Stellen Sie eine SSH-Verbindung zu VM1 her.

    ssh opc@<vm1-public-ip>
    
  2. Führen Sie den folgenden Befehl aus, um zum lokalen, gemeinsam genutzten Syncthing-Ordner local_VM1 zu navigieren.

    cd ~/local_VM1
    
  3. Führen Sie den folgenden Befehl aus, um eine Testdatei zu erstellen.

    echo "testing sync" > testVM1.txt
    
  4. Öffnen Sie ein neues Terminal, und rufen Sie SSH unter VM2 auf.

    ssh opc@<vm2-public-ip>
    
  5. Führen Sie den folgenden Befehl aus, um zum freigegebenen Ordner auf VM2 zu navigieren.

    cd ~/remote_VM1
    
  6. Führen Sie die folgenden Befehle aus, um zu prüfen, ob die Datei angezeigt wird.

    ls -l
    cat testVM1.txt
    
  7. Führen Sie die gleichen Schritte unter VM2 aus, und prüfen Sie, ob eine Datei unter VM1 im Ordner remote_VM2 angezeigt wird.

  8. Prüfen Sie den Synchronisierungsstatus in der Synchronisierungsschnittstelle. Öffnen Sie http://<vm1-public-ip>:8384 und http://<vm2-public-ip>:8384 in einem Browser, um Logs und den Synchronisierungsstatus zu prüfen.

    Synchronisierte Dateien

Aufgabe 5: Synchronisierung des OCI Object Storage-Bucket-Inhalts testen

Die Buckets werden auf den VMs gemountet, die im Verzeichnis /home/opc/logging bereitgestellt sind. Um Dateien in den gemounteten Buckets zu testen und zu synchronisieren, müssen Sie die vorherigen Schritte wiederholen, um das VM-Verzeichnis logging als lokalen Ordner hinzuzufügen, und es dann über die Remotegeräte freigeben. Sie sehen etwas Ähnliches:

Erstellen Sie als Nächstes eine Datei im Verzeichnis logging, damit sie im OCI-Bucket angezeigt wird, und synchronisieren Sie sie bei korrekter Konfiguration mit dem Verzeichnis VM2 logging, also auch im zweiten Bucket aus dem regionsübergreifenden Bucket.

Bucket-Synchronisierung

Aufgabe 6: Weitere Tests ausführen

Es gibt zwei Punkte, die Sie problemlos mit demselben Ordner und denselben gemeinsam genutzten Geräten wie zuvor testen können.

Danksagungen

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.