Note:

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.

Nota: En este ejemplo, utilizaremos FRANKFURT como región principal y LONDON como región en espera.

Arquitectura de despliegue

Arquitectura de FSDR

Requisitos

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

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

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

  3. 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"
    }
    
  4. 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
    

    CLI_FSDR_Primary

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

    CLI_FSDR_Primary

  6. 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"
    }
    
  7. 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
    

    CLI_FSDR_Secondry

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

    CLI_FSDR_Secondry

Tarea 2: Asociación de grupos de protección de DR

  1. 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]
    
  2. 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"
    }
    
  3. 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
    

    AssociateDrProtection

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

      AssociateDrProtection

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

      AssociateDrProtection

Tarea 3: Adición de miembros a los grupos de protección de DR

Requisitos

  1. 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
    
  2. 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"
            }
    }
    
  3. 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
    

    AddMembers

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

    AddMembers

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

    AddMembers

Tarea 4: Creación del Plan de Switchover en la Región en Espera

  1. 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]
    
  2. 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"
    }
    
  3. 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
    

    CreateDrPlan

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

    CreateDrPlan

Tarea 5: Personalización del plan de switchover con grupos de planes definidos por el usuario

  1. 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 drPlanId que hemos creado en la tarea 4.

    oci disaster-recovery dr-plan get --dr-plan-id ocid1.drplan.oc1......... > dr-plan-get.json
    

    Esto creará un archivo JSON denominado dr-plan-get.json con 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"
    }
    
    
  2. 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.

  3. Actualice el archivo dr-plan-get.json creado 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 archivo dr-plan-get.json a dr-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"
         }
     ]
    
    
  4. Utilice el comando para actualizar el plan de DR identificado por drPlanId mediante el archivo dr-plan-get_updated.json recié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
    
  5. 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.

    userDefinedPlanGroup

Tarea 6: Ejecutar comprobaciones previas para el plan de switchover en la región Standby

  1. 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]
    
  2. 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"
      }
    }
    
    
  3. 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
    

    createSwitchoverPrecheck

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

    createSwitchoverPrecheck

Tarea 7: Ejecución del Plan de Switchover en la Región en Espera (Londres)

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

    DRPlanExecution

    DRPlanExecution

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

    DRPlanExecution

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

    DRPlanExecution

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.

Agradecimientos

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.