Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
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:
-
Die s3fs-(OCI Object Storage-)Schreibperformance kann ein Engpass sein: Das direkte Schreiben in OCI Object Storage mit s3fs ist im Vergleich zum lokalen Datenträger langsamer.
-
Das Synchronisieren großer Dateien kann langsam sein: Das Schreiben und Lesen großer Dateien direkt aus OCI Object Storage kann Minuten statt Sekunden dauern.
-
Synchronisierungsvorteil auf Blockebene verloren: Da OCI Object Storage vollständige Objektschreibvorgänge erfordert, wird die Synchronisierungseffizienz auf Blockebene von Syncthing verringert.
-
Best Practice: Synchronisieren Sie zuerst lokal, und verschieben Sie dann Dateien in OCI Object Storage.
Wann ist Syncthing eine gute Idee?
-
Am besten für die Echtzeit-Synchronisierung, insbesondere für hochfrequente kleine Dateiänderungen über Regionen hinweg.
-
Ideal für bidirektionale Synchronisierung, im Gegensatz zu OCI Functions, die zusätzliche Logik für bidirektionale Updates erfordern.
-
Ideal für die Synchronisierung von Hybrid-Cloud oder On-Premises mit OCI, wenn eine direkte OCI Object Storage-Integration nicht möglich ist.
-
Am besten beim Synchronisieren des lokalen VM-Speichers: Vermeiden Sie die Verwendung von s3fs gemounteten Buckets für die direkte Synchronisierung.
-
Nicht ideal für große Batchdateiübertragungen: OCI Functions verarbeitet diese effizienter mit der Objektverarbeitung.
Ziele
-
Stellen Sie einen OCI Resource Manager-Stack in zwei Regionen bereit, um automatisch zwei OCI Compute-Instanzen mit vorinstallierter Synchronisierung bereitzustellen.
-
Konfigurieren Sie die Synchronisierung auf beiden VMs, um eine dezentrale Echtzeitsynchronisierung von lokalem Speicher und von OCI Object Storage gemounteten Verzeichnissen über mehrere Regionen hinweg zu ermöglichen.
Voraussetzungen
-
Zugriff auf einen OCI-Mandanten mit zwei aktivierten Regionen für die regionsübergreifende Synchronisierung.
-
Berechtigungen zum Erstellen und Verwalten von OCI Compute-Instanzen, OCI Object Storage-Buckets und Netzwerkressourcen.
-
Ein vorhandenes VCN mit einem öffentlichen Subnetz in jeder Region für das VM-Deployment.
-
Vorhandene OCI Object Storage-Buckets in beiden Regionen, die für die Synchronisierung verwendet werden.
-
Ein Kunden-Secret-Key für das Dateisystem S3 (s3fs), um OCI-Objektspeicher-Buckets auf den VMs zu mounten.
Aufgabe 1: Erforderliche Informationen für das VM-Deployment vorbereiten
-
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.
-
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.
-
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.
-
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.
-
Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Profil, klicken Sie auf Ihren Benutzernamen und auf Kunden-Secret-Keys.
-
Klicken Sie auf Secret Key generieren, und geben Sie einen Namen wie
s3fs-access
ein. -
Kopieren Sie den generierten Schlüssel, wie wir ihn später in Aufgabe 2 verwenden.
-
Klicken Sie auf Zugriffsschlüssel, und kopieren Sie den Wert, wie er später in Aufgabe 2 verwendet wird.
-
Kopieren Sie den Namespace von der Seite Bucket-Details, die Sie später in Aufgabe 2 verwenden werden.
-
Aufgabe 2: Stack anwenden
-
Melden Sie sich bei der OCI-Konsole an, navigieren Sie zu Entwicklerservices, Resource Manager, und klicken Sie auf Stacks.
-
Erstellen Sie den Terraform OCI Resource Manager-Stack. Weitere Informationen finden Sie unter Stack aus ZIP-Dateien erstellen.
-
Klicken Sie auf Stack erstellen.
-
Wählen Sie die Datei
.zip
aus, und fügen Sie den Stack hinzu. -
Geben Sie den Tagschlüssel ein.
-
Klicken Sie anschließend auf Weiter.
-
-
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.
-
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.
Wenn der Apply-Job erfolgreich abgeschlossen wurde, müssen die öffentlichen und privaten IPs der neu erstellten VM zurückgegeben werden.
-
Wiederholen Sie die Schritte in einer sekundären Region, um dort die zweite VM zu erstellen.
-
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:
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.
-
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
-
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.
Hinweis: Sie können im Abschnitt GUI im Abschnitt Einstellungen einen Benutzernamen und ein Kennwort festlegen, um die Warnungen zu entfernen.
-
Klicken Sie im Abschnitt Ordner auf Ordner hinzufügen, um einen lokalen VM-Ordner zu erstellen oder in die Syncthing-Administrationsschnittstelle aufzunehmen.
-
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
.
Sie können das VM-Terminal einchecken, das der neue Ordner
local_VM1
erstellt hat. - Ordnerlabel: Ein benutzerdefinierter Name zum Identifizieren des Ordners. Beispiel:
-
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. -
Konfigurieren Sie die regionsübergreifende Synchronisierungsverbindung zwischen den beiden VMs ab VM1.
-
Klicken Sie im Abschnitt Remote Devices der ersten Synchronisierungs-VM auf Add Remote Device, um einen Remoteordner aus der zweiten Region einzuschließen.
-
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.
-
Gerätename: Geben Sie einen relevanten Namen wie
remote_VM2
ein.
-
-
Wählen Sie unter Freigeben die Option
local_VM1
aus, die mit dem Remotegerät gemeinsam verwendet werden soll. -
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. -
Klicken Sie auf Speichern.
-
-
An dieser Stelle wird bei der VM1-Synchronisierung der lokale Ordner
local_VM1
grün unter Up to Date angezeigt, und das Remotegerätremote_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, wieremote_VM1
.Hinweis: Stellen Sie sicher, dass der Port
22000
in der Sicherheitsliste der VCNs geöffnet ist. -
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.
-
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 inremote_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. -
Führen Sie denselben Schritt in VM2 relativ zum eingehenden Ordner
local_VM1
aus, und ordnen Sie ihn alsremote_VM1
zu. -
Jetzt müssen die beiden VMs synchron sein und die von Syncthing verwalteten Ordner, VM1,
local_VM1
undremote_VM2
, VM2,local_VM2
undremote_VM1
.
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.
-
Lokaler Ordner (
local_VM1
): Speichert Dateien auf dieser VM. -
Remoteordner (
remote_VM2
): Gibt synchronisierte Dateien von der zweiten VM an.
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.
-
Stellen Sie eine SSH-Verbindung zu VM1 her.
ssh opc@<vm1-public-ip>
-
Führen Sie den folgenden Befehl aus, um zum lokalen, gemeinsam genutzten Syncthing-Ordner
local_VM1
zu navigieren.cd ~/local_VM1
-
Führen Sie den folgenden Befehl aus, um eine Testdatei zu erstellen.
echo "testing sync" > testVM1.txt
-
Öffnen Sie ein neues Terminal, und rufen Sie SSH unter VM2 auf.
ssh opc@<vm2-public-ip>
-
Führen Sie den folgenden Befehl aus, um zum freigegebenen Ordner auf VM2 zu navigieren.
cd ~/remote_VM1
-
Führen Sie die folgenden Befehle aus, um zu prüfen, ob die Datei angezeigt wird.
ls -l cat testVM1.txt
-
Führen Sie die gleichen Schritte unter VM2 aus, und prüfen Sie, ob eine Datei unter VM1 im Ordner
remote_VM2
angezeigt wird. -
Prüfen Sie den Synchronisierungsstatus in der Synchronisierungsschnittstelle. Öffnen Sie
http://<vm1-public-ip>:8384
undhttp://<vm2-public-ip>:8384
in einem Browser, um Logs und den Synchronisierungsstatus zu prüfen.
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:
-
VM1:
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.
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.
-
Test mit neuen großen Dateien: Dies wird schnell synchronisiert. Erstellen Sie eine große Datei lokal auf der VM in den Ordnern
local_VM1
/local_VM2
, und erstellen Sie dann das Verzeichnislogging
. Das bedeutet, dass s3fs für die regionsübergreifende OCI Object Storage-Synchronisierung verwendet wird.-
Erstellen Sie eine große Datei auf VM1.
cd local_VM1 dd if=/dev/urandom of=~/local_VM1/testfile1 bs=1M count=500
-
Prüfen Sie die Synchronisierung auf VM2.
ls -lh ~/local_VM2/
Prüfen Sie dies auch in der VMs-Syncthing-Schnittstelle.
-
Wiederholen Sie den Vorgang für das gemountete Verzeichnis s3fs (
logging
).cd ~/logging dd if=/dev/urandom of=~/logging/testfile2 bs=1M count=500
-
Prüfen Sie die Synchronisierung auf VM2 im Verzeichnis
logging
, in der Syncthing-Schnittstelle sowie im Bucket für die zweiten Regionen, um zu bestimmen, wie schnell die Datei angezeigt wird. -
Anschließend können Sie dieselben Tests mit einer Datei von wenigen GB ausführen. Erwägen Sie auch, eine große Datei direkt in den ersten Bucket hochzuladen und zu überwachen, wie schnell sie mit dem zweiten Bucket synchronisiert wird.
-
-
Testen mit geänderten großen Dateien: Dadurch werden die Änderungen auch effizient erkannt und synchronisiert. Ändern Sie lokale Dateien in den Verzeichnissen
local_VM1
/local_VM2
und vorhandene Dateien in den OCI Object Storage-Buckets, die in den VMs unter dem Verzeichnislogging
gemountet sind.-
Ändern Sie eine vorhandene Datei.
echo "New content" >> ~/local_VM1/testfile1
-
Prüfen Sie das Update auf VM2.
-
Wiederholen Sie die Schritte 1 und 2 für OCI Object Storage-Dateien.
echo "Modified content" >> ~/logging/testfile2
-
Verwandte Links
Danksagungen
- Autorin - Adina Nicolescu (Senior Cloud Engineer)
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.
Perform Cross-Region Bidirectional Synchronization in Oracle Cloud Infrastructure using Syncthing
G29464-01
Copyright ©2025, Oracle and/or its affiliates.