Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Esegui sincronizzazione bidirezionale tra più aree in Oracle Cloud Infrastructure utilizzando la sincronizzazione
Introduzione
La sincronizzazione dello storage degli oggetti tra più aree è essenziale per vari carichi di lavoro cloud, tra cui il backup dei dati, il recupero da errori irreversibili e l'accesso tra più aree. Sebbene Oracle Cloud Infrastructure (OCI) fornisca funzionalità di replica per OCI Object Storage, non offre una soluzione di sincronizzazione bidirezionale nativa. Questo limite significa che gli utenti devono fare affidamento su implementazioni personalizzate per sincronizzare i file tra le aree.
Syncthing, uno strumento di sincronizzazione dei file open source e decentralizzato, fornisce una sincronizzazione bidirezionale continua in alternativa che funziona in tempo reale. A differenza di OCI Functions, che si basa su un modello basato su eventi per la replica degli oggetti, la sincronizzazione sincronizza in modo efficiente intere strutture di file tra le virtual machine (VM) supportando al contempo le directory attivate dallo storage degli oggetti locale e OCI.
In questa esercitazione verrà distribuita la sincronizzazione sulle istanze di OCI Compute in due aree utilizzando uno stack di OCI Resource Manager, abilitando la sincronizzazione automatica bidirezionale tra lo storage VM locale e le directory attivate di OCI Object Storage.
Considerazioni
Quando esegui il MOUNT della sincronizzazione con lo storage degli oggetti OCI utilizzando s3fs:
-
s3fs (OCI Object Storage) Le prestazioni di scrittura possono rappresentare un punto critico: la scrittura diretta nello storage degli oggetti OCI utilizzando s3fs è più lenta rispetto al disco locale.
-
La sincronizzazione di file di grandi dimensioni può essere lenta: la scrittura e la lettura di file di grandi dimensioni direttamente dallo storage degli oggetti OCI può richiedere minuti anziché secondi.
-
Vantaggio di sincronizzazione a livello di blocco perso: poiché lo storage degli oggetti OCI richiede scritture di oggetti completi, l'efficienza di sincronizzazione a livello di blocco di Syncthing viene ridotta.
-
Best practice: sincronizzare prima i file in locale, quindi spostarli in OCI Object Storage.
Quando Syncthing è una buona idea?
-
Ideale per la sincronizzazione in tempo reale, in particolare per le modifiche di file di piccole dimensioni ad alta frequenza in tutte le aree.
-
Ideale per la sincronizzazione bidirezionale, a differenza di OCI Functions, che richiedono logica aggiuntiva per gli aggiornamenti bidirezionali.
-
Ideale per la sincronizzazione da cloud ibrido o da on premise a OCI, dove l'integrazione diretta dello storage degli oggetti OCI non è fattibile.
-
Migliore durante la sincronizzazione dello storage VM locale: evitare di utilizzare i bucket con MOUNT s3fs per la sincronizzazione diretta.
-
Non è l'ideale per trasferimenti di file batch di grandi dimensioni: le funzioni OCI gestiscono questi dati in modo più efficiente con l'elaborazione dei singoli oggetti.
Obiettivi
-
Distribuisci uno stack di OCI Resource Manager in due aree per eseguire automaticamente il provisioning di due istanze di OCI Compute con Syncthing preinstallato.
-
Configura la sincronizzazione su entrambe le VM per abilitare la sincronizzazione decentralizzata e in tempo reale dello storage locale e delle directory di MOUNT dello storage degli oggetti OCI in più aree.
Prerequisiti
-
Accesso a una tenancy OCI con due aree abilitate per la sincronizzazione tra più aree.
-
Autorizzazioni per creare e gestire istanze di OCI Compute, bucket di OCI Object Storage e risorse di networking.
-
Una VCN esistente con una subnet pubblica in ogni area per la distribuzione delle VM.
-
Bucket di storage degli oggetti OCI esistenti in entrambe le aree, che verranno utilizzati per la sincronizzazione.
-
Chiave segreta del cliente per il file system S3 (s3fs) per eseguire il MOUNT dei bucket di storage degli oggetti OCI nelle VM.
Task 1: Preparare le informazioni necessarie per la distribuzione della VM
-
Scaricare lo stack di Resource Manager OCI. Questo stack automatizza lo sviluppo di una VM su cui è in esecuzione Oracle Linux 8 su un sito VM.Standard.E5. Forma Flex. Installa la sincronizzazione utilizzando CloudInit, installa un bucket OCI esistente e configura l'accesso utilizzando s3fs. Il provisioning della VM viene eseguito con accesso SSH, un IP pubblico e contrassegnato per facilitare l'identificazione. Per ulteriori informazioni, vedere Stack di OCI Resource Manager.
-
Crea una VCN con una subnet pubblica in entrambe le aree di destinazione.
Lo stack verrà distribuito in entrambe le posizioni per eseguire il provisioning di una VM con Syncthing per la sincronizzazione dello storage bidirezionale tra più aree. Una volta distribuito, è possibile accedere alla sincronizzazione nel browser utilizzando l'IP pubblico della VM.
-
Assicurarsi che esista un bucket di storage degli oggetti OCI in ogni area in cui verranno eseguiti i test. La visibilità del bucket può essere Privato.
-
Creare una chiave segreta del cliente per l'accesso s3fs. La chiave segreta del cliente verrà utilizzata per accedere allo storage degli oggetti OCI.
-
Eseguire il login a OCI Console, passare a Profilo, fare clic sul nome utente e sulle chiavi segrete cliente.
-
Fare clic su Genera chiave segreta e immettere un nome, ad esempio
s3fs-access
. -
Assicurarsi di copiare la chiave generata poiché verrà utilizzata in seguito nel task 2.
-
Fare clic su Chiave di accesso e copiare il valore così come verrà utilizzato in seguito nel task 2.
-
Copiare Spazio di nomi dalla pagina Dettagli bucket che verrà utilizzata in un secondo momento nel task 2.
-
Task 2: applicare lo stack
-
Eseguire il login a OCI Console, passare a Servizi per sviluppatori, Resource Manager e fare clic su Stack.
-
Creare lo stack di Resource Manager OCI Terraform. Per ulteriori informazioni, vedere Creating a Stack from a Zip File.
-
Fare clic su Crea stack.
-
Selezionare il file
.zip
e aggiungere lo stack. -
Immettere la chiave di tag.
-
Fare clic su Avanti.
-
-
Nella pagina Configura variabili, immettere le informazioni riportate di seguito.
- Compartimento: immettere il compartimento.
- VCN e subnet: selezionare una VCN esistente e una subnet pubblica.
- Modificare il nome visualizzato vm se si desidera.
- Chiave pubblica SSH: immettere la chiave pubblica SSH per la VM.
- Dominio di disponibilità: selezionare il dominio di disponibilità.
- OCID chiave segreta del cliente e chiave di accesso del segreto cliente: immettere l'OCID chiave segreta del cliente e la chiave di accesso del segreto cliente creati nel task 1.
- Nome gruppo: immettere il nome del gruppo.
- Spazio di nomi storage degli oggetti: selezionare lo spazio di nomi dello storage degli oggetti.
-
Fare clic su Next e rivedere le informazioni. Se è tutto a posto, selezionare Esegui applicazione e fare clic su Crea.
Quando il job di applicazione viene completato correttamente, deve restituire gli IP pubblici e privati della nuova VM creata.
-
Ripetere i passi in un'area secondaria per creare la seconda VM.
-
Verificare che i bucket di storage degli oggetti OCI vengano sottoposti a MOUNT in
/home/opc/logging
a livello di VM, effettuando la connessione tramite SSH utilizzando i comandi riportati di seguito.mount | grep s3fs
Se il bucket viene installato correttamente, l'output dovrebbe essere simile al seguente:
Ciò conferma che s3fs ha eseguito il MOUNT del bucket in
/home/opc/logging
su una qualsiasi delle VM.
Task 3: Configurare la sincronizzazione
Dopo aver distribuito entrambe le VM nelle due aree, configurare la sincronizzazione su ogni VM attenendosi alla procedura riportata di seguito per sincronizzare lo storage tra di esse.
-
Copiare l'IP pubblico della VM nella prima area e utilizzarlo nel browser per accedere all'interfaccia di sincronizzazione. Immettere l'URL seguente.
http://<vm1-public-ip>:8384
-
Dopo aver effettuato l'accesso all'interfaccia, verrà visualizzata l'interfaccia Syncthing simile alla seguente immagine. Le cartelle e i dispositivi remoti sono le aree che verranno configurate per la sincronizzazione nel passo successivo.
Nota: è possibile impostare un nome utente e una password nella sezione Impostazioni della GUI per rimuovere le avvertenze.
-
Nella sezione Cartelle fare clic su Aggiungi cartella per creare o includere una cartella VM locale nell'interfaccia di amministrazione di Syncthing.
-
Immettere le informazioni riportate di seguito per configurare una cartella locale e fare clic su Salva.
- Etichetta cartella: un nome riconoscibile dall'utente per identificare la cartella. Ad esempio,
local_VM1
. - Percorso cartella: il percorso della directory della cartella locale. Ad esempio,
~/local_VM1
.
È possibile eseguire il check-in del terminale VM creato dalla nuova cartella
local_VM1
. - Etichetta cartella: un nome riconoscibile dall'utente per identificare la cartella. Ad esempio,
-
Ripetere i passi da 1 a 4 nella VM dall'area secondaria e aggiungere la cartella
local_VM2
nell'interfaccia di sincronizzazione VM2. -
Configurare la connessione di sincronizzazione tra più aree tra le due VM, a partire da VM1.
-
Nella sezione Dispositivi remoti della prima VM di sincronizzazione, fare clic su Aggiungi dispositivo remoto per includere una cartella remota dalla seconda area.
-
In Generale immettere le informazioni riportate di seguito.
-
ID dispositivo: questo è l'ID del secondo dispositivo di sincronizzazione. In VM2, aprire l'interfaccia di sincronizzazione, passare a Azioni, Mostra ID, copiare il valore visualizzato e incollarlo in questo campo.
-
Nome dispositivo: immettere un nome rilevante, ad esempio
remote_VM2
.
-
-
In Condivisione, selezionare
local_VM1
da condividere con il dispositivo remoto. -
In Avanzate, immettere
tcp://<vm2-public-ip>:22000
in Indirizzi,22000
è la porta TCP utilizzata per la sincronizzazione dei dati. -
Fare clic su Salva.
-
-
A questo punto, in VM1 Syncthing, la cartella locale
local_VM1
deve essere visualizzata in verde in Up to Date e il dispositivo remotoremote_VM2
visualizzerà Disconnected.Per completare la connessione, eseguire gli stessi passi sulla sincronizzazione VM2, utilizzando i dati equivalenti raccolti dalla sincronizzazione VM1, immettere ID dispositivo,
tcp://<vm1-public-ip>:22000
come Indirizzi e Nome dispositivo, ad esempioremote_VM1
.Nota: assicurarsi che la porta
22000
sia aperta nella lista di sicurezza delle reti VCN. -
Dopo le configurazioni equivalenti dovrebbe essere richiesto in ogni interfaccia Syncthing per accettare l'aggiunta della cartella remota. Fare clic su Aggiungi.
-
Verrà richiesto di salvarlo localmente con dettagli specifici. Ad esempio, in VM1 verrà richiesto di salvare il file
local_VM2
in entrata. È possibile modificare il nome del file in VM1 inremote_VM2
per una visualizzazione più chiara. Inoltre, è possibile mapparlo a un percorso VM1 locale. Può essere un percorso qualsiasi; viene creata una nuova cartella se non esiste. È inoltre possibile selezionare~/local_VM1
, ovvero il contenuto delle due cartelle delle due VM verrà unito nella stessa posizione. Ad esempio, immettere il percorso~/remote_VM2
. -
Eseguire lo stesso passo in VM2 rispetto alla cartella
local_VM1
in entrata e mapparla comeremote_VM1
. -
Ora le due VM devono essere sincronizzate e le cartelle amministrate da Syncthing; in VM1,
local_VM1
eremote_VM2
; in VM2,local_VM2
eremote_VM1
.
Task 4: Test sincronizzazione della memorizzazione locale
Per eseguire il test della sincronizzazione, eseguire il login a ciascuna VM utilizzando SSH. All'interno della directory home di opc, troverai due cartelle.
-
Cartella locale (
local_VM1
): memorizza i file su questa VM. -
Cartella remota (
remote_VM2
): riflette i file sincronizzati dalla seconda VM.
Per verificare la sincronizzazione, aggiungeremo o modificheremo un file nella cartella locale su una VM e verificheremo se le modifiche verranno visualizzate nella cartella corrispondente sulla VM remota. Inoltre, monitoreremo l'interfaccia o i log di Syncthing per confermare la sincronizzazione riuscita tra le due region OCI.
-
SSH in VM1.
ssh opc@<vm1-public-ip>
-
Eseguire il comando seguente per passare alla cartella
local_VM1
condivisa di Syncthing locale.cd ~/local_VM1
-
Eseguire il comando seguente per creare un file di test.
echo "testing sync" > testVM1.txt
-
Aprire un nuovo terminale e SSH in VM2.
ssh opc@<vm2-public-ip>
-
Eseguire il comando seguente per passare alla cartella condivisa in VM2.
cd ~/remote_VM1
-
Eseguire i comandi seguenti per verificare se il file viene visualizzato.
ls -l cat testVM1.txt
-
Eseguire gli stessi passi in VM2 e verificare che un file venga visualizzato nella cartella VM1
remote_VM2
. -
Verificare lo stato di sincronizzazione nell'interfaccia di sincronizzazione. Aprire
http://<vm1-public-ip>:8384
ehttp://<vm2-public-ip>:8384
in un browser per controllare i log e lo stato di sincronizzazione.
Task 5: Test sincronizzazione del contenuto del bucket di storage degli oggetti OCI
I bucket vengono sottoposti a MOUNT sulle VM distribuite nella directory /home/opc/logging
. Per eseguire il test e la sincronizzazione dei file presenti nei bucket attivati, è necessario ripetere i passi precedenti per aggiungere la directory VM logging
come cartella locale, quindi condividerla dai dispositivi remoti. Vedrete qualcosa di simile a questo:
-
VM1:
Successivamente, creare un file nella directory logging
che lo farà apparire nel bucket OCI e sincronizzare nella directory VM2 logging
se configurata correttamente, quindi anche nel secondo bucket dell'area incrociata.
Task 6: eseguire altri test
Ci sono due punti che è possibile testare facilmente con la stessa cartella e dispositivi condivisi come configurato in precedenza.
-
Test con nuovi file di grandi dimensioni: questa operazione verrà sincronizzata rapidamente. Creare un file di grandi dimensioni localmente nella VM nelle cartelle
local_VM1
/local_VM2
, quindi creare la directorylogging
, ovvero utilizzare s3fs per la sincronizzazione dello storage degli oggetti OCI tra più aree.-
Creare un file di grandi dimensioni in VM1.
cd local_VM1 dd if=/dev/urandom of=~/local_VM1/testfile1 bs=1M count=500
-
Verificare la sincronizzazione su VM2.
ls -lh ~/local_VM2/
Verificare anche nell'interfaccia di sincronizzazione delle VM.
-
Ripetere l'operazione per la directory attivata s3fs (
logging
).cd ~/logging dd if=/dev/urandom of=~/logging/testfile2 bs=1M count=500
-
Verificare la sincronizzazione su VM2 nella directory
logging
, nell'interfaccia Syncthing e nel bucket della seconda area per determinare la velocità di visualizzazione del file. -
È quindi possibile procedere all'esecuzione degli stessi test con un file di pochi GB. Inoltre, valuta la possibilità di caricare un file di grandi dimensioni direttamente nel primo bucket e di monitorare la velocità di sincronizzazione nel secondo bucket.
-
-
Test con file di grandi dimensioni modificati: consente inoltre di rilevare e sincronizzare in modo efficiente le modifiche. Modificare i file locali nelle directory
local_VM1
/local_VM2
e i file esistenti nei bucket di storage degli oggetti OCI con MOUNT eseguito nelle VM nella directorylogging
.-
Modificare un file esistente.
echo "New content" >> ~/local_VM1/testfile1
-
Verificare l'aggiornamento su VM2.
-
Ripetere i passi 1 e 2 per i file di storage degli oggetti OCI.
echo "Modified content" >> ~/logging/testfile2
-
Collegamenti correlati
Conferme
- Autore - Adina Nicolescu (ingegnere del cloud senior)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Perform Cross-Region Bidirectional Synchronization in Oracle Cloud Infrastructure using Syncthing
G29468-01
Copyright ©2025, Oracle and/or its affiliates.