Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en 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 el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
Automatización de la recuperación ante desastres de pila completa con la CLI de OCI para una topología en espera en frío
Introducción
Oracle Cloud Infrastructure Full Stack Disaster Recovery (Full Stack DR) proporciona una solución de orquestación de recuperación ante desastres totalmente automatizada y completa para todas las capas de una aplicación en la nube de pila completa, incluidas la infraestructura, la base de datos y la aplicación. Mediante la recuperación ante desastres de pila completa, puede recuperar sus aplicaciones de pila completa en regiones de OCI o en dominios de disponibilidad de la misma región.
La interfaz de línea de comandos de Oracle Cloud Infrastructure (CLI de OCI) es una herramienta de huella pequeña que se puede utilizar sola o con la consola de Oracle Cloud para realizar tareas de Oracle Cloud Infrastructure (OCI). La interfaz de línea de comandos (CLI) proporciona la misma funcionalidad básica que la consola de Oracle Cloud, además de comandos adicionales. Algunos de ellos, como la capacidad de ejecutar scripts, amplían la funcionalidad de la consola.
La CLI se basa en el SDK para Python de OCI y se ejecuta en Mac, Windows o Linux. El código Python realiza llamadas a las API de Oracle Cloud Infrastructure para proporcionar la funcionalidad implantada para los distintos servicios. Estas son las API de REST que utilizan solicitudes y respuestas HTTPS.
Objetivos
Automatice los pasos de Full Stack Disaster Recovery mediante la interfaz de línea de comandos (CLI) de OCI para una topología de Cold Standby Disaster Recovery.
-
Cree grupos de protección de Disaster Recovery (DR) en la región principal y en espera.
-
Asocie grupos de protección de DR.
-
Agregue miembros al grupo de protección de DR principal.
-
Cree el plan de switchover en la región Standby.
-
Personalice el plan de switchover con un grupo de planes definido por el usuario.
-
Ejecute comprobaciones previas para el plan de switchover en la región Standby.
-
Ejecute el plan de switchover en la región en espera.
Nota: En este ejemplo, utilizaremos FRANKFURT como región principal y LONDON como región en espera.
Arquitectura de despliegue

Requisitos
-
Instale la CLI de OCI.
-
Privilegios de administrador o configure las políticas de OCI Identity and Access Management necesarias para Full Stack Disaster Recovery. Para obtener más información, consulte Configuración de políticas de OCI IAM para utilizar Full Stack Disaster Recovery y Políticas para Full Stack Disaster Recovery.
-
Cree un cubo de Oracle Object Storage en la región principal y en espera para almacenar logs de operaciones de recuperación ante desastres. Consulte Object Storage.
-
Crear VM de OCI Compute en la región principal (Fráncfort). Para obtener más información, consulte Creación de recursos informáticos de OCI.
-
Ejecución de comandos en la instancia informática de OCI. Para obtener más información, consulte Ejecución de comandos en la instancia de OCI Compute.
-
Llame a scripts personalizados mediante el comando de ejecución con Oracle Cloud Infrastructure Full Stack Disaster Recovery. Para obtener más información, consulte Comando de ejecución de OCI con recuperación ante desastres de pila completa.
Implementación
Para este tutorial, ya hemos creado los siguientes recursos.
| Recursos | Región principal: Frankfurt |
|---|---|
| Cubo de Object Storage | FSDR_storage_primary_test |
| Compartimiento | sathish.mahadev |
| Espacio de Nombres | frrudica1wgd |
| Instancia memberId | ocid1.instancia....................... |
| sourceVnicId | ocid1.vnic.oc1…………………… |
| Recursos | Región de Standy - Londres |
|---|---|
| Cubo de Object Storage | FSDR_storage_secondary_test |
| Compartimiento | sathish.mahadev |
| Espacio de Nombres | frrudica1wgd |
Tarea 1: Creación de grupos de protección de DR en la región principal y en espera
-
Se supone que ha instalado la CLI de OCI según la plataforma que prefiera. Hemos instalado la CLI de OCI en una máquina virtual de OCI Linux. Defina las credenciales y el perfil de OCI para conectarse a la región de Frankfurt.
-
A continuación se muestra la sintaxis para crear el grupo de protección de DR.
Sintaxis:
oci disaster-recovery dr-protection-group create [OPTIONS]Parámetros Necesarios:
--compartment-id, -c [text] --display-name [text] --log-location [complex type]Este es un tipo complejo cuyo valor debe ser JSON válido.
-
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
log-location.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "bucket": "FSDR_storage_primary_test", "namespace": "frrudica1wgd" } -
Utilice el siguiente comando para crear un grupo de protección de DR en la región de Frankfurt.
oci disaster-recovery dr-protection-group create --compartment-id ocid1.compartment.oc1............ --display-name CLI_FSDR_Primary_test --log-location file://log-location.json
-
Puede verificar los detalles del grupo de protección de DR en la región principal (Fráncfort), hacer clic en el menú Hamburguesa, ir a Migración y recuperación ante desastres, Recuperación ante desastres y Grupo de protección de recuperación ante desastres. El estado del grupo de protección de DR debe ser Activo.

-
Defina las credenciales y el perfil de OCI para conectarse a la región de Londres. Cree un archivo JSON con el siguiente contenido y asígnele el nombre
log-sec-location.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "bucket": "FSDR_storage_secondary_test", "namespace": "frrudica1wgd" } -
Utilice el siguiente comando para crear un grupo de protección de DR en la región de Londres.
oci disaster-recovery dr-protection-group create --compartment-id ocid1.compartment.oc1............ --display-name CLI_FSDR_Secondry_test --log-location file://log-sec-location.json
-
Puede verificar los detalles del grupo de protección de DR en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Recuperación ante desastres, Grupo de protección de recuperación ante desastres. El estado del grupo de protección de DR debe ser Activo.

Tarea 2: Asociación de grupos de protección de DR
-
A continuación se muestra la sintaxis para asociar los grupos de protección de DR.
Sintaxis:
oci disaster-recovery dr-protection-group associate [OPTIONS]Parámetros Necesarios:
--dr-protection-group-id [text] --role [text] --peer-id [text] --peer-region [text] -
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
AssociateDrProtection.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "peerRegion": "uk-london-1", "peerId": "ocid1.drprotectiongroup.oc1.uk................................", "role": "PRIMARY" } -
Utilice el siguiente comando para crear una asociación entre dos regiones.
oci disaster-recovery dr-protection-group associate --dr-protection-group-id ocid1.drprotectiongroup.oc1............ --from-json file://AssociateDrProtection.json
-
Región Primaria:
Puede verificar la asociación entre dos regiones de la región principal (Fráncfort), hacer clic en el menú Hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres. El estado del grupo de protección de DR debe ser Activo.

-
Región en Espera:
Puede verificar la asociación entre dos regiones de la región en espera (Fráncfort) haga clic en el menú Hamburguesa, vaya a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres. El estado del grupo de protección de DR debe ser Activo.

-
Tarea 3: Adición de miembros a los grupos de protección de DR
Requisitos
-
Cree un nuevo grupo de volúmenes
fsdr_volume_group_test. Debe crear los nuevos detalles del grupo de volúmenes en la región principal (Fráncfort), hacer clic en el menú Hamburguesa, ir a Almacenamiento, Grupos de volúmenes y crear grupo de volúmenes.
-
Seleccione el volumen en bloque y de inicio de la instancia informática. En nuestro caso, solo tenemos el volumen de inicio de la instancia informática.

-
Active la replicación entre regiones y la región de destino.

Detalles necesarios para mover recursos de una región a otra OCID de instancia ocid1.instancia............. ID de VNIC de origen ocid1.vnic.oc1…………. ID de compartimento de destino ocid1.compartment.oc1………….. OCID de grupo de volúmenes ocid1.volumegroup.oc1………….
-
A continuación se muestra la sintaxis para agregar miembros al grupo de protección de DR.
Sintaxis:
oci disaster-recovery dr-protection-group update [OPTIONS]Parámetros Necesarios:
--dr-protection-group-id [text] --members -
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
instance_members.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual en OCI Linux VM.If. Tiene opciones avanzadas para mover la instancia. Agregue las propiedades necesarias.Archivo JSON para agregar los miembros (recursos informáticos y grupo de volúmenes) al grupo de protección de DR.
{ "displayName": "CLI_FSDR_Primary", "members": [ { "memberId": "ocid1.instance.oc1....................................", "memberType": "COMPUTE_INSTANCE", "isMovable": true, "vnicMapping": [ { "sourceVnicId": "ocid1.vnic.oc1................................", "destinationSubnetId": "ocid1.subnet.oc1........................" } ], "destinationCompartmentId": "ocid1.compartment.oc1...................." }, { "memberId": "ocid1.volumegroup.oc1...................................", "memberType": "VOLUME_GROUP" }], "logLocation": { "bucket": "FSDR_storage_primary", "namespace": "frrudixxxxx" } } -
Utilice el siguiente comando para agregar miembros al DRPG.
oci disaster-recovery dr-protection-group update --dr-protection-group-id ocid1.drprotectiongroup.oc1..................................... --from-json file://instance_members.json --force --debug
-
Puede verificar el estado de la solicitud de trabajo de DRPG de actualización en la región principal (Fráncfort), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres, seleccionar CLI_FSDR_Primary_test y hacer clic en Solicitudes de trabajo.

-
Puede verificar que los recursos informáticos y del grupo de volúmenes se hayan agregado correctamente en el DRPG de la región principal (Fráncfort), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres, seleccionar CLI_FSDR_Primary_test y hacer clic en Miembros.

Tarea 4: Creación del Plan de Switchover en la Región en Espera
-
A continuación se muestra la sintaxis para crear el plan de switchover.
Sintaxis:
oci disaster-recovery dr-plan create [OPTIONS]Parámetros Necesarios:
--dr-protection-group-id [text] --display-name [text] --type [text] -
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
CreateDrPlan.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "drProtectionGroupId": "ocid1.drprotectiongroup...........................", "displayName": "My_OCI_DR_Plan", "type": "SWITCHOVER" } -
Utilice el siguiente comando para crear el plan de switchover.
oci disaster-recovery dr-plan create --dr-protection-group-id ocid1.drprotectiongroup.oc1..................................... --from-json file://CreateDrPlan.json
-
Puede verificar el plan de DR en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, CLI_storage_secondary_test y Planes.

Tarea 5: Personalización del plan de switchover con grupos de planes definidos por el usuario
-
Full Stack DR permite crear grupos de planes definidos por el usuario para personalizar los detalles de DR plans.Get para el plan de DR identificado por
drPlanIdque hemos creado en la tarea 4.oci disaster-recovery dr-plan get --dr-plan-id ocid1.drplan.oc1......... > dr-plan-get.jsonEsto creará un archivo JSON denominado
dr-plan-get.jsoncon el siguiente contenido en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "data": { "compartment-id": "ocid1.compartment.oc1................................", "defined-tags": { "Oracle-Tags": { "CreatedBy": "oracleidentitycloudservice/sathish.mahadev@oracle.com", "CreatedOn": "2023-11-23T09:22:09.222Z" } }, "display-name": "My OCI DR Plan", "dr-protection-group-id": "ocid1.drprotectiongroup.oc1.................", "freeform-tags": {}, "id": "ocid1.drplan.oc1.eu-frankfurt-1.aaaaaaaacmfg3v..................", "life-cycle-details": null, "lifecycle-state": "ACTIVE", "peer-dr-protection-group-id": "ocid1.drprotectiongroup.oc1............", "peer-region": "uk-london-1", "plan-groups": [ { "display-name": "Built-In Prechecks", "id": "sgid1.group..AwplAFAmPMSjruIpY8m2cw4v.......................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMvn4IpY8m...................", "id": "sgid1.step..PO9O2GisLb05WkUKebi4Hofc0...................", "is-enabled": true, "member-id": "ocid1.instance.oc1.uk-london-1...................", "timeout": 3600, "type": "COMPUTE_INSTANCE_LAUNCH_PRECHECK", "user-defined-step": null }, { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMSjrPIH1zlApY...............", "id": "sgid1.step..IwKsQfyM6w78JcvklS2JulU2GdH6l...............", "is-enabled": true, "member-id": "ocid1.instance.oc1.uk-london-1.anw...............", "timeout": 3600, "type": "COMPUTE_INSTANCE_REMOVE_PRECHECK", "user-defined-step": null }, { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMm2cw4v.....................", "id": "sgid1.step..XASO1rLLQkrsOUPN............................", "is-enabled": true, "member-id": "ocid1.instance.oc1...............................", "timeout": 3600, "type": "COMPUTE_INSTANCE_STOP_PRECHECK", "user-defined-step": null }, { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmpY8m2cw4v....................", "id": "sgid1.step..VcHYP3vKNNTrg0gMYuw.........................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "UNKNOWN_ENUM_VALUE", "user-defined-step": null }, { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPY8m2cw4v....................", "id": "sgid1.step..wRdVq2t2d9It8P5TT2CvpMN7sy496o..............", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "VOLUME_GROUP_RESTORE_SWITCHOVER_PRECHECK", "user-defined-step": null } ], "type": "BUILT_IN_PRECHECK" }, { "display-name": "Stop Compute Instances", "id": "sgid1.group..XEqWbSZn72MsIKfPAPh2cdBah9.....................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..XEqWbSZn72MsIKfP.....................", "id": "sgid1.step..GhvhuUwDXmyqaJe15ZrFc7......................", "is-enabled": true, "member-id": "ocid1.instance.oc1...............................", "timeout": 3600, "type": "COMPUTE_INSTANCE_STOP", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Switchover Volume Groups", "id": "sgid1.group..32adaPzUEQ7aH1uDWQ5VM1j........................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..32adaPzUEQ7aH........................", "id": "sgid1.step..ef9UNZtJ1rZIbAmW7aZK........................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "VOLUME_GROUP_RESTORE_SWITCHOVER", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Launch Compute Instances", "id": "sgid1.group..5hcYKKlYTRiBwIDJcbt............................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..5hcYKKlYT............................", "id": "sgid1.step..woJnsXF5wTpY3uf6M...........................", "is-enabled": true, "member-id": "ocid1.instance.oc1...............................", "timeout": 3600, "type": "COMPUTE_INSTANCE_LAUNCH", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Reverse Volume Groups' Replication", "id": "sgid1.group..zPThgbBHnakEowbozz57EWGg.......................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..zPThgbBHnakEo........................", "id": "sgid1.step..w5n1aGHFGCCWGtkfbm9U........................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "VOLUME_GROUP_REVERSE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Terminate Compute Instances", "id": "sgid1.group..dfo08HuDTUIdkpt5l..............................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..dfo08H...............................", "id": "sgid1.step..7SMxaezWR5lYX...............................", "is-enabled": false, "member-id": "ocid1.instance.oc1...............................", "timeout": 3600, "type": "COMPUTE_INSTANCE_TERMINATE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Remove Compute Instances from DR Protection Group", "id": "sgid1.group..pOeXUaXGLb1uhTQRwSJEB4.........................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..pOeXUaXGLb1uhT.......................", "id": "sgid1.step..WilcZMUCDF42M0dhABNy........................", "is-enabled": true, "member-id": "ocid1.instance.oc1...............................", "timeout": 3600, "type": "COMPUTE_INSTANCE_REMOVE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Terminate Volume Groups", "id": "sgid1.group..FfcGwUBiibLFaYFfcnmHv2Q591.....................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..FfcGwUBiibLFaY.......................", "id": "sgid1.step..wipkZ4tXRQaIxJ0bAWzOI.......................", "is-enabled": false, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "VOLUME_GROUP_TERMINATE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Remove Volume Groups from DR Protection Group", "id": "sgid1.group..RWQ1nwbf6JkIir5vMOgz0frx.......................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..RWQ1nwbf6JkIir.......................", "id": "sgid1.step..7bPFQyPkxXU4zaywzFNfp.......................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1............................", "timeout": 3600, "type": "VOLUME_GROUP_REMOVE", "user-defined-step": null } ], "type": "BUILT_IN" } ], "system-tags": {}, "time-created": "2023-11-23T09:22:09.690000+00:00", "time-updated": "2023-11-24T06:25:43.748000+00:00", "type": "SWITCHOVER" }, "etag": "b73b71668a7f52474c4c7df9c779d9c7aae77c27109be--gzip" } -
Puede agregar grupos definidos por el usuario y pasos a un plan de Disaster Recovery (DR) después de que la DR de pila completa cree un plan de DR inicial con grupos y pasos incorporados. Tiene la opción de utilizar funciones de script u OCI como parte del paso definido por el usuario. Para obtener más información, consulte Grupos de planes definidos por el usuario de OCI Full Stack Disaster Recovery. Los grupos de planes definidos por el usuario se pueden colocar en cualquier lugar del plan de DR después del grupo de planes de comprobaciones previas incorporadas. En este tutorial, agregaremos nuestro grupo de planes definido por el usuario (CustGroup-Demostración) para agregar el final del plan. En el paso se utilizará un script de shell simple para crear carpetas y archivos una vez que la instancia informática se inicie en la región de Londres.
-
Actualice el archivo
dr-plan-get.jsoncreado en el paso anterior para agregar un grupo de planes definido por el usuario con un paso al final del contenido del archivo a los grupos de planes existentes y cambie el nombre del archivodr-plan-get.jsonadr-plan-get_updated.json.Finalmente, el archivo JSON se ve a continuación después de agregar el nuevo grupo definido por el usuario.
[ { "display-name": "Built-In Prechecks", "id": "sgid1.group..AwplAFAmPMSjrPIH1zlAIqu....................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmP....................", "id": "sgid1.step..PO9O2GisLb05WkUKeb..................", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_LAUNCH_PRECHECK", "user-defined-step": null }, { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMSj.................", "id": "sgid1.step..IwKsQfyM6w78JcvklS2.................", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_REMOVE_PRECHECK", "user-defined-step": null }, { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMSjrP...............", "id": "sgid1.step..XASO1rLLQk2GfJjKYlOf5...............", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_STOP_PRECHECK", "user-defined-step": null }, { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPMSjrP...............", "id": "sgid1.step..VcHYP3vKNNTr6Ha5CB..................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "UNKNOWN_ENUM_VALUE", "user-defined-step": null }, { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..AwplAFAmPM...................", "id": "sgid1.step..wRdVq2..............................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "VOLUME_GROUP_RESTORE_SWITCHOVER_PRECHECK", "user-defined-step": null } ], "type": "BUILT_IN_PRECHECK" }, { "display-name": "Stop Compute Instances", "id": "sgid1.group..XEqWbSZn72MsIKfPAPh2cdBah9F1rW.............", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..XEqWbSZn72Ms.................", "id": "sgid1.step..GhvhuUwDXmyqaJe1....................", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_STOP", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Switchover Volume Groups", "id": "sgid1.group..32adaPzUEQ7aH1uDWQ5VM......................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..32adaPzUEQ7aH1uD.............", "id": "sgid1.step..ef9UNZtJ1rZ.........................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "VOLUME_GROUP_RESTORE_SWITCHOVER", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Launch Compute Instances", "id": "sgid1.group..5hcYKKlYTRiBwIDJcbt3mxvA...................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..5hcYKKlYTRi..................", "id": "sgid1.step..woJnsXF5wTpY3.......................", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_LAUNCH", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Reverse Volume Groups' Replication", "id": "sgid1.group..zPThgbBHnakEowbozz57EW4vAdM9O", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..zPThgbBH.....................", "id": "sgid1.step..w5n1aGHFGCCWGtk.....................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "VOLUME_GROUP_REVERSE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Terminate Compute Instances", "id": "sgid1.group..dfo08HuDTUIdkpt5loA5zB.....................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..dfo08HuDTUIdkpt5lo...........", "id": "sgid1.step..7SMxaezWR5lYXQ......................", "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_TERMINATE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Remove Compute Instances from DR Protection Group", "id": "sgid1.group..pOeXUaXGLb1uhTQRwSJEB4Yw...................", "steps": [ { "display-name": "drtestwls-bastion-instance", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..pOeXUaXGLb1..................", "id": "sgid1.step..WilcZMUCDF42M0dhAB..................", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "COMPUTE_INSTANCE_REMOVE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Terminate Volume Groups", "id": "sgid1.group..FfcGwUBiibLFaYZvHEUmQRDSd..................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..FfcGwUBiibLFaYFfcnmH.........", "id": "sgid1.step..wipkZ4tXRQaIxJ0bAWzOINqf............", "is-enabled": false, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "VOLUME_GROUP_TERMINATE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "Remove Volume Groups from DR Protection Group", "id": "sgid1.group..RWQ1nwbf6JkIir5vMOgz0Eti...................", "steps": [ { "display-name": "fsdr_volume_group_test", "error-mode": "STOP_ON_ERROR", "group-id": "sgid1.group..RWQ1nwbf6JkIir...............", "id": "sgid1.step..7bPFQyPkxXU4zaywzFN.................", "is-enabled": true, "member-id": "ocid1.volumegroup.oc1....................", "timeout": 3600, "type": "VOLUME_GROUP_REMOVE", "user-defined-step": null } ], "type": "BUILT_IN" }, { "display-name": "CustGroup-Demo", "steps": [ { "display-name": "Create Folder and Files under /home/opc", "error-mode": "CONTINUE_ON_ERROR", "is-enabled": true, "member-id": "ocid1.instance.oc1.......................", "timeout": 3600, "type": "USER_DEFINED", "user-defined-step": { "run-as-user": "opc", "run-on-instance-id": "ocid1.instance.oc1..........", "run-on-instance-region": "uk-london-1", "script-command": "/home/opc/scripts/testCommand.sh", "step-type": "RUN_LOCAL_SCRIPT" } } ], "type": "USER_DEFINED" } ] -
Utilice el comando para actualizar el plan de DR identificado por
drPlanIdmediante el archivodr-plan-get_updated.jsonrecién actualizado.oci disaster-recovery dr-plan update --dr-plan-id ocid1.drplan.oc1.eu-frankfurt-1.aaaajfq --from-json file://dr-plan-get_updated.json --debug -
Puede verificar el grupo definido por el usuario recién creado en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres, Ejecuciones de plan y My_OCI_DR_Plan.

Tarea 6: Ejecutar comprobaciones previas para el plan de switchover en la región Standby
-
A continuación se muestra la sintaxis para ejecutar comprobaciones previas para el plan de switchover.
Sintaxis:
oci disaster-recovery dr-plan-execution create-switchover-precheck [OPTIONS]Parámetros Necesarios:
--plan-id [text] -
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
PrecheckExecution.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.{ "displayName": "My_OCI_DR_Plan", "planId": "ocid1.drplan.oc1.............................................", "executionOptions": { "planExecutionType": "SWITCHOVER_PRECHECK" } } -
Utilice el siguiente comando para ejecutar comprobaciones previas para el plan de switchover en la región Standby (Londres).
oci disaster-recovery dr-plan-execution create-switchover-precheck --from-json file://PrecheckExecution.json --debug
-
Puede verificar el estado de comprobación previa de switchover en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres, Ejecuciones de plan y Mi plan de DR de OCI.

Tarea 7: Ejecución del Plan de Switchover en la Región en Espera (Londres)
-
A continuación se muestra la sintaxis para ejecutar el plan de switchover.
Sintaxis:
oci disaster-recovery dr-plan-execution create-switchover [OPTIONS]Parámetros Necesarios:
--plan-id [text] -
Cree un archivo JSON con el siguiente contenido y asígnele el nombre
SwitchoverExecution.json. Guarde el archivo en la ubicación preferida. Hemos almacenado el archivo en el directorio de trabajo actual de la máquina virtual de Linux de OCI.Archivo JSON para asociación
{ "displayName": "executeDRplan", "planId": "ocid1.drplan.oc1.............................................", "executionOptions": { "planExecutionType": "SWITCHOVER" } }Utilice el siguiente comando para ejecutar el plan de DR.
oci disaster-recovery dr-plan-execution create --from-json file://SwitchoverExecution.json --debug

-
Puede verificar el estado de ejecución del plan en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres y hacer clic en Ejecuciones del plan.

-
Puede verificar el estado de ejecución del plan de DR en la región en espera (Londres), hacer clic en el menú de hamburguesa, ir a Migración y recuperación ante desastres, Grupo de protección de recuperación ante desastres, Ejecuciones de plan y hacer clic en ExecuteDRplan.

Pasos Siguientes
Ha visto cómo utilizar comandos de la CLI de OCI para crear grupos de protección de DR, asociar, agregar miembros, crear un plan de DR, ejecutar comprobaciones previas y un plan de DR. Utilice la CLI de OCI para realizar varias operaciones de ciclo de vida de recuperación ante desastres de pila completa a escala para sus sistemas de negocio.
Enlaces relacionados
-
Recuperación ante desastres de pila completa para la recuperación ante desastres de VM en frío
-
Full Stack Disaster Recovery: secuencias de comandos de grupos definidas por el usuario
Agradecimientos
- Autores: Sathish Mahadev (líder de tecnología de implementación: Oracle Lift Services), Vasudeva Manikandan (líder de tecnología de implementación: Oracle Lift Services), Suraj Ramesh (mánager de productos de Full Stack Disaster Recovery)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Automate Full Stack Disaster Recovery with OCI CLI for a Cold Standby Topology
F90398-01
December 2023
Copyright © 2023, Oracle and/or its affiliates.