Ver a topologia da instância do Compute Engine

Neste documento, explicamos como ver a topologia das instâncias do Compute Engine em execução. Depois de criar e iniciar instâncias de computação, é possível conferir a localização física delas em uma zona para entender a topologia do cluster. Essas informações ajudam você a:

  • Organizar jobs: é possível ajustar o design da carga de trabalho para, por exemplo, colocar tarefas que exigem muita comunicação nas instâncias de computação fisicamente mais próximas.

  • Resolver problemas: você pode investigar problemas de latência ou desempenho da rede se instâncias de computação específicas estiverem inesperadamente localizadas muito distantes umas das outras.

Para verificar quais instâncias de computação estão em execução no seu projeto, confira uma lista de instâncias de computação.

Limitações

Só é possível ver a topologia de instâncias de computação que atendem a um ou mais dos seguintes requisitos:

Entender a topologia da instância de computação

Cada instância de computação é executada em um servidor físico, um host, que está em um bloco de servidor. Cada bloco pertence a um cluster, que reside em um data center dentro de uma Google Cloud zona. Ao visualizar instâncias de computação que atendem a requisitos específicos, é possível entender a topologia delas em relação a outras instâncias de computação que atendem aos mesmos requisitos. Especificamente, você pode entender a localização física das suas instâncias de computação verificando os seguintes subcampos no campo physicalHostTopology de cada instância:

  • Cluster (cluster): o nome global do cluster em que a instância de computação está localizada. Um cluster é um agrupamento lógico de alto nível de vários hosts, que podem abranger vários blocos e funcionam juntos como um único pool de recursos.

  • Bloco (block): o ID específico da organização do bloco em que a instância de computação está. Um bloco é uma coleção de vários hosts agrupados. As instâncias de computação no mesmo bloco têm baixa latência de rede.

  • Sub-bloco (subBlock): o ID específico da organização do sub-bloco em que a instância de computação está localizada. Um sub-bloco é uma subdivisão física em um bloco, agrupando hosts em um único gabinete físico. As instâncias de computação no mesmo sub-bloco têm uma latência de rede menor do que as instâncias de computação no mesmo bloco.

  • Host (host): o ID específico da organização do host em que a instância de computação está localizada. Um host é um único servidor físico em que as instâncias de computação são executadas. Cada host tem uma vCPU física, memória, armazenamento e placa de interface de rede (NIC) próprios. As instâncias de computação em hosts adjacentes têm a menor latência de rede possível.

Quanto mais subcampos duas instâncias de computação em execução compartilharem, mais próximas elas estarão fisicamente. Essas informações ajudam a otimizar suas cargas de trabalho organizando os jobs para minimizar a latência de rede ou projetando sistemas mais resilientes.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma 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 selecionando uma das seguintes opções:

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console Google Cloud para acessar serviços Google Cloud e APIs, não é necessário configurar a autenticação.

    gcloud

    1. Instale a CLI do Google Cloud. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

  • Defina uma região e uma zona padrão.
  • REST

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

      Instale a CLI do Google Cloud.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Funções exigidas

Para receber as permissões necessárias para verificar a topologia das suas instâncias de computação, peça ao administrador para conceder a você o papel do IAM de Leitor do Compute (roles/compute.viewer) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para verificar a topologia das suas instâncias de computação. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para verificar a topologia das suas instâncias de computação:

  • Para conferir os detalhes de uma instância de computação: compute.instances.get no projeto
  • Para conferir uma lista de instâncias de computação: compute.instances.list no projeto

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

Verificar a topologia da instância de computação

Para verificar a topologia das instâncias de computação em execução, use um dos seguintes métodos:

Verifique a topologia da instância de computação usando o console Google Cloud , a CLI gcloud ou a REST.

Para ver a topologia de várias instâncias de computação simultaneamente, use a API REST. Caso contrário, selecione uma destas opções:

Console

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Na coluna Nome, clique no nome da instância de computação que você quer consultar. Uma página com os detalhes da instância vai aparecer, e a guia Detalhes será selecionada.

  3. Na seção Informações básicas, verifique o valor do campo Host físico.

gcloud

Para ver a topologia de uma instância de computação em execução, use o comando gcloud compute instances describe com a flag --flatten=resourceStatus.physicalHostTopology:

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.physicalHostTopology \
    --zone=ZONE

Substitua:

  • INSTANCE_NAME: o nome da instância de computação.

  • ZONE: a zona em que a instância de computação está.

O resultado será o seguinte:

---
block: 3e3056e23cf91a5cb4a8621b6a52c100
cluster: europe-west1-cluster-jfhb
host: 1215168a4ecdfb434fd4d28056589059
subBlock: 0fc09525cbd5abd734342893ca1c083f

REST

Para ver a topologia das instâncias de computação em execução, faça uma das seguintes solicitações GET. Ao fazer uma solicitação, inclua o parâmetro de consulta fields e especifique para mostrar apenas os campos name, machineType e physicalHostTopology de uma instância de computação. Você também precisa incluir o parâmetro de consulta filter e especificar para listar apenas instâncias de computação em execução.

  • Para conferir uma lista das suas instâncias em todas as zonas: método instances.aggregatedList

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    
  • Para conferir uma lista das suas instâncias em uma zona específica: método instances.list

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    

Substitua:

  • PROJECT_ID: o ID do projeto em que as instâncias de computação estão.

  • ZONE: a zona em que as instâncias de computação estão.

A resposta será semelhante a esta: No exemplo a seguir, as instâncias de computação vm-01 e vm-02 estão localizadas no mesmo bloco.

{
  "items": [
    {
      "name": "vm-01",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "physicalHostTopology": {
          "block": "3e3056e23cf91a5cb4a8621b6a52c100",
          "cluster": "europe-west1-cluster-jfhb",
          "host": "1215168a4ecdfb434fd4d28056589059",
          "subBlock": "0fc09525cbd5abd734342893ca1c083f"
        }
      }
    },
    {
      "name": "vm-02",
      "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
      "resourceStatus": {
        "physicalHostTopology": {
          "block": "3e3056e23cf91a5cb4a8621b6a52c100",
          "cluster": "europe-west1-cluster-jfhb",
          "host": "2326279b5ecdfc545fd5e39167698168",
          "subBlock": "1fc18636cbd4abd623553784ca2c174e"
        }
      }
    },
    ...
  ]
}

Se quiser refinar sua lista de instâncias de computação, edite a expressão de filtro no parâmetro de consulta filter.

Verificar a topologia da instância de computação consultando a chave de metadados

Para consultar a chave de metadados physical_host_topology e ver a topologia de uma instância de computação em execução, selecione uma das seguintes opções:

Instâncias do Linux

  1. Conecte-se à instância do Linux.

  2. Consulte a chave de metadados physical_host_topology usando curl:

    user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology
    

    O resultado será o seguinte:

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

Instâncias do Windows

  1. Conecte-se à instância do Windows.

  2. Consulte a chave de metadados physical_host_topology usando o comando Invoke-RestMethod:

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology")
    $value
    

    O resultado será o seguinte:

    {
      "block": "3e3056e23cf91a5cb4a8621b6a52c100",
      "cluster": "europe-west1-cluster-jfhb",
      "host": "2326279b5ecdfc545fd5e39167698168",
      "subBlock": "1fc18636cbd4abd623553784ca2c174e"
    }
    

A seguir