Denuncie um anfitrião com falhas

Se detetar problemas numa VM H4D reservada que não consegue resolver de outra forma, como erros persistentes com o dispositivo RDMA, recomendamos que denuncie o respetivo anfitrião como defeituoso. Quando comunica que um anfitrião está com falhas, o Compute Engine comunica que o anfitrião está com falhas e, em seguida, repara automaticamente a VM executando a manutenção do anfitrião. Para VMs H4D, o Compute Engine tenta migrar a VM para um anfitrião diferente quando a manutenção é iniciada, o que pode ajudar a minimizar o tempo de inatividade da sua carga de trabalho.

Este documento explica como comunicar e reparar anfitriões com falhas para instâncias de máquinas virtuais (VMs) que fazem parte de clusters baseados em VMs. Para clusters do Google Kubernetes Engine (GKE), consulte o artigo Denuncie anfitriões com falhas através do GKE.

Limitações

Quando denuncia um anfitrião com falhas, aplicam-se as seguintes limitações:

  • Só pode denunciar um anfitrião com defeito se a VM executada no anfitrião cumprir todas as seguintes condições:

    • A VM está em execução.

    • A VM usa um tipo de máquina H4D.

    • A VM usa o modelo de aprovisionamento associado a reservas.

  • Google Cloud faz tentativas de melhor esforço para cumprir todos os seus pedidos de anfitrião com falhas. No entanto, devido a restrições de capacidade ou limites de tráfego, um pedido pode nem sempre ser cumprido.

Antes de começar

  • 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

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

Funções necessárias

Para receber as autorizações de que precisa para denunciar um anfitrião com defeito, peça ao seu administrador para lhe conceder as seguintes funções do IAM:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Estas funções predefinidas contêm as autorizações necessárias para denunciar um anfitrião com falhas. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para denunciar um anfitrião com falhas:

  • Para criar um relatório de anfitrião com falhas: compute.instances.update na VM
  • Para ver uma lista de operações através do Registo: logging.operations.list no projeto
  • Para ver os detalhes de uma operação através do Registo: logging.operations.get no projeto
  • Para ver uma lista de operações no Compute Engine: compute.zoneOperations.list no projeto
  • Para ver os detalhes de uma operação no Compute Engine: compute.zoneOperations.describe no projeto

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Compreenda o processo de relatório de anfitrião com falhas

Depois de comunicar um anfitrião com falhas para uma VM H4D, o momento em que a VM H4D é reiniciada varia consoante o modo operacional da reserva que usou para criar a VM. Para verificar o modo operacional de uma reserva, veja o campo reservationOperationalMode na reserva.

Modo gerido (HIGHLY_AVAILABLE_CAPACITY)
Tipos de máquinas suportados H4D
Limites de taxa da API de relatórios de anfitriões com falhas As chamadas para a API podem ter um limite de taxa.
Processo de relatório de anfitrião com falhas

Quando comunica um anfitrião com falhas para uma VM H4D que é executada no modo gerido, ocorre o seguinte:

  1. Denuncie o anfitrião com falhas: a VM permanece no estado RUNNING durante toda a operação de denúncia, que normalmente demora 10 a 12 minutos a concluir. Para rever o estado da operação, consulte o artigo Reveja as operações de anfitrião com falhas neste documento.
  2. Comece a reparar o anfitrião: após a conclusão da operação de anfitrião com falhas, a operação de reparação do anfitrião começa no prazo de um minuto.

    Quando a operação de reparação do anfitrião é iniciada, a VM é interrompida e o respetivo estado é alterado consoante a definição de reinício automático (automaticRestart) especificada para a VM:

    • Se o reinício automático estiver ativado para a VM, o estado da VM muda para REPAIRING. A VM é reiniciada automaticamente quando o respetivo anfitrião estiver em bom estado, a menos que pare a VM antes disso.
    • Se o reinício automático estiver desativado para a VM, o estado da VM muda para TERMINATED. Tem de reiniciar manualmente a VM depois de o respetivo anfitrião estar em bom estado.

    A reparação do anfitrião com falhas pode demorar entre 3 e 14 dias ou, por vezes, ainda mais tempo.

  3. Migre e reinicie a VM: após o início da operação de reparação do anfitrião (normalmente, 10 a 12 minutos), o Compute Engine tenta reservar mais um anfitrião para substituir o anfitrião com falhas comunicado na sua capacidade reservada. Se o Compute Engine encontrar um anfitrião em bom estado, se substituir com êxito o anfitrião com falhas ou, de outra forma, encontrar um anfitrião em bom estado correspondente na sua capacidade reservada, o Compute Engine migra a VM para esse anfitrião. Em seguida, o reinício da VM ocorre através de uma das seguintes opções:
    • Se a VM estiver no estado REPAIRING e os recursos estiverem disponíveis antes ou quando a reparação for concluída, o Compute Engine reinicia automaticamente a VM num anfitrião em bom estado.
    • Caso contrário, se a VM estiver no estado TERMINATED ou se os recursos não estiverem disponíveis antes ou quando a reparação for concluída, o estado da VM permanece ou muda para TERMINATED. Tem de reiniciar manualmente a VM quando quiser que seja executada. No entanto, o reinício da VM pode falhar se os recursos não estiverem disponíveis quando reiniciar a VM. Por exemplo, isto pode acontecer se outras VMs já estiverem a usar o anfitrião reparado.

Denuncie um anfitrião com falhas

Para denunciar um anfitrião com defeito, conclua os seguintes passos:

  1. Reveja o anfitrião no qual a sua MV é executada.

    Para ver instruções, consulte o artigo Veja a topologia do cluster H4D.

  2. Opcional: faça uma cópia de segurança dos dados do SSD local. Quando a VM é interrompida, o Compute Engine rejeita automaticamente os dados de todos os discos SSD locais anexados à VM. Não é possível recuperar dados do SSD local depois de o Compute Engine os rejeitar.

    Para ver instruções sobre como preservar os dados do SSD local, consulte o artigo Cópia de segurança dos dados do SSD local.

  3. Denuncie o anfitrião com falhas. Para denunciar um anfitrião com defeito, selecione uma das seguintes opções. A operação de reparação do anfitrião começa imediatamente, no prazo de um minuto após a conclusão da operação de anfitrião com falhas. Se a VM deixar de responder após iniciar a operação de relatório de anfitrião com falhas, recomendamos que reinicie a VM depois de aguardar, pelo menos, 15 minutos.

    gcloud

    Para denunciar um anfitrião com falhas, use o seguinte comando gcloud compute instances report-host-as-faulty:

    gcloud compute instances report-host-as-faulty VM_NAME \
        --async \
        --disruption-schedule=IMMEDIATE \
        --fault-reasons=behavior=FAULT_REASON,description=DESCRIPTION \
        --zone=ZONE
    

    Substitua o seguinte:

    • VM_NAME: o nome da VM.

    • FAULT_REASON: uma lista de problemas do anfitrião que a sua VM encontrou, separados por vírgulas. Por exemplo, ISSUE_1,ISSUE_2. Pode especificar os seguintes valores:

      • PERFORMANCE: observar uma degradação do desempenho da CPU ou da operação de rede RDMA na nuvem, falhas na interface de rede IRDMA ou que o dispositivo de rede IRDMA não está presente.

      • SILENT_DATA_CORRUPTION: vê dados danificados na sua VM, mas a VM continua a ser executada. A corrupção de dados silenciosa pode dever-se a problemas como defeitos de vCPU, erros de software ou problemas de kernel.

      • BEHAVIOR_UNSPECIFIED: não tem a certeza de qual é o problema que afeta a sua MV ou o problema não está coberto pelas outras opções.

    • DESCRIPTION: uma descrição do problema que está a afetar a sua VM, como informações do XID ou problemas de desempenho suspeitos.

    • ZONE: a zona onde a VM existe.

    REST

    Para denunciar um anfitrião com defeito, faça o seguinte pedido POST ao método instances.reportHostAsFaulty.

    Quando comunica um anfitrião com falhas, pode especificar vários motivos de falha de uma só vez. Por exemplo, para especificar dois motivos de falha, faça um pedido da seguinte forma:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/reportHostAsFaulty
    
    {
      "disruptionSchedule": "IMMEDIATE",
      "faultReasons": [
        {
          "behavior": "FAULT_REASON_1",
          "description": "DESCRIPTION_1"
        },
        {
          "behavior": "FAULT_REASON_2",
          "description": "DESCRIPTION_2"
        }
      ]
    }
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do projeto onde a VM existe.

    • ZONE: a zona onde a VM existe.

    • VM_NAME: o nome da VM.

    • FAULT_REASON_1 e FAULT_REASON_2: cada problema do anfitrião que a sua MV encontrou. Pode especificar os seguintes valores:

      • PERFORMANCE: observa uma degradação do desempenho da CPU ou da operação de rede RDMA, falhas do dispositivo RDMA ou que o dispositivo RDMA não está presente.

      • SILENT_DATA_CORRUPTION: vê dados danificados na sua VM, mas a VM continua a ser executada. A corrupção de dados silenciosa pode dever-se a problemas como defeitos nas vCPUs, erros de software ou problemas de kernel.

      • BEHAVIOR_UNSPECIFIED: não tem a certeza do problema da sua VM.

    • DESCRIPTION_1 e DESCRIPTION_2: uma descrição de cada problema do anfitrião que especificou, como informações XID ou problemas de desempenho suspeitos.

Reveja o relatório de operações de anfitrião com falhas

Depois de denunciar um anfitrião com falhas, o Compute Engine inicia uma série de operações para marcar o anfitrião como com falhas e prepara-o para reparação. Especificamente, durante uma operação de anfitrião com falhas, ocorre o seguinte processo:

  1. Marque o anfitrião como com defeito. O Compute Engine cria o relatório faulty host operation. A operação report faulty host cria uma sequência de suboperações. Estas suboperações marcam o anfitrião subjacente como com falhas.

  2. Prepare o anfitrião para reparações. Após a conclusão de todas as suboperações, a operação report faulty host é iniciada. O Compute Engine para a VM e inicia a operação de reparação do anfitrião com falhas. Com base no modo operacional da reserva especificado na reserva que a VM usa e se estiverem disponíveis anfitriões em bom estado, o Compute Engine mantém a VM parada ou tenta migrar e reiniciar automaticamente a VM.

  3. Comunique a conclusão e repare o anfitrião. O Compute Engine conclui a operação de anfitrião com falhas e a operação de reparação do anfitrião é executada.

Para acompanhar o estado das operações de anfitrião com falhas (compute.instances.reportHostAsFaulty) no seu projeto, selecione uma das seguintes opções. Para mais informações sobre outras operações que pode usar para acompanhar reparações, migração e reinício automático, consulte os artigos Comportamentos de manutenção e reinício e Monitorize e planeie um evento de manutenção do anfitrião na documentação do Compute Engine.

Consola (operações de VM)

  1. Na Google Cloud consola, aceda à página Operações.

    Aceda a Operações

  2. Na tabela apresentada, localize a VM que denunciou.

  3. Na linha que contém a VM, na coluna Estado, pode ver o estado da operação de anfitrião com falhas de relatório. Quando a operação estiver concluída, o valor é Concluído.

  4. Opcional: para verificar se o Compute Engine reiniciou a VM, veja os detalhes da VM.

Consola (registos de VMs)

  1. Na Google Cloud consola, aceda à página Explorador de registos.

    Aceda ao Explorador de registos

  2. Verifique se o botão Mostrar consulta está na posição ativada.

  3. No editor de consultas, introduza a seguinte consulta:

    resource.type="gce_instance" AND protoPayload.methodName=~"compute\.instances\.reportHostAsFaulty"
    
  4. Clique em Executar consulta. O painel Resultados da consulta apresenta os resultados da consulta.

gcloud

  1. Para ver o estado das operações de anfitrião com falhas no seu projeto, use o comando gcloud compute operations list com a flag --filter definida como operationType:compute.instances.reportHostAsFaulty:

    gcloud compute operations list --filter="operationType:compute.instances.reportHostAsFaulty"
    
  2. Se quiser ver os detalhes de uma operação de anfitrião específica com falhas, use o comando gcloud compute operations describe:

    gcloud compute operations describe OPERATION_NAME \
        --zone="ZONE"
    

    Substitua o seguinte:

    • OPERATION_NAME: o nome da operação.

    • ZONE: a zona onde a operação existe.

REST

Para ver o estado da operação de anfitrião com falhas no seu projeto, faça um pedido GET ao método zoneOperations.list. No URL do pedido, inclua o parâmetro de consulta filter definido como items.operationType:compute.instances.reportHostAsFaulty.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/operations&filter=items.operationType:compute.instances.reportHostAsFaulty

Substitua o seguinte:

  • PROJECT_ID: o nome da operação.

  • ZONE: a zona onde existem as operações.

O que se segue?