Cómo ver la topología de instancias de Compute Engine

En este documento, se explica cómo ver la topología de tus instancias de Compute Engine en ejecución. Después de crear y, luego, iniciar instancias de procesamiento, puedes ver su ubicación física en una zona para comprender la topología de tu clúster. Esta información te ayuda a hacer lo siguiente:

  • Organizar trabajos: Puedes ajustar el diseño de tu carga de trabajo para, por ejemplo, colocar tareas con mucha comunicación en las instancias de procesamiento más cercanas físicamente.

  • Solucionar problemas: Puedes investigar problemas de latencia de red o rendimiento si instancias de procesamiento específicas están ubicadas inesperadamente lejos unas de otras.

Para verificar qué instancias de procesamiento se ejecutan en tu proyecto, consulta una lista de instancias de procesamiento.

Limitaciones

Solo puedes ver la topología de las instancias de procesamiento que cumplen con uno o más de los siguientes requisitos:

Comprende la topología de las instancias de procesamiento

Cada instancia de procesamiento se ejecuta en un servidor físico, un host, que se encuentra en un bloque de servidores. Cada bloque pertenece a un clúster, que reside en un centro de datos dentro de una Google Cloud zona. Cuando ves instancias de procesamiento que cumplen con requisitos específicos, puedes comprender su topología en relación con otras instancias de procesamiento que cumplen con los mismos requisitos. En particular, puedes comprender la ubicación física de tus instancias de procesamiento si verificas los siguientes subcampos en el campo physicalHostTopology de cada instancia de procesamiento:

  • Clúster (cluster): Es el nombre global del clúster en el que existe tu instancia de procesamiento. Un clúster es una agrupación lógica de alto nivel de varios hosts, que puede abarcar varios bloques, que funcionan en conjunto como un solo grupo de recursos.

  • Bloque (block): Es el ID específico de la organización del bloque en el que existe tu instancia de procesamiento. Un bloque es una colección de varios hosts agrupados. Las instancias de procesamiento en el mismo bloque experimentan una latencia de red baja.

  • Subbloque (subBlock): Es el ID específico de la organización del subbloque en el que existe tu instancia de procesamiento. Un subbloque es una subdivisión física en un bloque que agrupa hosts dentro de un solo gabinete físico. Las instancias de procesamiento en el mismo subbloque experimentan una latencia de red más baja que las instancias de procesamiento en el mismo bloque.

  • Host (host): Es el ID específico de la organización del host en el que existe tu instancia de procesamiento. Un host es un solo servidor físico en el que se ejecutan tus instancias de procesamiento. Cada host tiene su propia CPU virtual física, memoria, almacenamiento y tarjeta de interfaz de red (NIC). Las instancias de procesamiento en hosts adyacentes experimentan la latencia de red más baja posible.

Cuantos más subcampos compartan dos instancias de procesamiento en ejecución, más cerca estarán físicamente entre sí. Esta información te ayuda a optimizar tus cargas de trabajo mediante la organización de tus trabajos para que puedas minimizar la latencia de la red o diseñar sistemas más resistentes.

Antes de comenzar

  • Si aún no lo hiciste, configura la autenticación. La autenticación verifica tu identidad para acceder a los Google Cloud servicios y las APIs. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Selecciona la pestaña según cómo planeas usar las muestras en esta página:

    Console

    Cuando usas la Google Cloud consola para acceder a los Google Cloud servicios y las APIs, no necesitas configurar la autenticación.

    gcloud

    1. Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI ejecutando el siguiente comando:

      gcloud init

      Si usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.

  • Configura una región y una zona predeterminadas.
  • REST

    Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala la Google Cloud CLI.

      Si usas un proveedor de identidad (IdP) externo, primero debes acceder a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de. Google Cloud

Roles obligatorios

Para obtener los permisos que necesitas para verificar la topología de tus instancias de procesamiento, pídele a tu administrador que te otorgue el Visualizador de Compute (roles/compute.viewer) rol de IAM en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para verificar la topología de tus instancias de procesamiento. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para verificar la topología de tus instancias de procesamiento:

  • Para ver los detalles de una instancia de procesamiento: compute.instances.get en el proyecto.
  • Para ver una lista de instancias de procesamiento: compute.instances.list en el proyecto.

También puedes obtener estos permisos con roles personalizados o otros roles predefinidos.

Verifica la topología de las instancias de procesamiento

Para verificar la topología de tus instancias de procesamiento en ejecución, usa uno de los siguientes métodos:

Verifica la topología de las instancias de procesamiento con la Google Cloud consola de, gcloud CLI o REST

Para ver la topología de varias instancias de procesamiento de forma simultánea, usa la API de REST. De lo contrario, selecciona una de las siguientes opciones:

Console

  1. En la Google Cloud consola de, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. En la columna Nombre, haz clic en el nombre de la instancia de procesamiento de la que deseas ver los detalles. Aparecerá una página con los detalles de la instancia y se seleccionará la pestaña Detalles.

  3. En la sección Información básica, verifica el valor del campo Host físico.

gcloud

Para ver la topología de una instancia de procesamiento en ejecución, usa el gcloud compute instances describe comando con la --flatten=resourceStatus.physicalHostTopology marca:

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

Reemplaza lo siguiente:

  • INSTANCE_NAME: Es el nombre de la instancia de procesamiento.

  • ZONE: Es la zona en la que existe la instancia de procesamiento.

El resultado es similar a este:

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

REST

Para ver la topología de tus instancias de procesamiento en ejecución, realiza una de las siguientes solicitudes GET. Cuando realices una solicitud, debes incluir el parámetro de consulta fields y especificar que solo se muestren los campos name, machineType y physicalHostTopology de una instancia de procesamiento. También debes incluir el parámetro de consulta filter y especificar que solo se enumeren las instancias de procesamiento en ejecución.

  • Para ver una lista de tus instancias en todas las zonas: instances.aggregatedList método

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    
  • Para ver una lista de tus instancias en una zona específica, usa el 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
    

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que existen las instancias de procesamiento.

  • ZONE: Es la zona en la que existen las instancias de procesamiento.

El resultado es similar al siguiente. En el siguiente ejemplo, las instancias de procesamiento vm-01 y vm-02 se encuentran en el mismo bloque.

{
  "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"
        }
      }
    },
    ...
  ]
}

Si deseas refinar tu lista de instancias de procesamiento, edita la expresión de filtro en el filter parámetro de consulta.

Verifica la topología de las instancias de procesamiento consultando la clave de metadatos

Para ver la topología de una instancia de procesamiento en ejecución consultando la clave de metadatos physical_host_topology, selecciona una de las siguientes opciones:

Instancias de Linux

  1. Conéctate a tu instancia de Linux.

  2. Consulta la clave de metadatos physical_host_topology con curl:

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

    El resultado es similar a este:

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

Instancias de Windows

  1. Conéctate a tu instancia de Windows.

  2. Consulta la clave de metadatos physical_host_topology con el Invoke-RestMethod comando:

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

    El resultado es similar a este:

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

¿Qué sigue?