Criar e gerenciar discos replicados de forma síncrona


Persistent Disk regional e Hyperdisk Balanced High Availability são opções de armazenamento que permitem implementar serviços de alta disponibilidade (HA) no Compute Engine. O Persistent Disk regional e Hyperdisk Balanced High Availability replicam dados de maneira síncrona entre duas zonas na mesma região e garantem a alta disponibilidade para dados de disco de até uma falha na zona. O disco replicado de forma síncrona pode ser um disco de inicialização ou um disco não de inicialização.

Neste documento, explicamos como fazer as seguintes tarefas em discos replicados:

Antes de começar

  • Analise as diferenças entre os diferentes tipos de opções de armazenamento em disco.
  • Revise os conceitos básicos da replicação síncrona de discos.
  • Leia sobre o failover de disco replicado.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Para usar os exemplos do Terraform nesta página em um ambiente de desenvolvimento local, instale e inicialize a gcloud CLI e, em seguida, configure o Application Default Credentials com suas credenciais de usuário.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Confira mais informações em Set up authentication for a local development environment.

      REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Papéis e permissões necessárias

Para receber as permissões necessárias e criar um disco replicado de maneira síncrona, peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esses papéis predefinidos contêm as permissões necessárias para criar um disco replicado de maneira síncrona. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar um disco replicado de maneira síncrona:

  • compute.disks.create
  • compute.instances.attachDisk
  • compute.disks.use
  • Crie um snapshot de um disco: compute.disks.createSnapshot
  • Confira os detalhes de um disco: compute.disks.get
  • Receba uma lista de discos: compute.disks.list
  • Mudar o tamanho de um disco: compute.disks.update

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Limitações

  • Só é possível anexar Persistent Disk regionais a VMs que usam tipos de máquina E2, N1, N2 e N2D.
  • Você pode anexar o Hyperdisk Balanced High Availability somente a arquivos tipos de máquina compatíveis.
  • Não é possível criar um Persistent Disk regional a partir de uma imagem ou de um disco criado a partir de uma imagem.
  • Ao usar o modo somente leitura, é possível anexar um Persistent Disk equilibrado regional a, no máximo, 10 instâncias de VM.
  • O tamanho mínimo de um disco permanente regional padrão é 200 GB.
  • Só é possível aumentar o tamanho do volume do Disco permanente regional ou do Hyperdisk Balanced High Availability; não é possível diminuir o tamanho.
  • Os volumes do Disco permanente regional e do Hyperdisk Balanced High Availability têm desempenhos diferentes do que os discos zonais correspondentes. Para mais informações, consulte Desempenho do armazenamento em blocos.
  • Não é possível usar um volume do Hyperdisk Balanced High Availability que esteja no modo de vários gravadores como um disco de inicialização.
  • Se você criar um disco replicado clonando um disco zonal, as duas réplicas zonais não estarão totalmente sincronizadas no momento da criação. Após a criação, é possível usar o clone de disco regional em média em até três minutos. No entanto, talvez seja necessário aguardar diversos minutos até que o disco atinja um estado totalmente replicado e o objetivo de ponto de recuperação (RPO) esteja próximo de zero. Saiba como Verificar se o disco replicado foi totalmente replicado.

Sobre o uso de um disco replicado como um disco de inicialização para uma VM

É possível anexar um Persistent Disk regional ou um Hyperdisk Balanced High Availability (Pré-lançamento) como um disco de inicialização para cargas de trabalho com estado provisionadas com antecedência, antes de provisionar uma carga de trabalho de produção. Os discos de inicialização replicados não são destinados a espera ativa, porque não podem ser anexados simultaneamente a duas VMs.

Só é possível criar Persistent Disk regional ou volumes do Hyperdisk Balanced High Availability a partir de snapshots. Não é possível criar um disco replicado usando uma imagem.

Para usar um disco replicado como um disco de inicialização da VM, use um dos seguintes métodos:

  1. Crie uma VM com um disco de inicialização replicado.
  2. Crie um disco de inicialização replicado e anexe-o a uma VM:
    1. Crie um disco replicado com base em um snapshot de um disco de inicialização.
    2. Anexar um disco de inicialização replicado a uma VM

Se você precisar fazer o failover de um disco de inicialização replicado para uma VM em espera em execução na zona de réplica, siga as etapas descritas em Anexar um disco de inicialização replicado a uma VM.

Criar um disco replicado de forma síncrona

Crie um volume do Persistent Disk regional ou do Hyperdisk Balanced High Availability (Pré-lançamento). O disco precisa estar na mesma região da VM a que você planeja anexá-lo.

Se você criar um volume do Hyperdisk Balanced High Availability, também poderá permitir que diferentes VMs acessem o disco simultaneamente definindo o modo de acesso ao disco. Para mais informações, consulte Compartilhar um disco entre VMs.

Para o Persistent Disk regional, se você criar um disco no console do Google Cloud, o tipo de disco padrão será pd-balanced. Se você criar um disco usando a gcloud CLI ou REST, o tipo de disco padrão será pd-standard.

Console

  1. No console do Google Cloud, acesse a página Discos.

    Acessar "Discos"

  2. Selecione o projeto necessário.

  3. Clique em Criar disco.

  4. Especifique um Nome para o disco.

  5. Em Local, escolha Regional.

  6. Selecione a Região e a Zona. É preciso selecionar a mesma região ao criar a VM.

  7. Selecione a Zona de réplica na mesma região. Anote as zonas selecionadas porque você precisa anexar o disco à VM em uma delas.

  8. Selecione o Tipo de origem do disco.

  9. Selecione o Tipo de disco e o Tamanho.

  10. Clique em Criar para concluir a criação do disco.

gcloud

Crie um disco replicado de forma síncrona usando o comando compute disks create.

Se você precisar de um disco permanente SSD regional para ter capacidade de processamento ou IOPS extras, inclua a sinalização --type e especifique pd-ssd.

gcloud compute disks create DISK_NAME \
   --size=DISK_SIZE \
   --type=DISK_TYPE \
   --region=REGION \
   --replica-zones=ZONE1,ZONE2
   --access-mode=DISK_ACCESS_MODE

Substitua:

  • DISK_NAME: o nome do novo disco
  • DISK_SIZE: o tamanho do novo disco em GB.
  • DISK_TYPE: Para o Persistent Disk regional, esse é o tipo do disco replicado. O valor padrão é pd-standard. Para o Hyperdisk, especifique o valor hyperdisk-balanced-high-availability.
  • REGION: a região do disco replicado, por exemplo, europe-west1.
  • ZONE1, ZONE2: as zonas dentro da região em que as duas réplicas de disco estão localizadas, por exemplo: europe-west1-b,europe-west1-c
  • DISK_ACCESS_MODE: opcional: como as VMs podem acessar os dados no disco. Os valores aceitos são:

    • READ_WRITE_SINGLE, para acesso de leitura e gravação de uma VM. Esse é o padrão.
    • READ_WRITE_MANY, para acesso de leitura e gravação de várias VMs.

    Só é possível definir o modo de acesso para discos do Hyperdisk Balanced High Availability.

Terraform

Para criar um disco permanente regional ou um volume do Hyperdisk Balanced High Availability, use o recurso google_compute_region_disk.

resource "google_compute_region_disk" "regiondisk" {
  name                      = "region-disk-name"
  snapshot                  = google_compute_snapshot.snapdisk.id
  type                      = "pd-ssd"
  region                    = "us-central1"
  physical_block_size_bytes = 4096
  size                      = 11

  replica_zones = ["us-central1-a", "us-central1-f"]
}

REST

Para criar um Disco permanente regional ou volume do Hyperdisk Balanced High Availability, crie uma solicitação POST para o método compute.regionDisks.insert.

Para criar um disco vazio, não especifique uma origem de snapshot.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks
{
  "name": "DISK_NAME",
  "region": "projects/PROJECT_ID/regions/REGION",
  "replicaZones": [
    "projects/PROJECT_ID/zones/ZONE1",
    "projects/PROJECT_ID/zones/ZONE2"
  ],
  "sizeGb": "DISK_SIZE",
  "type": "projects/PROJECT_ID/regions/REGION/diskTypes/DISK_TYPE",
  "accessMode": "DISK_ACCESS_MODE"
}

Substitua:

  • PROJECT_ID: ID do projeto;
  • REGION: a região do disco replicado, por exemplo, europe-west1.
  • DISK_NAME: o nome do novo disco.
  • ZONE1, ZONE2: as zonas em que as réplicas do novo disco precisam estar localizadas.
  • DISK_SIZE: o tamanho do novo disco em GB.
  • DISK_TYPE: Para o Hyperdisk Balanced regional, este é o tipo de Hyperdisk Balanced. Para o Hyperdisk, especifique o valor hyperdisk-balanced-high-availability.
  • DISK_ACCESS_MODE: como as VMs podem acessar os dados no disco. Os valores aceitos são:

    • READ_WRITE_SINGLE, para acesso de leitura e gravação de uma VM. Esse é o padrão.
    • READ_WRITE_MANY, para acesso de leitura e gravação de várias VMs.

    Só é possível definir o modo de acesso para discos do Hyperdisk Balanced High Availability.

Anexar um disco replicado à VM

Para discos que não são de inicialização, depois de criar um Persistent Disk regional ou um volume do Hyperdisk Balanced High Availability (Pré-lançamento), é possível anexá-lo a uma VM. A VM precisa estar na mesma região que o disco.

Para anexar um disco de inicialização replicado a uma VM, consulte Anexar um disco de inicialização replicado a uma VM.

Para anexar um disco a várias VMs, repita o procedimento desta seção para cada VM.

Console

  1. Para anexar um disco a uma VM, acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Na coluna Nome, clique no nome da VM.

  3. Clique em Editar .

  4. Clique em Anexar disco atual.

  5. Escolha o disco replicado criado anteriormente para adicionar à VM.

  6. Se você vir um aviso indicando que o disco selecionado já está anexado a outra instância, marque a caixa Forçar anexação de disco para forçar a anexação do disco à VM em que você está editando.

    Confira os casos de uso para anexação forçada de discos replicados em Failover de disco replicado.

  7. Clique em Salvar.

  8. Na página Editar VM, clique em Salvar.

gcloud

Para anexar um disco replicado a uma VM em execução ou parada, use o comando compute instances attach-disk com a flag --disk-scope definida como regional.

gcloud compute instances attach-disk VM_NAME \
    --disk=DISK_NAME \
    --disk-scope=regional

Substitua:

  • VM_NAME: o nome da VM a que você está adicionando o disco replicado.
  • DISK_NAME: o nome do novo disco que você está anexando à VM.

Terraform

Para anexar um disco permanente regional ou um volume do Hyperdisk Balanced High Availability a uma VM, use o recurso google_compute_attached_disk.

resource "google_compute_instance" "test_node" {
  name         = "test-node"
  machine_type = "f1-micro"
  zone         = "us-west1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }
  attached_disk {
    source      = google_compute_disk.default.id
    device_name = google_compute_disk.default.name
  }

  network_interface {
    network = "default"
    access_config {
      # Ephemeral IP
    }
  }

  # Ignore changes for persistent disk attachments
  lifecycle {
    ignore_changes = [attached_disk]
  }


}

REST

Para anexar um disco replicado a uma VM em execução ou interrompida, crie uma solicitação POST para o método compute.instances.attachDisk e inclua o URL do disco replicado que você criou.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk
{
  "source": "/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

Substitua:

  • PROJECT_ID: o ID do projeto
  • ZONE: o local da VM.
  • VM_NAME: o nome da VM a que você está adicionando o novo disco replicado.
  • REGION: a região do disco replicado.
  • DISK_NAME: o nome do disco replicado

Para discos não inicializáveis, depois de criar e anexar um disco replicado em branco a uma VM, é necessário formatar e montar o disco, para que o sistema operacional possa usar o espaço de armazenamento disponível.

Mudar um disco zonal para um disco replicado

Para converter seu Persistent Disk zonal atual em um Persistent Disk regional, crie um novo disco clonando um disco zonal existente. Para mais informações, consulte Como criar um clone de disco regional a partir de um disco zonal.

Para converter um Hyperdisk em um disco replicado de forma síncrona, crie um novo disco do Hyperdisk Balanced High Availability com base em um snapshot do disco atual, conforme descrito em Mudar o tipo de disco.

Criar uma VM com discos replicados

Ao criar uma VM, você pode incluir volumes regionais de Persistent Disk ou Hyperdisk Balanced High Availability (Pré-lançamento) como discos adicionais.

Para criar e anexar um Persistent Disk regional ou um volume do Hyperdisk Balanced High Availability a uma VM durante a criação da VM, consulte uma destas opções:

Criar uma VM com um disco de inicialização replicado

Ao configurar uma instância de VM altamente disponível, é possível criar a VM principal com um disco de inicialização replicado. Se ocorrer uma interrupção zonal, você poderá reiniciar a VM na zona secundária em vez de criar uma nova.

Em uma configuração de alta disponibilidade, em que o dispositivo de inicialização é um disco replicado, o Google recomenda não pré-criar e iniciar a instância de espera. Em vez disso, no estágio de failover, anexe o disco replicado atual ao criar a instância de espera usando a opção forceAttach.

Para criar uma VM com um disco de inicialização replicado, use um destes métodos:

gcloud

Use o comando gcloud compute instances create para criar uma VM e a flag --create-disk para especificar o disco replicado.

gcloud compute instances create PRIMARY_INSTANCE_NAME  \
 --zone=ZONE  \
 --create-disk=^:^name=REPLICATED_DISK_NAME:scope=regional:boot=true:type=DISK_TYPE:source-snapshot=SNAPSHOT_NAME:replica-zones=ZONE,REMOTE_ZONE

Ao especificar os parâmetros de disco, os caracteres ^:^ definem que o caractere de separação entre os parâmetros é dois-pontos (:). Isso permite usar uma vírgula (,) ao especificar o parâmetro "replica-zones".

Substitua:

  • PRIMARY_INSTANCE_NAME: um nome para a VM
  • ZONE: o nome da zona em que você quer criar a VM
  • REPLICATED_DISK_NAME: um nome para o disco replicado
  • DISK_TYPE: o tipo de disco a ser criado, por exemplo, hyperdisk-balanced-high-availability (Pré-lançamento) ou pd-balanced.
  • SNAPSHOT_NAME: o nome do snapshot que você criou para o disco de inicialização
  • REMOTE_ZONE: a zona alternativa para o disco replicado

REST

Crie uma solicitação POST para o método instances.insert e especifique as propriedades boot: 'true' e replicaZones. Por exemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
 "name": "VM_NAME",
 "disks": [{
    "boot": true,
    "initializeParams": {
       "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME",
       "replicaZones": [
           "projects/PROJECT_ID/zones/ZONE",
           "projects/PROJECT_ID/zones/REMOTE_ZONE"
       ],
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/DISK_TYPE"
    }
  }],
 "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ]
}

Substitua:

  • PROJECT_ID: ID do projeto;
  • ZONE: o nome da zona em que você quer criar a VM
  • VM_NAME: um nome para a VM
  • BOOT_SNAPSHOT_NAME: o nome do snapshot do disco de inicialização
  • REMOTE_ZONE: a zona remota do disco replicado
  • DISK_TYPE: o tipo de disco a ser criado, por exemplo, hyperdisk-balanced-high-availability (Pré-lançamento) ou pd-balanced

Anexar um disco de inicialização replicado a uma VM

Siga estas etapas:

  • Substitua o disco de inicialização de uma VM atual por um disco de inicialização replicado.
  • Faça failover de um disco de inicialização replicado para uma VM de espera ativa em execução na zona de backup. Para fazer isso, anexe o disco replicado à VM como o disco de inicialização.

Estas etapas pressupõem que o disco replicado e a VM já existem.

gcloud

  1. Pare a VM.
    gcloud compute instances stop VM_NAME  --zone=ZONE
    
  2. Remova o disco de inicialização atual da VM.
    gcloud compute instances detach-disk VM_NAME \
     --zone=ZONE --disk=CURRENT_BOOT_DEVICE_NAME
    
  3. Anexe o disco de inicialização replicado à VM.
    gcloud compute instances attach-disk VM_NAME  \
     --zone=ZONE  \
     --disk=REPLICATED_DISK_NAME  \
     --disk-scope=regional --force-attach
    
  4. Reinicie a VM.

    gcloud compute instances start VM_NAME
    

Substitua as variáveis nos comandos anteriores pelas seguintes:

  • VM_NAME: o nome da VM a que você quer anexar o disco de inicialização replicado.
  • ZONE: a zona em que a VM está localizada
  • CURRENT_BOOT_DEVICE_NAME: o nome do disco de inicialização que está sendo usado pela VM. Geralmente, é igual ao nome da VM.
  • REPLICATED_DISK_NAME: o nome do disco reproduzido que você quer anexar à VM como um disco de inicialização.

Opcional: se não for possível remover o disco de inicialização replicado da VM principal devido a uma interrupção ou falha, inclua a flag --force-attach.

REST

  1. Pare a VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop
    
  2. Remova o disco de inicialização atual da VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/detachDisk?deviceName=CURRENT_BOOT_DEVICE_NAME
    
  3. Anexe o disco de inicialização replicado à VM.

    Crie uma solicitação POST para o método compute.instances.attachDisk e inclua o URL do disco de inicialização replicado:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk
    {
    "source": "compute/v1/projects/PROJECT_ID/regions/REGION/disks/REPLICATED_DISK_NAME",
    "boot": true
    }
  4. Reinicie a VM.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/start
    

Substitua as variáveis nos comandos anteriores pelas seguintes:

  • PROJECT_ID: ID do projeto;
  • VM_NAME: o nome da VM a que você quer anexar o disco replicado.
  • ZONE: a zona em que a VM está localizada
  • CURRENT_BOOT_DEVICE_NAME: o nome do disco de inicialização que está sendo usado pela VM. Geralmente, é igual ao nome da VM.
  • REGION: a região em que o disco replicado está localizado.
  • REPLICATED_DISK_NAME: o nome do disco reproduzido que você quer anexar à VM como um disco de inicialização.

Opcional: se não for possível remover o disco de inicialização replicado da VM que foi originalmente anexado devido a uma interrupção ou falha, inclua "forceAttach": true no corpo da solicitação.

Listar e descrever seus discos replicados

É possível conferir uma lista de todos os discos replicados configurados e informações sobre as propriedades, incluindo o seguinte:

  • ID do disco
  • Nome do disco
  • Tamanho
  • Tipo de disco
  • Região
  • Réplicas zonais

Para conferir informações detalhadas sobre os discos replicados, use o seguinte:

Redimensionar um disco replicado

Se as VMs com discos replicados de forma síncrona precisarem de mais espaço de armazenamento, redimensione os discos. Você pode reescalonar discos a qualquer momento, independentemente do disco estar anexado a uma VM em execução. Se precisar separar seus dados em volumes exclusivos, crie vários discos secundários para a VM. No Hyperdisk Balanced High Availability, também é possível aumentar os limites de IOPS e de capacidade de processamento do disco.

O comando para redimensionar um disco replicado é muito semelhante ao comando para redimensionar um disco não replicado. No entanto, é necessário especificar uma região em vez de uma zona para o local do disco.

É possível apenas aumentar, e não diminuir, o tamanho do disco. Para diminuir o tamanho do disco, crie um novo com um tamanho menor. Até excluir o disco maior e original, haverá cobrança pelos dois discos.

Para instruções sobre como modificar um disco replicado, consulte:

A seguir