Note:

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:

¿Cuándo es Syncthing una buena idea?

Objetivos

Requisitos

Tarea 1: Preparación de la información necesaria para el despliegue de VM

  1. 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.

  2. 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.

  3. 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.

  4. Cree una clave secreta de cliente para el montaje s3fs. La clave secreta de cliente se utilizará para acceder a OCI Object Storage.

    1. Conéctese a la consola de OCI, vaya a Perfil, haga clic en su nombre de usuario y en Claves secretas de cliente.

      Perfil - Clave secreta de cliente

    2. Haga clic en Generate secret key e introduzca un nombre, como s3fs-access.

    3. Asegúrese de copiar la clave generada, ya que la usaremos más adelante en la Tarea 2.

      Clave de acceso secreta de cliente

    4. Haga clic en Clave de acceso y copie el valor, ya que lo utilizaremos más adelante en la tarea 2.

      Clave de acceso secreta de cliente

    5. Copie el espacio de nombres de la página Detalles de cubo que utilizaremos más adelante en la tarea 2.

      Espacio de nombres de cubo de Object Storage

Tarea 2: Aplicación de la pila

  1. Conéctese a la consola de OCI, vaya a Developer Services, Resource Manager y haga clic en Stacks.

    Pilas de OCI Resource Manager

  2. Cree la pila de OCI Resource Manager de Terraform. Para obtener más información, consulte Creating a Stack from a Zip File.

    1. Haga clic en Crear pila.

    2. Seleccione el archivo .zip y agregue la pila.

    3. Introduzca la clave de etiqueta.

    4. Haga clic en Siguiente.

  3. 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.
  4. Haga clic en Siguiente y revise la información. Si todo está bien, seleccione Ejecutar Aplicación y haga clic en Crear.

    Pila de aplicación de ORM de OCI

    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.

    Salida de pila ORM

  5. Repita los pasos en una región secundaria para crear la segunda VM allí.

  6. 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:

    Información de cubo de montaje

    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.

  1. 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
    
  2. 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.

    Pantalla Syncthing

    Nota: Puede definir un nombre de usuario y una contraseña en Configuración en la sección GUI para eliminar las advertencias.

  3. 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.

    Sincronizando agregar carpeta

  4. 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.

    Sincronizar carpeta local

    Puede proteger el terminal de VM que ha creado la nueva carpeta local_VM1.

  5. 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.

  6. Configure la conexión de Syncthing entre regiones entre las dos máquinas virtuales, empezando por VM1.

    1. 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.

      Agregar dispositivo remoto

    2. 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.

        Dispositivo remoto - Mostrar ID

      • Nombre del dispositivo: introduzca un nombre relevante, como remote_VM2.

        Dispositivo remoto - pestaña general

    3. En Uso compartido, seleccione local_VM1 para compartirlo con el dispositivo remoto.

      Dispositivo remoto - pestaña Compartir

    4. En Avanzado, introduzca tcp://<vm2-public-ip>:22000 en Direcciones, 22000 es el puerto TCP utilizado para los datos de Syncthing.

    5. Haga clic en Guardar.

  7. En este punto, en VM1 Syncthing, la carpeta local local_VM1 debe aparecer en verde Up to Date y el dispositivo remoto remote_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, como remote_VM1.

    Nota: Asegúrese de que el puerto 22000 esté abierto en la lista de seguridad de las redes virtuales en la nube.

  8. 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.

    Aceptar carpeta remota

  9. 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 a remote_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.

  10. Realice el mismo paso en VM2 en relación con la carpeta local_VM1 entrante y asígnela como remote_VM1.

  11. Ahora, las dos máquinas virtuales deben estar sincronizadas y las carpetas administradas por Syncthing; en VM1, local_VM1 y remote_VM2; en VM2, local_VM2 y remote_VM1.

    Carpetas sincronizadas

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.

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.

  1. SSH en VM1.

    ssh opc@<vm1-public-ip>
    
  2. Ejecute el siguiente comando para navegar a la carpeta local_VM1 compartida de Syncthing local.

    cd ~/local_VM1
    
  3. Ejecute el siguiente comando para crear un archivo de prueba.

    echo "testing sync" > testVM1.txt
    
  4. Abra un nuevo terminal y SSH en VM2.

    ssh opc@<vm2-public-ip>
    
  5. Ejecute el siguiente comando para navegar a la carpeta compartida en VM2.

    cd ~/remote_VM1
    
  6. Ejecute los siguientes comandos para comprobar si aparece el archivo.

    ls -l
    cat testVM1.txt
    
  7. Realice los mismos pasos en VM2 y compruebe que aparezca un archivo en VM1 en la carpeta remote_VM2.

  8. Verifique el estado de sincronización en la interfaz de Syncthing. Abra http://<vm1-public-ip>:8384 y http://<vm2-public-ip>:8384 en un explorador para comprobar los logs y sincronizar el estado.

    Archivos sincronizados

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:

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.

Sincronización de cubos

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.

Agradecimientos

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.