Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Automatize o Full Stack Disaster Recovery com a CLI do OCI para uma Topologia Stand-by Fria
Introdução
O Oracle Cloud Infrastructure Full Stack Disaster Recovery (Full Stack DR) fornece uma solução de orquestração de recuperação de desastre totalmente automatizada e abrangente para todas as camadas de um aplicativo de nuvem de pilha completa, incluindo infraestrutura, banco de dados e aplicativo. Usando o Full Stack DR, você pode recuperar seus aplicativos de pilha completa em regiões do OCI ou em domínios de disponibilidade dentro da mesma região.
A Oracle Cloud Infrastructure Command Line Interface (CLI do OCI) é uma ferramenta de pequeno porte que você pode usar sozinha ou com a Console do Oracle Cloud para concluir as tarefas do Oracle Cloud Infrastructure (OCI). A CLI (Interface de Linha de Comando) fornece a mesma funcionalidade básica da Console do Oracle Cloud, além de comandos adicionais. Alguns desses comandos, como a capacidade de executar scripts, estendem a funcionalidade da Console.
A CLI é criada no OCI SDK for Python e executada no Mac, Windows ou Linux. O código Python faz chamadas para APIs do Oracle Cloud Infrastructure para fornecer a funcionalidade implementada para os diferentes serviços. Essas são APIs REST que usam solicitações e respostas HTTPS.
Objetivos
Automatize as etapas do Full Stack Disaster Recovery usando a CLI (Interface de Linha de Comando) do OCI para uma topologia do Cold Standby Disaster Recovery.
-
Crie Grupos de Proteção de DR (Recuperação de Desastre) na região Principal e Stand-by.
-
Associar Grupos de Proteção de DR.
-
Adicione membros ao grupo de proteção de DR Principal.
-
Criar Plano de Switchover na região Stand-by.
-
Personalize o Plano de Switchover com um grupo de planos definido pelo usuário.
-
Execute pré-verificações para o Plano de Switchover na região Stand-by.
-
Execute o Plano de Switchover na região Stand-by.
Observação: Neste exemplo, usaremos FRANKFURT como região Principal e LONDON como região Stand-by.
Arquitetura da Implantação
Pré-requisitos
-
Instale a CLI do OCI.
-
Privilégios de administrador ou configurar as políticas necessárias do OCI Identity and Access Management para o Full Stack Disaster Recovery. Para obter mais informações, consulte Configurando políticas do OCI IAM para usar o Full Stack Disaster Recovery e Políticas para o Full Stack Disaster Recovery.
-
Crie um bucket do Oracle Object Storage na região Principal e na região Stand-by para armazenar logs de operação de Recuperação de Desastre. Consulte Object Storage.
-
Crie a VM do OCI Compute na região Principal (Frankfurt). Para obter mais informações, consulte Criar o OCI Compute.
-
Executando Comandos na Instância de Computação do OCI. Para obter mais informações, consulte Executando Comandos na instância do OCI Compute.
-
Chame scripts personalizados usando o comando de execução com o Oracle Cloud Infrastructure Full Stack Disaster Recovery. Para obter mais informações, consulte Comando de execução do OCI com o Full Stack DR.
Implementação
Para este tutorial, já criamos os recursos a seguir.
Recursos | Região Principal - Frankfurt |
---|---|
Bucket do Armazenamento de Objetos | FSDR_storage_primary_test |
Compartimento | sathish.mahadev |
Namespace | frrudica1wgd |
Instância memberId | ocid1.instância....................... |
sourceVnicId | ocid1.vnic.oc1…………………… |
Recursos | Rio de Janeiro - London |
---|---|
Bucket do Armazenamento de Objetos | FSDR_storage_secondary_test |
Compartimento | sathish.mahadev |
Namespace | frrudica1wgd |
Tarefa 1: Criar Grupos de Proteção de DR na Região Principal e Stand-by
-
Supõe-se que você tenha instalado a CLI do OCI com base em sua plataforma preferida. Instalamos a CLI do OCI em uma VM do OCI Linux. Defina as credenciais e o perfil do OCI para estabelecer conexão com a região de Frankfurt.
-
Veja a seguir a sintaxe para criar o grupo de proteção de DR.
Uso:
oci disaster-recovery dr-protection-group create [OPTIONS]
Parâmetros Obrigatórios:
--compartment-id, -c [text] --display-name [text] --log-location [complex type]
Este é um tipo complexo cujo valor deve ser um JSON válido.
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
log-location.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.{ "bucket": "FSDR_storage_primary_test", "namespace": "frrudica1wgd" }
-
Use o comando a seguir para criar o grupo de proteção de DR na região 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
-
Você pode verificar os detalhes do grupo de proteção de DR na região Principal (Frankfurt), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, Recuperação de Desastres e grupo de Proteção de Recuperação de Desastres. O status do grupo de proteção de DR deve ser Ativo.
-
Defina as credenciais e o perfil do OCI para estabelecer conexão com a região de Londres. Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
log-sec-location.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.{ "bucket": "FSDR_storage_secondary_test", "namespace": "frrudica1wgd" }
-
Use o comando a seguir para criar o grupo de proteção de DR na região 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
-
Você pode verificar os detalhes do grupo de proteção de DR na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, Recuperação de Desastres, grupo de Proteção de Recuperação de Desastres. O status do grupo de proteção de DR deve ser Ativo.
Tarefa 2: Associar Grupos de Proteção de DR
-
Veja a seguir a sintaxe para associar os grupos de proteção de DR.
Uso:
oci disaster-recovery dr-protection-group associate [OPTIONS]
Parâmetros Obrigatórios:
--dr-protection-group-id [text] --role [text] --peer-id [text] --peer-region [text]
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
AssociateDrProtection.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.{ "peerRegion": "uk-london-1", "peerId": "ocid1.drprotectiongroup.oc1.uk................................", "role": "PRIMARY" }
-
Use o comando a seguir para criar uma associação entre duas regiões.
oci disaster-recovery dr-protection-group associate --dr-protection-group-id ocid1.drprotectiongroup.oc1............ --from-json file://AssociateDrProtection.json
-
Região Principal:
Você pode verificar a associação entre duas regiões na região Principal (Frankfurt), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, grupo Proteção de Recuperação de Desastres. O status do grupo de proteção de DR deve ser Ativo.
-
Região Stand-by:
Você pode verificar a associação entre duas regiões na região Stand-by (Frankfurt) clicando no menu Hambúrguer, vá para Migração e Recuperação de Desastres, grupo Proteção de Recuperação de Desastres. O status do grupo de proteção de DR deve ser Ativo.
-
Tarefa 3: Adicionar membros aos Grupos de Proteção de DR
Pré-requisitos
-
Crie um Novo grupo de Volumes
fsdr_volume_group_test
. Você precisa criar os novos detalhes do grupo de volumes na região Principal (Frankfurt), clicar no menu Hambúrguer, ir para Armazenamento, Grupos de Volumes e Criar grupo de Volumes. -
Selecione a inicialização e o volume em blocos da instância de computação. No nosso caso, temos apenas o volume de inicialização da instância de computação.
-
Ative a Replicação entre regiões e a região de destino.
Detalhes obrigatórios para mover recursos de uma região para outra OCID da Instância ocid1.instância............. Id Vnic de origem ocid1.vnic.oc1…………. ID do Compartimento de destino ocid1.compartment.oc1………….. OCID do grupo de volumes ocid1.volumegroup.oc1………….
-
Veja a seguir a sintaxe para adicionar membros ao grupo de proteção de DR.
Uso:
oci disaster-recovery dr-protection-group update [OPTIONS]
Parâmetros Obrigatórios:
--dr-protection-group-id [text] --members
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
instance_members.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual no OCI Linux VM.If. Você tem opções avançadas para mover a instância. Adicione as propriedades necessárias.Arquivo JSON para adicionar os membros (computação e grupo de volumes) ao grupo de proteção 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" } }
-
Use o comando a seguir para adicionar membros ao DRPG.
oci disaster-recovery dr-protection-group update --dr-protection-group-id ocid1.drprotectiongroup.oc1..................................... --from-json file://instance_members.json --force --debug
-
Você pode verificar o status de atualização da solicitação de serviço DRPG na região Principal (Frankfurt), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, Grupo de Proteção de Recuperação de Desastres, Selecionar CLI_FSDR_Primary_test e clicar em Solicitações de serviço.
-
Você pode verificar se os recursos do grupo Compute e Volume foram adicionados com sucesso no DRPG da região Principal (Frankfurt), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, grupo de Proteção de Recuperação de Desastres, selecionar CLI_FSDR_Primary_test e clicar em Membros.
Tarefa 4: Criar Plano de Switchover na região Stand-by
-
Abaixo está a sintaxe para criar o Plano de Switchover.
Uso:
oci disaster-recovery dr-plan create [OPTIONS]
Parâmetros Obrigatórios:
--dr-protection-group-id [text] --display-name [text] --type [text]
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
CreateDrPlan.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.{ "drProtectionGroupId": "ocid1.drprotectiongroup...........................", "displayName": "My_OCI_DR_Plan", "type": "SWITCHOVER" }
-
Use o comando a seguir para criar o plano de switchover.
oci disaster-recovery dr-plan create --dr-protection-group-id ocid1.drprotectiongroup.oc1..................................... --from-json file://CreateDrPlan.json
-
Você pode verificar o Plano de DR na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, CLI_storage_secondary_test e Planos.
Tarefa 5: Personalizar o Plano de Switchover com grupos de planos definidos pelo usuário
-
O Full Stack DR permite criar grupos de planos definidos pelo usuário para personalizar os detalhes do DR plans.Get para o plano de DR identificado por
drPlanId
que criamos na Tarefa 4.oci disaster-recovery dr-plan get --dr-plan-id ocid1.drplan.oc1......... > dr-plan-get.json
Isso criará um arquivo JSON chamado
dr-plan-get.json
com o conteúdo a seguir no diretório de trabalho atual na VM do OCI Linux.{ "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" }
-
Você pode adicionar grupos e etapas definidos pelo usuário a um plano de DR (Recovery) após o Full Stack DR criar um plano de DR inicial com grupos e etapas incorporados. Você tem a opção de usar as funções de script ou OCI como parte da etapa definida pelo usuário. Para obter mais informações, consulte Grupos de planos definidos pelo Usuário do OCI Full Stack Disaster Recovery. Os grupos de planos definidos pelo usuário podem ser colocados em qualquer lugar no plano de DR após o grupo de planos Pré-verificações Incorporadas. Neste tutorial, adicionaremos nosso grupo de planos definido pelo usuário (CustGroup-Demo) ao final do plano. A etapa usará um script shell simples para criar pastas e arquivos depois que a instância de computação for iniciada na região de Londres.
-
Atualize o
dr-plan-get.json
que foi criado na etapa anterior para adicionar um grupo de planos definido pelo usuário com uma etapa no final do conteúdo do arquivo aos grupos de planos existentes e renomeie o arquivodr-plan-get.json
comodr-plan-get_updated.json
.Finalmente, o arquivo JSON se parece com o seguinte depois de adicionar o novo grupo definido pelo usuário.
[ { "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" } ]
-
Use o comando para atualizar o plano de DR identificado por
drPlanId
usando o arquivodr-plan-get_updated.json
recém-atualizado.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
-
Você pode verificar o grupo definido pelo usuário recém-criado na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastre, grupo de Proteção de Recuperação de Desastre, Execuções do plano e My_OCI_DR_Plan.
Tarefa 6: Executar pré-verificações para o Plano de Switchover na região Stand-by
-
Abaixo está a sintaxe para executar pré-verificações do Plano de Switchover.
Uso:
oci disaster-recovery dr-plan-execution create-switchover-precheck [OPTIONS]
Parâmetros Obrigatórios:
--plan-id [text]
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
PrecheckExecution.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.{ "displayName": "My_OCI_DR_Plan", "planId": "ocid1.drplan.oc1.............................................", "executionOptions": { "planExecutionType": "SWITCHOVER_PRECHECK" } }
-
Use o comando a seguir para executar pré-verificações para a região Plano de Switchover em Stand-by (Londres).
oci disaster-recovery dr-plan-execution create-switchover-precheck --from-json file://PrecheckExecution.json --debug
-
Você pode verificar o status de pré-verificação do switchover na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastre, grupo Proteção de Recuperação de Desastre, Executões do plano e Meu Plano de DR do OCI.
Tarefa 7: Executar o Plano de Switchover na região Stand-by (Londres)
-
Abaixo está a sintaxe para executar o Plano de Switchover.
Uso:
oci disaster-recovery dr-plan-execution create-switchover [OPTIONS]
Parâmetros Obrigatórios:
--plan-id [text]
-
Crie um arquivo JSON com o conteúdo a seguir e nomeie-o como
SwitchoverExecution.json
. Salve o arquivo no local preferido. Armazenamos o arquivo no diretório de trabalho atual na VM do OCI Linux.Arquivo JSON para Associação
{ "displayName": "executeDRplan", "planId": "ocid1.drplan.oc1.............................................", "executionOptions": { "planExecutionType": "SWITCHOVER" } }
Use o comando a seguir para executar o Plano de DR.
oci disaster-recovery dr-plan-execution create --from-json file://SwitchoverExecution.json --debug
-
Você pode verificar o status de execução do plano na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, grupo Proteção de Recuperação de Desastres e clicar em Planejar execuções.
-
Você pode verificar o status de execução do plano de DR na região Stand-by (Londres), clicar no menu Hambúrguer, ir para Migração e Recuperação de Desastres, grupo de Proteção de Recuperação de Desastres, Planejar execuções e clicar em ExecuteDRplan.
Próximas Etapas
Você viu como usar comandos da CLI do OCI para criar grupos de proteção de DR, associar, adicionar membros, criar plano de DR, executar pré-verificações e plano de DR. Use a CLI do OCI para executar várias operações de ciclo de vida de DR de pilha completa em escala para seus sistemas de disponibilidade.
Links Relacionados
Agradecimentos
- Autores - Sathish Mahadev (Líder em Tecnologia de Implementação - Oracle Lift Services), Vasudeva Manikandan (Líder em Tecnologia de Implementação - Oracle Lift Services), Suraj Ramesh (Gerente de Produtos de Recuperação de Desastres de Pilha Completa)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o 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.