Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Sincronización bidireccional entre regiones en Oracle Cloud Infrastructure mediante Syncthing
Introducción
La sincronización del almacenamiento de objetos entre regiones es esencial para varias cargas de trabajo en la nube, como la copia de seguridad de datos, la recuperación ante desastres y el acceso entre varias regiones. Aunque Oracle Cloud Infrastructure (OCI) proporciona capacidades de replicación para OCI Object Storage, no ofrece una solución de sincronización bidireccional nativa. Esta limitación significa que los usuarios deben confiar en implementaciones personalizadas para sincronizar archivos entre regiones.
Syncthing, una herramienta de sincronización de archivos descentralizada de código abierto, proporciona una sincronización bidireccional continua alternativamente que funciona en tiempo real. A diferencia de OCI Functions, que se basa en un modelo basado en eventos para la replicación de objetos, Syncthing sincroniza estructuras de archivos completas de manera eficiente entre máquinas virtuales (VM) mientras soporta directorios montados locales y OCI Object Storage.
En este tutorial, desplegaremos Syncthing en instancias de OCI Compute en dos regiones mediante una pila de OCI Resource Manager, lo que permitirá la sincronización automática y bidireccional entre el almacenamiento de VM local y los directorios montados de OCI Object Storage.
Consideraciones
Al montar Syncthing con OCI Object Storage mediante s3fs:
-
El rendimiento de escritura de s3fs (OCI Object Storage) puede ser un cuello de botella: escribir directamente en OCI Object Storage mediante s3fs es más lento en comparación con el disco local.
-
Sincronizar archivos grandes puede ser lento: escribir y leer archivos grandes directamente desde OCI Object Storage puede tardar minutos en lugar de segundos.
-
Ventaja de sincronización a nivel de bloque perdida: dado que OCI Object Storage requiere escrituras de objetos completos, la eficiencia de sincronización a nivel de bloque de Syncthing disminuye.
-
Mejores prácticas: sincronice localmente primero y, a continuación, mueva los archivos a OCI Object Storage.
¿Cuándo es Syncthing una buena idea?
-
Lo mejor para la sincronización en tiempo real, especialmente para pequeños cambios de archivos de alta frecuencia entre regiones.
-
Ideal para la sincronización bidireccional, a diferencia de OCI Functions, que requiere lógica adicional para las actualizaciones bidireccionales.
-
Ideal para la sincronización de OCI en la nube híbrida o local, donde la integración directa de OCI Object Storage no es factible.
-
Mejor al sincronizar el almacenamiento de VM local: evite utilizar cubos montados s3fs para la sincronización directa.
-
No es ideal para transferencias de archivos por lotes grandes: OCI Functions las gestiona de forma más eficiente con el procesamiento por objeto.
Objetivos
-
Despliegue una pila de OCI Resource Manager en dos regiones para aprovisionar automáticamente dos instancias de OCI Compute con Syncthing preinstalado.
-
Configure Syncthing en ambas máquinas virtuales para permitir la sincronización descentralizada y en tiempo real del almacenamiento local y los directorios montados en OCI Object Storage en varias regiones.
Requisitos
-
Acceso a un arrendamiento de OCI con dos regiones activadas para la sincronización entre regiones.
-
Permisos para crear y gestionar instancias de OCI Compute, cubos de OCI Object Storage y recursos de red.
-
Una VCN existente con una subred pública en cada región para el despliegue de VM.
-
Cubos de OCI Object Storage existentes en ambas regiones, que se utilizarán para la sincronización.
-
Clave secreta de cliente para el sistema de archivos S3 (s3fs) para montar cubos de OCI Object Storage en las máquinas virtuales.
Tarea 1: Preparación de la información necesaria para el despliegue de VM
-
Descargue la pila de OCI Resource Manager. Esta pila automatiza el despliegue de una máquina virtual que ejecuta Oracle Linux 8 en VM.Standard.E5. Unidad flexible. Instala Syncthing mediante CloudInit, monta un cubo de OCI existente y configura el acceso mediante s3fs. La máquina virtual se aprovisiona con acceso SSH, una IP pública y se etiqueta para facilitar la identificación. Para obtener más información, consulte la pila de OCI Resource Manager.
-
Cree una VCN con una subred pública en ambas regiones de destino.
La pila se desplegará en ambas ubicaciones para aprovisionar una VM con Syncthing para la sincronización de almacenamiento entre regiones bidireccional. Una vez desplegado, se puede acceder a Syncthing en el explorador mediante la IP pública de la máquina virtual.
-
Asegúrese de que existe un cubo de OCI Object Storage en cada región en la que se realizarán las pruebas. La visibilidad del cubo puede ser privada.
-
Cree una clave secreta de cliente para el montaje s3fs. La clave secreta de cliente se utilizará para acceder a OCI Object Storage.
-
Conéctese a la consola de OCI, vaya a Perfil, haga clic en su nombre de usuario y en Claves secretas de cliente.
-
Haga clic en Generate secret key e introduzca un nombre, como
s3fs-access
. -
Asegúrese de copiar la clave generada, ya que la usaremos más adelante en la Tarea 2.
-
Haga clic en Clave de acceso y copie el valor, ya que lo utilizaremos más adelante en la tarea 2.
-
Copie el espacio de nombres de la página Detalles de cubo que utilizaremos más adelante en la tarea 2.
-
Tarea 2: Aplicación de la pila
-
Conéctese a la consola de OCI, vaya a Developer Services, Resource Manager y haga clic en Stacks.
-
Cree la pila de OCI Resource Manager de Terraform. Para obtener más información, consulte Creating a Stack from a Zip File.
-
Haga clic en Crear pila.
-
Seleccione el archivo
.zip
y agregue la pila. -
Introduzca la clave de etiqueta.
-
Haga clic en Siguiente.
-
-
En la página Configurar variables, introduzca la siguiente información.
- Compartimento: introduzca el compartimento.
- VCN y subred: seleccione una VCN existente y una subred pública.
- Modifique el nombre mostrado de vm si lo desea.
- Clave SSH pública: introduzca la clave SSH pública para la VM.
- Dominio de disponibilidad: seleccione el dominio de disponibilidad.
- OCID de clave secreta de cliente y clave de acceso secreta de cliente: introduzca el OCID de clave secreta de cliente y la clave de acceso secreta de cliente creados en la tarea 1.
- Nombre de depósito: introduzca el nombre del depósito.
- Espacio de nombres de almacenamiento de objetos: seleccione el espacio de nombres de almacenamiento de objetos.
-
Haga clic en Siguiente y revise la información. Si todo está bien, seleccione Ejecutar Aplicación y haga clic en Crear.
Cuando el trabajo de aplicación se complete correctamente, debe devolver las IP públicas y privadas de la máquina virtual recién creada.
-
Repita los pasos en una región secundaria para crear la segunda VM allí.
-
Confirme que los cubos de OCI Object Storage están montados en
/home/opc/logging
en el nivel de VM. Para ello, conéctese mediante SSH mediante los siguientes comandos.mount | grep s3fs
Si el cubo se monta correctamente, debería ver una salida similar a la siguiente:
Esto confirma que s3fs ha montado el cubo en
/home/opc/logging
en cualquiera de las máquinas virtuales.
Tarea 3: Configurar Syncthing
Una vez que ambas máquinas virtuales se despliegan en las dos regiones, configure Syncthing en cada máquina virtual siguiendo los pasos siguientes para sincronizar el almacenamiento entre ellas.
-
Copie la IP pública de la máquina virtual en la primera región y utilícela en el explorador para acceder a la interfaz de Syncthing. Introduzca la siguiente URL.
http://<vm1-public-ip>:8384
-
Después de acceder a la interfaz, verá la interfaz de Syncthing, que será similar a la siguiente imagen. Las carpetas y los dispositivos remotos son las áreas que configurará para la sincronización en el siguiente paso.
Nota: Puede definir un nombre de usuario y una contraseña en Configuración en la sección GUI para eliminar las advertencias.
-
En la sección Carpetas, haga clic en Agregar carpeta para crear o incluir una carpeta de VM local en la interfaz de administración de Syncthing.
-
Introduzca la siguiente información para configurar una carpeta local y haga clic en Guardar.
- Etiqueta de Carpeta: Nombre fácil de recordar para identificar la carpeta. Por ejemplo,
local_VM1
. - Ruta de carpeta: ruta de directorio de la carpeta local. Por ejemplo,
~/local_VM1
.
Puede proteger el terminal de VM que ha creado la nueva carpeta
local_VM1
. - Etiqueta de Carpeta: Nombre fácil de recordar para identificar la carpeta. Por ejemplo,
-
Repita los pasos del 1 al 4 en la VM desde la región secundaria y agregue la carpeta
local_VM2
en la interfaz de Syncthing VM2. -
Configure la conexión de Syncthing entre regiones entre las dos máquinas virtuales, empezando por VM1.
-
En la sección Dispositivos remotos de la primera VM de Syncthing, haga clic en Agregar dispositivo remoto para incluir una carpeta remota de la segunda región.
-
En General, introduzca la siguiente información.
-
ID de dispositivo: este es el ID del segundo dispositivo Syncthing. En VM2, abra la interfaz de Syncthing, vaya a Acciones, Mostrar ID, copie el valor mostrado y péguelo en este campo.
-
Nombre del dispositivo: introduzca un nombre relevante, como
remote_VM2
.
-
-
En Uso compartido, seleccione
local_VM1
para compartirlo con el dispositivo remoto. -
En Avanzado, introduzca
tcp://<vm2-public-ip>:22000
en Direcciones,22000
es el puerto TCP utilizado para los datos de Syncthing. -
Haga clic en Guardar.
-
-
En este punto, en VM1 Syncthing, la carpeta local
local_VM1
debe aparecer en verde Up to Date y el dispositivo remotoremote_VM2
mostrará Disconnected.Para completar la conexión, realice los mismos pasos en VM2 Syncthing, utilizando los datos equivalentes recopilados de VM1 Syncthing, introduzca ID de dispositivo,
tcp://<vm1-public-ip>:22000
como Direcciones y Nombre de dispositivo, comoremote_VM1
.Nota: Asegúrese de que el puerto
22000
esté abierto en la lista de seguridad de las redes virtuales en la nube. -
Después de las configuraciones equivalentes, se le debe solicitar en cada interfaz de Syncthing que acepte la adición de la carpeta remota. Haga clic en Agregar.
-
Se le pedirá que lo guarde localmente con detalles específicos, por ejemplo, en VM1 se le pedirá que guarde el
local_VM2
entrante, puede cambiar el nombre de VM1 aremote_VM2
para obtener una visualización más clara. Además, tiene la posibilidad de asignarla a una ruta VM1 local. Puede ser cualquier ruta de acceso; se crea una nueva carpeta si no existe. También puede seleccionar~/local_VM1
, lo que significa que el contenido de las dos carpetas de las dos máquinas virtuales se fusionará en la misma ubicación. Para nuestro ejemplo, introduzca la ruta~/remote_VM2
. -
Realice el mismo paso en VM2 en relación con la carpeta
local_VM1
entrante y asígnela comoremote_VM1
. -
Ahora, las dos máquinas virtuales deben estar sincronizadas y las carpetas administradas por Syncthing; en VM1,
local_VM1
yremote_VM2
; en VM2,local_VM2
yremote_VM1
.
Tarea 4: Probar la sincronización del almacenamiento local
Para probar la sincronización de Syncthing, inicie sesión en cada VM mediante SSH. Dentro del directorio principal de opc, encontrará dos carpetas.
-
Carpeta local (
local_VM1
): almacena archivos en esta VM. -
Carpeta remota (
remote_VM2
): refleja los archivos sincronizados de la segunda VM.
Para verificar la sincronización, agregaremos o modificaremos un archivo en la carpeta local de una máquina virtual y comprobaremos si los cambios aparecen en la carpeta correspondiente de la máquina virtual remota. Además, supervisaremos la interfaz o los logs de Syncthing para confirmar la sincronización correcta entre las dos regiones de OCI.
-
SSH en VM1.
ssh opc@<vm1-public-ip>
-
Ejecute el siguiente comando para navegar a la carpeta
local_VM1
compartida de Syncthing local.cd ~/local_VM1
-
Ejecute el siguiente comando para crear un archivo de prueba.
echo "testing sync" > testVM1.txt
-
Abra un nuevo terminal y SSH en VM2.
ssh opc@<vm2-public-ip>
-
Ejecute el siguiente comando para navegar a la carpeta compartida en VM2.
cd ~/remote_VM1
-
Ejecute los siguientes comandos para comprobar si aparece el archivo.
ls -l cat testVM1.txt
-
Realice los mismos pasos en VM2 y compruebe que aparezca un archivo en VM1 en la carpeta
remote_VM2
. -
Verifique el estado de sincronización en la interfaz de Syncthing. Abra
http://<vm1-public-ip>:8384
yhttp://<vm2-public-ip>:8384
en un explorador para comprobar los logs y sincronizar el estado.
Tarea 5: Probar la sincronización del contenido del cubo de OCI Object Storage
Los cubos se montan en las máquinas virtuales desplegadas en el directorio /home/opc/logging
. Para probar y sincronizar archivos ubicados en los cubos montados, debe rehacer los pasos anteriores para agregar el directorio de VM logging
como una carpeta local y, a continuación, compartirlo desde los dispositivos remotos. Verá algo similar a esto:
-
VM1:
A continuación, cree un archivo en el directorio logging
que lo hará aparecer en el cubo de OCI y sincronice en el directorio VM2 logging
si está configurado correctamente, por lo tanto, en el segundo cubo de la región cruzada también.
Tarea 6: Realizar más pruebas
Hay dos puntos que puede probar fácilmente con la misma carpeta y dispositivos compartidos que se configuraron anteriormente.
-
Probar con nuevos archivos grandes: se sincronizará rápidamente. Cree un archivo grande localmente en la VM en las carpetas
local_VM1
/local_VM2
y, a continuación, cree el directoriologging
, lo que significa que s3fs se utiliza para la sincronización entre regiones de OCI Object Storage.-
Cree un archivo grande en VM1.
cd local_VM1 dd if=/dev/urandom of=~/local_VM1/testfile1 bs=1M count=500
-
Verifique la sincronización en VM2.
ls -lh ~/local_VM2/
Verifique también en la interfaz de Syncthing de VM.
-
Repita el procedimiento para el directorio montado s3fs (
logging
).cd ~/logging dd if=/dev/urandom of=~/logging/testfile2 bs=1M count=500
-
Verifique la sincronización en VM2 en el directorio
logging
, en la interfaz de Syncthing y en el segundo cubo de regiones para determinar la rapidez con la que aparece el archivo. -
A continuación, puede proceder a realizar las mismas pruebas con un archivo de unos pocos GB. Considere también la posibilidad de cargar un archivo grande directamente en el primer bloque y controlar la rapidez con la que se sincroniza en el segundo bloque.
-
-
Prueba con archivos grandes modificados: también detectará y sincronizará eficazmente los cambios. Modifique los archivos locales en los directorios
local_VM1
/local_VM2
y los archivos existentes en los cubos de OCI Object Storage montados en las VM en el directoriologging
.-
Modificar un archivo existente.
echo "New content" >> ~/local_VM1/testfile1
-
Verifique la actualización en VM2.
-
Repita los pasos 1 y 2 para los archivos de OCI Object Storage.
echo "Modified content" >> ~/logging/testfile2
-
Enlaces relacionados
Agradecimientos
- Autor: Adina Nicolescu (ingeniera sénior en la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Perform Cross-Region Bidirectional Synchronization in Oracle Cloud Infrastructure using Syncthing
G29465-01
Copyright ©2025, Oracle and/or its affiliates.