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.
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
Nota: La región principal es Sídney y la región de DR es Melbourne.
Objetivos
-
Según la arquitectura, crearemos un grupo de protección de DR (DRPG) denominado
Mushop-Syd
en la región principal de Sydney. -
El DRPG principal contiene una recopilación de diferentes recursos de OCI que componen una aplicación y que se deben tratar como un grupo combinado al realizar operaciones de DR. Hemos agregado OKE y Oracle Autonomous Database Serverless (Autonomous Database Serverless) al DRPG principal. Este tutorial también proporciona pasos para desplegar la aplicación MuShop y todos los demás recursos necesarios para el despliegue.
-
Se crea un DRPG similar en la región de Melbourne en espera. OKE y Autonomous Database Serverless (en modo en espera) se agregan al DRPG. Los equilibradores de carga no forman parte del DRPG, pero se ejecutarán de forma independiente en ambos sitios, como se resalta en la arquitectura de despliegue.
-
Se forma una asociación entre los dos DRPG.
-
En el DRPG en espera (Melbourne), se crea un plan de DR. Este plan representa un flujo de trabajo de DR (una secuencia de pasos).
-
Ejecute un plan de DR. Se ejecuta un switchover, que planifica una transición de servicios del DRPG principal al DRPG en espera. Los planes de switchover realizan una transición ordenada mediante el cierre de la pila de aplicaciones en la región principal y, a continuación, su activación en la región en espera. Por lo tanto, un plan de switchover requiere que los componentes de la pila de aplicaciones y otros servicios de OCI necesarios estén disponibles en ambas regiones.
Requisitos
-
Privilegios de administrador o configuración de las políticas necesarias de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) para OCI Full Stack DR. Para obtener más información, consulte Configuración de políticas de Identity and Access Management (IAM) para utilizar OCI Full Stack DR y Políticas para OCI Full Stack DR.
-
Configuración del entorno:
export COMPARTMENT_ID=ocid1.compartment.oc1.. export DB_NAME=fsdrdemoadb export DB_DISPLAY_NAME=fsdrdemoadb export DB_PASSWORD=<Your DB Password> export WALLET_PW=<Your DB Password> export DB_SERVICE_NAME=${DB_NAME}_tp export WALLET_ZIP=/tmp/Wallet_${DB_NAME}.zip export STANDBY_WALLET_ZIP=/tmp/Wallet_${DB_NAME}_Standby.zip export PRIMARY_REGION=ap-sydney-1 export STANDBY_REGION=ap-melbourne-1 export STANDBY_DB_NAME=${DB_NAME}_remote
Agregue las siguientes líneas a un archivo denominado
env
y obtenga el origen.source env
Nota:
- Para obtener más información sobre los criterios de contraseña para Autonomous Database Serverless, consulte Acerca de las contraseñas de usuario en Autonomous Database.
- El nombre de Autonomous Database Serverless solo puede contener caracteres alfanuméricos.
- Sustituya
DB_PASSWORD
yWALLET_PW
en las variables de entorno anteriores.
Tarea 1: Instalación y configuración de Oracle Autonomous Database
-
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}
-
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)
-
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
-
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
-
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.
-
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)
-
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
-
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:
- Nombre de cluster: introduzca
primary-syd-oke-demo-cluster
(Sídney) ystandby-mel-oke-demo-cluster
(Melbourne). - Punto final de API de Kubernetes: seleccione Público.
- Tipo de nodo: seleccione Gestionado.
- Seleccione Trabajadores privados.
- Unidad: seleccione VM Standard E3 Flex (4 OCPU, 64 GB de memoria).
- Seleccione Oracle Linux 8.
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
-
Cree un espacio de nombres.
kubectl create ns mushop
-
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}
-
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}
-
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
).
-
Clone el repositorio.
git clone git@github.com:naikvenu/fsdr-demo.git
-
Vaya a la carpeta de gráficos.
cd fsdr-demo/helm-chart/
-
Actualice las dependencias del gráfico.
helm dependency update ./setup
-
Instale y configure el gráfico.
helm upgrade --install mushop-utils setup --dependency-update --namespace mushop-utilities --create-namespace
-
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}')
-
Instale la aplicación en el cluster de OKE.
helm upgrade --install -f ./mushop/values-dr.yaml \ fsdrmushop mushop -n mushop
-
Acceda a la aplicación MuShop principal mediante la IP de entrada.
kubectl get svc mushop-utils-ingress-nginx-controller \ --namespace mushop-utilities
-
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.
-
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
-
Clone el repositorio.
git clone git@github.com:naikvenu/fsdr-demo.git
O bien:
git clone https://github.com/naikvenu/fsdr-demo
-
Vaya a la carpeta de gráficos.
cd fsdr-demo/helm-chart/
-
Actualice las dependencias del gráfico.
helm dependency update ./setup
-
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
-
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}')
-
Cree un espacio de nombres MuShop.
kubectl create namespace mushop
-
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.
- Nombre: introduzca
FSDR-APP-HEALTHCHECK
. - Destinos: introduzca las IP de los equilibradores de carga principal y en espera.
- Protocolo: seleccione http.
- Puerto: introduzca 80.
- Ruta de acceso de destino: introduzca
/
. - Método: seleccione GET.
- Timeout: introduzca 30.
- Intervalo: introduzca 30 segundos.
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.
- Nombre: introduzca
FSDR-POLICY
. - TTL: introduzca 60 segundos.
- Pool 1:
- Nombre: introduzca
Primary
. - Tipo: seleccione A.
- Rdata: introduzca la IP del equilibrador de carga principal.
- Nombre: introduzca
- Pool 2:
- Nombre: introduzca
Standby
. - Tipo: seleccione A.
- Rdata: introduzca la IP del equilibrador de carga en espera.
- Nombre: introduzca
- Seleccionar prioridad de pool:
- Pool1
- Pool2
- Adjunte la comprobación del sistema creada en la tarea 7.
Tarea 9: Configuración de OCI Full Stack DR
-
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
ystandby-drpg-melbourne
. -
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.
-
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.
-
Agregue el cluster de OKE y Oracle Autonomous Database.
-
Agregue recursos al DRPG (región de Melbourne): cluster de OKE y Oracle Autonomous Database.
-
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.
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.
-
-
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.
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.
Enlaces relacionados
Agradecimientos
-
Autor: Venugopal Naik (arquitecto principal de nube)
-
Contribuyentes: Raphael Teixeira (miembro principal del personal técnico de FSDR), Suraj Ramesh (mánager principal de productos de MAA)
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.
Automate a Switchover and Failover Plan for a Demo Application Deployed on OCI Kubernetes Engine with OCI Full Stack Disaster Recovery
G23612-01
December 2024