Note:

Automatización de un plan de switchover y failover para una aplicación de demostración desplegada en OCI Kubernetes Engine con OCI Full Stack Disaster Recovery

Introducción

En este tutorial se muestra un caso de uso de Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) con una aplicación de comercio electrónico de demostración desplegada en un cluster de Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine u OKE).

En el momento de escribir este tutorial, OCI Full Stack DR ha anunciado una disponibilidad limitada para OKE. En una versión limitada, podemos probar OCI Full Stack DR en aplicaciones basadas en OKE como MuShop, una aplicación de demostración basada en microservicios que utiliza varios otros servicios de Oracle Cloud Infrastructure (OCI) como una sola aplicación.

Utilizaremos un enfoque de espera activa: un modelo de recuperación ante desastres (DR) en el que algunos o todos los componentes de la aplicación se despliegan previamente en una región en espera para permitir una transición de DR más rápida. Aunque este modelo implica mayores costos operativos, proporciona un objetivo de tiempo de recuperación (RTO) más bajo.

OCI Full Stack DR organiza la transición de cálculos, bases de datos y aplicaciones entre regiones de OCI de todo el mundo con un solo clic. Los clientes pueden automatizar los pasos necesarios para recuperar uno o más sistemas de negocio sin rediseñar ni volver a diseñar la infraestructura, las bases de datos o las aplicaciones existentes sin necesidad de servidores de conversión o gestión especializados.

Arquitectura de despliegue

Arquitectura de despliegue de OKE

Nota: La región principal es Sídney y la región de DR es Melbourne.

Objetivos

Requisitos

Tarea 1: Instalación y configuración de Oracle Autonomous Database

  1. Cree la instancia principal de Oracle Autonomous Database.

    oci db autonomous-database create --compartment-id ${COMPARTMENT_ID} \
    --db-name ${DB_NAME} --admin-password ${DB_PASSWORD} --db-version 19c \
    --cpu-core-count 1 --data-storage-size-in-tbs 1 \
    --display-name ${DB_DISPLAY_NAME} --region ${PRIMARY_REGION}
    
  2. Recupere el OCID principal de Oracle Autonomous Database.

    DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \
    --region ${PRIMARY_REGION} --display-name $DB_NAME \
    --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
    
  3. Cree la DR en espera y active Oracle Data Guard entre regiones.

    oci db autonomous-database create-adb-cross-region-data-guard-details \
    --compartment-id ${COMPARTMENT_ID} --db-name ${DB_NAME} --source-id ${DB_ID} \
    --cpu-core-count 1 --data-storage-size-in-tbs 1 \
    --region ${FAILOVER_REGION} --db-version 19c
    
  4. Descargue y extraiga la cartera de la base de datos autónoma desde la instancia principal de Oracle Autonomous Database.

    oci db autonomous-database generate-wallet --autonomous-database-id ${DB_ID}\
    --password ${WALLET_PW} --file ${WALLET_ZIP} --region $PRIMARY_REGION
    
  5. Descomprima la cartera en la primaria.

    unzip ${WALLET_ZIP} -d /tmp/wallet_primary
    

    Nota:

    • Mantenga esta cartera a mano, ya que necesitaremos agregarla como secreto de OKE más adelante.
    • La cartera se debe descargar por separado para las regiones primaria y en espera porque las entradas DNS tnsnames.ora son diferentes.
  6. Recupere el OCID de Oracle Autonomous Database en espera.

    STANDBY_DB_ID=$(oci db autonomous-database list -c ${COMPARTMENT_ID} \
    --region ${STANDBY_REGION} --display-name $STANDBY_DB_NAME \
    --query "data[?\"db-name\"=='${DB_NAME}'].id | [0]" --raw-output)
    
  7. Descargue y extraiga la cartera de la base de datos autónoma desde la instancia de Oracle Autonomous Database en espera.

    oci db autonomous-database generate-wallet --autonomous-database-id \
    ${STANDBY_DB_ID} --password ${WALLET_PW} \
    --file ${STANDBY_WALLET_ZIP} --region $STANDBY_REGION
    
  8. Descomprima la cartera en espera.

    unzip ${STANDBY_WALLET_ZIP} -d /tmp/wallet_standby
    

Tarea 2: Crear un cluster de OKE

Cree un cluster de OKE en los sitios principal y de DR. Para obtener más información, consulte Creación de un cluster con Oracle Cloud Infrastructure Container Engine for Kubernetes.

Hemos utilizado la opción Creación rápida para crear clusters con la siguiente información:

Para acceder al cluster, vaya a la consola de OCI, vaya a Developer Service, Container & Artifacts y haga clic en Kubernetes Clusters (OKE).

O bien:

Ejecute el siguiente comando para acceder al cluster.

oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0  --kube-endpoint PUBLIC_ENDPOINT

Tarea 3: Configuración de secretos de Kubernetes en el sitio principal

  1. Cree un espacio de nombres.

    kubectl create ns mushop
    
  2. Agregue el secreto de contraseña del administrador de Oracle Autonomous Database.

    kubectl create secret generic oadb-admin \
          --namespace mushop \
          --from-literal=oadb_admin_pw=${DB_PASSWORD}
    
  3. Agregue el secreto de conexión de Oracle Autonomous Database.

    kubectl create secret generic oadb-connection \
          --namespace mushop \
          --from-literal=oadb_wallet_pw=${WALLET_PW} \
          --from-literal=oadb_service=${DB_SERVICE_NAME}
    
  4. Agregue el secreto de cartera principal.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_primary
    

Tarea 4: Configuración de la aplicación MuShop

Nota: La aplicación solo se despliega en la región principal (ap-sydney-1).

  1. Clone el repositorio.

    git clone git@github.com:naikvenu/fsdr-demo.git
    
  2. Vaya a la carpeta de gráficos.

    cd fsdr-demo/helm-chart/
    
  3. Actualice las dependencias del gráfico.

    helm dependency update ./setup
    
  4. Instale y configure el gráfico.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  5. Localice la dirección EXTERNAL-IP del controlador de entrada.

    PRIMARY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  6. Instale la aplicación en el cluster de OKE.

    helm upgrade --install -f ./mushop/values-dr.yaml \
       fsdrmushop mushop -n mushop
    
  7. Acceda a la aplicación MuShop principal mediante la IP de entrada.

    kubectl get svc mushop-utils-ingress-nginx-controller \
       --namespace mushop-utilities
    
  8. Para verificar la aplicación, acceda a http://<primary-site-ingress-ip-address> y asegúrese de ver todos los productos del catálogo MuShop enumerados sin errores.

Tarea 5: Configuración de un cluster de OKE en la ubicación en espera

Nota: Dado que estamos utilizando un enfoque de espera activa, necesitamos crear un cluster de OKE y ejecutar algunos elementos básicos, como el controlador de entrada. Los siguientes pasos le ayudarán a hacerlo.

  1. Para acceder al cluster en la ubicación en espera, vaya a la consola de OCI, vaya a Developer Service, Container & Artifacts y haga clic en Kubernetes Clusters (OKE).

    O bien:

    Ejecute el siguiente comando para acceder al cluster en la ubicación en espera.

    oci ce cluster create-kubeconfig --cluster-id <cluster-id> --file $HOME/.kube/config --region ap-sydney-1 --token-version 2.0.0  --kube-endpoint PUBLIC_ENDPOINT
    
  2. Clone el repositorio.

    git clone git@github.com:naikvenu/fsdr-demo.git
    

    O bien:

    git clone  https://github.com/naikvenu/fsdr-demo
    
  3. Vaya a la carpeta de gráficos.

    cd fsdr-demo/helm-chart/
    
  4. Actualice las dependencias del gráfico.

    helm dependency update ./setup
    
  5. Instale y configure los gráficos. Es necesario para desplegar un controlador de entrada (Equilibrador de carga de OCI) para acceder a la aplicación.

    Nota: este paso solo desplegará un controlador de entrada (Equilibrador de carga de OCI) y no la aplicación completa.

    helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
    
  6. Localice la dirección EXTERNAL-IP del controlador de entrada.

    STANDBY_EXTERNAL_IP=$(kubectl get svc -n mushop-utilities mushop-utils-ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  7. Cree un espacio de nombres MuShop.

    kubectl create namespace mushop
    
  8. Cree un secreto para la cartera.

    kubectl create secret generic oadb-wallet \
          --namespace mushop --from-file=/tmp/wallet_standby
    

    Nota: Estamos utilizando una cartera en espera.

Tarea 6: Configuración de zonas de DNS (opcional)

En la región principal, vaya a la consola de OCI, vaya a Red, Gestión de DNS, Zonas y haga clic en Crear zona.

Configuration:
The Zone type : Primary
‘A’ record: “mushop”

El nombre de zona debe coincidir con el Nombre de dominio comprado. Introduzca los servidores de nombres que se van a agregar al dominio.

Se podrá acceder a la aplicación en https://mushop.<your-domain>.com.

Tarea 7: Creación de comprobaciones del sistema (opcional)

Se necesitan comprobaciones del sistema para configurar las políticas de dirección de tráfico de DNS de OCI.

Ejecute el siguiente comando para crear comprobaciones del sistema.

oci health-checks http-monitor create --compartment-id ${COMPARTMENT_ID} --display-name fsdr-test --interval-in-seconds 30 --targets '[“${PRIMARY_EXTERNAL_IP}”]' --protocol http --path "/" --port 80

O bien:

Vaya a la consola de OCI, vaya a Observación y gestión, Supervisión, Comprobaciones del sistema, haga clic en Crear comprobación del sistema e introduzca la siguiente información.

Tarea 8: Configuración de la política de dirección de gestión de tráfico (opcional)

Vaya a la consola de OCI, vaya a Red, Gestión de DNS, Políticas de dirección de gestión de tráfico, haga clic en Crear política de dirección de gestión de tráfico e introduzca la siguiente información.

Tarea 9: Configuración de OCI Full Stack DR

  1. Cree un DRPG en ambas regiones. Vaya a la consola de OCI, vaya a Migración y recuperación ante desastres y haga clic en Grupos de protección de DR. Por ejemplo, primary-drpg-sydney y standby-drpg-melbourne.

  2. Asocie los DRPG. Vaya a la consola de OCI, vaya a Migración y recuperación ante desastres, grupos de protección de DR y haga clic en Asociar.

  3. Agregue recursos al DRPG (región de Sydney). Vaya a la consola de OCI, vaya a Migración y recuperación ante desastres, grupos de protección de DR, Miembros y haga clic en Agregar miembro.

  4. Agregue el cluster de OKE y Oracle Autonomous Database.

    Miembros de DRPG

  5. Agregue recursos al DRPG (región de Melbourne): cluster de OKE y Oracle Autonomous Database.

    Miembros de DRPG

  6. Cree un plan de DR en la región en espera (Melbourne). Vaya a la consola de OCI, vaya a Migración y recuperación ante desastres, grupos de protección de DR, Planes y haga clic en Crear plan.

    Miembros de DRPG

    En la siguiente imagen se muestra un plan de DR que orquesta la recuperación para toda una pila de aplicaciones, que puede incluir otros servicios junto con OKE.

    Como puede ver en la imagen, tenemos pasos incorporados para OKE. El servicio OCI Full Stack DR ejecuta una herramienta de copia de seguridad desarrollada internamente. Esta herramienta realizará periódicamente las copias de seguridad del cluster de despliegues, juegos de réplicas, pods, CronJobs, juegos de daemon, etc.

    Las copias de seguridad se almacenarán en el cubo de OCI Object Storage que hemos especificado en la propiedad de miembro.

    • OKE: detener copia de seguridad y limpieza (principal): detiene las copias de seguridad y finaliza todos los recursos mencionados en el cluster de OKE.

    • OKE - Restaurar (en espera): mediante la copia de seguridad, restaura la última copia de seguridad en el cluster de OKE de DR, de modo que tendrá todos los recursos creados en el cluster de OKE.

    • OKE - Programar copia de seguridad inversa (en espera): defina la copia de seguridad inversa para el plan de switchover.

    Si utiliza PersistentVolume (PV) y PersistentVolumeClaim (PVC), debe configurar grupos de volúmenes entre regiones (almacenamiento de bloques) y replicación FSS entre regiones (almacenamiento de archivos) y agregarlos como miembros en el DRPG. Esto creará grupos de planes adicionales, como lo que vimos para OKE y Oracle Autonomous Database.

  7. Realice un switchover. Este paso se debe realizar desde la ubicación en espera (Melbourne).

    Vaya a la consola de OCI, vaya a Migración y recuperación ante desastres, grupos de protección de DR y haga clic en Ejecutar plan de DR.

Tarea 10: Prueba y validación de la aplicación

Acceda a la aplicación desde la región en espera y asegúrese de que todo funciona. Se debe poder acceder a la aplicación en https://mushop.domain.com o utilizar la dirección http://standbyloadbalancerIP.com.

Asegúrese de que puede acceder a los elementos del catálogo, lo que indica que la base de datos en espera está totalmente operativa.

Miembros de DRPG

Nota: En este tutorial, hemos excluido los pasos para incluir certificados SSL en OCI Load Balancer y utilizar OCI Web Application Firewall. Estos dos componentes se pueden agregar a entornos de producción.

Pasos Siguientes

Ha visto cómo una aplicación de comercio electrónico basada en microservicios, desplegada en OCI Kubernetes Engine, se puede configurar con el servicio OCI Full Stack DR para permitir la recuperación ante desastres en un modo de espera en caliente. Mostramos cómo esta aplicación puede conmutar por error sin necesidad de intervención manual. Para obtener más información, consulte la documentación de OCI Full Stack DR en la sección Enlaces relacionados.

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, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.