Criar uma instância que usa o Cloud RDMA

Nesta página, você vai aprender a criar instâncias de HPC com interfaces de rede ativadas para o Cloud RDMA. Para instruções sobre como criar instâncias otimizadas para aceleradores A4 ou A3 Ultra que usam RDMA, consulte Criar uma instância otimizada para IA com A4 ou A3 Ultra.

Para criar uma instância de computação que use o acesso direto à memória remota (RDMA), configure pelo menos duas interfaces de rede (NICs) ao criar a instância. Uma NIC precisa ser uma NIC IRDMA que se conecta a uma rede VPC com um perfil de rede RDMA do Falcon, e a outra NIC precisa usar GVNIC.

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ódigo ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:

    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. Instale a CLI do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud 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.

    2. Set a default region and zone.

    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. Após a instalação, inicialize a CLI do Google Cloud 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.

    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 criar uma instância compatível com o Cloud RDMA, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) 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 criar uma instância compatível com o Cloud RDMA. Para acessar 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 uma instância compatível com o Cloud RDMA:

  • compute.instances.create no projeto
  • Usar uma imagem personalizada para criar a VM: compute.images.useReadOnly na imagem
  • Usar um snapshot para criar a VM: compute.snapshots.useReadOnly no snapshot
  • Usar um modelo de instância para criar a VM: compute.instanceTemplates.useReadOnly no modelo de instância
  • Especificar uma sub-rede para a VM: compute.subnetworks.use no projeto ou na sub-rede escolhida
  • Especificar um endereço IP estático para a VM: compute.addresses.use no projeto
  • Atribuir um endereço IP externo à VM ao usar uma rede VPC: compute.subnetworks.useExternalIp no projeto ou na sub-rede escolhida
  • Definir os metadados da instância de VM para a VM: compute.instances.setMetadata no projeto
  • Definir tags para a VM: compute.instances.setTags na VM
  • Definir rótulos para a VM: compute.instances.setLabels na VM
  • Definir uma conta de serviço a ser usada pela VM: compute.instances.setServiceAccount na VM
  • Criar um disco para a VM: compute.disks.create no projeto
  • Anexar um disco atual no modo somente leitura ou de leitura e gravação: compute.disks.use no disco
  • Anexar um disco atual no modo somente leitura: compute.disks.useReadOnly no disco

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

Requisitos

Confira as regras a seguir para configurar uma interface de rede para uma instância:

  • Cada interface de rede precisa se conectar a uma rede de nuvem privada virtual diferente.
  • Para configurar uma interface de rede IRDMA, primeiro crie uma rede VPC com o perfil de rede RDMA do Falcon na mesma região e zona da instância.
  • Se você não especificar uma rede ou sub-rede, o Compute Engine usará a rede VPC padrão e a sub-rede automática que estiver na mesma região da instância.
  • Se você especificar uma sub-rede, mas não uma rede, o Compute Engine vai inferir a rede pela sub-rede especificada.
  • Se você especificar uma rede, especifique uma sub-rede que pertença à mesma rede. Caso contrário, a criação da instância vai falhar.

Limitações

  • Não é possível usar a migração em tempo real com VMs que usam o Cloud RDMA. Você precisa configurar a instância para ser encerrada durante eventos de manutenção.
  • Não é possível usar o Cloud RDMA com grupos gerenciados de instâncias (MIGs), (gerenciados ou não gerenciados).
  • Só é possível usar tipos de pilha de rede IPv4_ONLY com uma instância do Cloud RDMA.
  • Só é possível usar a série de máquinas H4D para criar uma instância que use o Cloud RDMA.

Criar uma instância ativada para o Cloud RDMA

As instâncias do Cloud RDMA exigem um mínimo de duas interfaces de rede (NICs):

  • Tipo de NIC GVNIC: usa o driver gve para tráfego TCP/IP e da Internet para comunicação normal entre VMs e entre VM e Internet.
  • Tipo de NIC IRDMA: usa drivers IDPF/iRDMA para comunicação baseada em RDMA entre instâncias

Uma instância só pode ter uma interface IRDMA. Cada instância pode ter de uma a 10 interfaces de rede.

Para criar uma instância que usa IRDMA, siga as etapas nas seções a seguir:

  1. Crie uma política de posicionamento se não houver uma adequada.

  2. Crie uma rede VPC ou use uma rede VPC do Falcon.

  3. Crie uma instância compatível com o Cloud RDMA que tenha uma interface de rede IRDMA, pelo menos uma interface de rede GVNIC e use uma política de posicionamento compacto.

Criar uma política de posicionamento para instâncias do Cloud RDMA

As instâncias que se comunicam usando o Cloud RDMA precisam estar localizadas em uma única zona e, mais estritamente, em uma única estrutura de cluster. É possível criar uma política de posicionamento compacto e especificar um valor de distância máxima para definir a compactação mínima em uma zona. Há um limite para o número de instâncias a que você pode atribuir a política de posicionamento compacto ao especificar um valor de distância máxima, e o limite muda dependendo do valor escolhido.

Criar redes de nuvem privada virtual

Para configurar as redes, siga as instruções documentadas ou use o script fornecido.

Guias de instruções

Crie as redes, suando as seguintes instruções:

Script

Para criar as redes, use o script a seguir.

  1. Opcional: antes de executar o script, liste os perfis de rede RDMA do Falcon para verificar se eles estão disponíveis.

    gcloud compute network-profiles list --filter=falcon
    
  2. Copie e execute o código a seguir em uma janela de shell do Linux.

#!/bin/bash

# Create standard VPC (network and subnet) for the GVNIC interface
  gcloud compute networks create GVNIC_NAME_PREFIX-net-0 \
    --subnet-mode=custom

  gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --region=REGION \
    --range=10.0.0.0/16

  gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-0 \
    --network=GVNIC_NAME_PREFIX-net-0 \
    --action=ALLOW \
    --rules=tcp:0-65535,udp:0-65535,icmp \
    --source-ranges=10.0.0.0/8

# Create SSH firewall rules
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=tcp:22 \
  --source-ranges=IP_RANGE

# Optional: Create an external IP for only the GVNIC interface
gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \
  --network=GVNIC_NAME_PREFIX-net-0 \
  --action=ALLOW \
  --rules=icmp \
  --source-ranges=IP_RANGE

# Create network for Cloud RDMA over Falcon transport
gcloud compute networks create RDMA_NAME_PREFIX-irdma \
  --network-profile=ZONE-vpc-falcon \
  --subnet-mode custom

# Create subnet for Cloud RDMA
gcloud compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \
    --network=RDMA_NAME_PREFIX-irdma \
    --region=REGION \
    --range=10.1.0.0/16  # offset to avoid overlap with GVNIC network

Substitua:

  • GVNIC_NAME_PREFIX: o prefixo de nome a ser usado para a rede e sub-rede de nuvem privada virtual regular que usa um tipo de NIC GVNIC.
  • RDMA_NAME_PREFIX: o prefixo de nome a ser usado para a rede e sub-rede da nuvem privada virtual que usam o tipo de NIC IRDMA.
  • ZONE: a zona em que você quer criar as redes e instâncias de computação. Use us-central1-a ou europe-west4-b.
  • REGION: a região em que você quer criar a política. Ela precisa corresponder à zona especificada. Por exemplo, se a zona for europe-west4-b, a região será europe-west4.
  • IP_RANGE: o intervalo de endereços IP fora da rede VPC a ser usado para as regras de firewall SSH. Como prática recomendada, especifique os intervalos de endereços IP específicos dos quais é preciso permitir o acesso, em vez de todas as origens IPv4 ou IPv6. Não use 0.0.0.0/0 ou ::/0 como um intervalo de origem, porque isso permite o tráfego de todas as origens IPv4 ou IPv6, incluindo origens fora deGoogle Cloud.

Criar uma instância ativada para o Cloud RDMA

As etapas a seguir mostram como criar uma instância com a primeira interface de rede configurada como uma interface gVNIC e a segunda interface de rede configurada como uma interface de rede IRDMA:

Console

  1. No console do Google Cloud , acesse a página Criar uma instância.

    Acesse "Criar uma instância"

    Se solicitado, selecione o projeto e clique em Continuar.

    A página Criar uma instância aparece e mostra o painel Configuração da máquina.

  2. No painel Configuração da máquina, faça o seguinte:

    1. No campo Nome, especifique um nome para a instância. Para mais informações, consulte Convenção de nomenclatura de recursos.
    2. Opcional: no campo Zona, selecione uma zona para esta instância.

      Escolha a zona que você usou para configurar a rede VPC do Falcon.

    3. Escolha a família de máquinas Otimizada para computação.

    4. Na coluna Série, selecione a série de máquinas H4D.

    5. Na seção Tipo de máquina, selecione o tipo de máquina para sua instância.

  3. No menu de navegação à esquerda, clique em SO e armazenamento. No painel Sistema operacional e armazenamento exibido, faça o seguinte:

    1. Na parte de baixo da seção Sistema operacional e armazenamento, clique em Mudar.
    2. Nas listas Sistema operacional e Versão, selecione um tipo e uma versão de SO que ofereçam suporte ao Cloud RDMA.
    3. Verifique se o Tipo de disco de inicialização está definido como "Hiperdisco balanceado".
    4. Clique em Selecionar na parte de baixo do painel para salvar as mudanças.
  4. No menu de navegação à esquerda, clique em Rede. No painel Rede exibido, faça o seguinte:

    1. Acesse a seção Interfaces de rede. Já deve haver uma interface de rede, identificada como default.
    2. Clique em Adicionar uma interface de rede. Na seção Nova interface de rede que aparece, faça o seguinte:
      1. Na lista Placa de rede, selecione IRDMA.
      2. No campo Rede, selecione a rede VPC do Falcon.
      3. Opcional: na lista Sub-rede, selecione a sub-rede que a instância vai usar.
      4. No campo Tipo de pilha de IP, verifique se ele está definido como Somente IPv4.
      5. Na lista Endereço IPv4 externo, selecione Nenhum.
      6. Para confirmar os detalhes da interface de rede, clique em Concluído.
  5. Opcional: especifique outras opções de configuração para a instância. Para mais informações, consulte Opções de configuração durante a criação da instância.

  6. Para criar e iniciar a instância, clique em Criar.

gcloud

  1. 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.

  2. Use o comando gcloud compute instances create com pelo menos duas flags --network-interface, uma para a interface GVNIC e outra para a interface IRDMA. Personalize o restante das opções de comando conforme necessário.

    gcloud compute instances create INSTANCE_NAME \
        --zone=ZONE \
        --machine-type=MACHINE_TYPE \
        --create-disk=boot=yes, \
            image=projects/IMAGE_PROJECT/global/images/IMAGE, \
            size=SIZE \
        --maintenance-policy=TERMINATE \
        --network-interface \
            nic-type=GVNIC, \
            network=NETWORK_NAME,subnet=SUBNET_NAME, \
            stack-type=STACK_TYPE, \
            private-network-ip=INTERNAL_IPV4_ADDRESS, \
            address=EXTERNAL_IPV4_ADDRESS \
        --network-interface \
            nic-type=IRDMA, \
            network=RDMA_NETWORK_NAME,subnet=RDMA_SUBNET_NAME, \
            stack-type=IPV4_ONLY, \
            no-address \
    

    Substitua:

    • INSTANCE_NAME: o nome da instância de computação
    • ZONE: a zona em que a instância é criada, como europe-west1-b. A região da instância é inferida da zona.
    • MACHINE_TYPE: opcional: o tipo de máquina a ser usado na instância.
    • IMAGE_PROJECT (opcional): o projeto de imagem que contém a imagem.
    • IMAGE: opcional: especifique uma destas opções:
      • Uma versão específica da imagem do SO, como hpc-rocky-linux-8-v20250721.
      • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Isso cria a instância com a imagem do SO mais recente e não descontinuada. Por exemplo, se você especificar family/hpc-rocky-linux-8, o Compute Engine vai criar uma instância usando a versão mais recente da imagem do SO na família de imagens HPC Rocky Linux 8. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.
    • SIZE: opcional: o tamanho do novo disco. O valor precisa ser um número inteiro. A unidade de medida padrão é GiB.
    • NETWORK_NAME: opcional: nome da rede
    • SUBNET_NAME: nome da sub-rede a ser usada para a interface de rede. Para ver uma lista de sub-redes na rede, use o comando gcloud compute networks subnets list.

      Para a interface de rede gVNIC, é possível omitir as flags network e subnet e usar a rede default.

    • STACK_TYPE: opcional: o tipo de pilha da interface de rede GVNIC. STACK_TYPE precisa ser um dos seguintes: IPV4_ONLY, IPV4_IPV6 ou IPV6_ONLY. O valor padrão é IPV4_ONLY.

    • INTERNAL_IPV4_ADDRESS (opcional): o endereço IPv4 interno que você quer que a instância de computação use na sub-rede de destino. Omita essa flag se você não precisar de um endereço IP específico.

      Para especificar um endereço IPv6 interno, use a flag --internal-ipv6-address.

    • EXTERNAL_IPV4_ADDRESS: opcional: o endereço IPv4 externo estático a ser usado com a interface de rede. É preciso ter reservado um endereço IPv4 externo. Escolha uma destas opções:

      • Especifique um endereço IPv4 válido da sub-rede.
      • Use a flag no-address se não quiser que a interface de rede tenha um endereço IP externo.
      • Especifique address='' se quiser que a interface receba um endereço IP externo temporário.

      Para especificar um endereço IPv6 externo, use a flag --external-ipv6-address.

    • RDMA_NETWORK_NAME: o nome da rede VPC que você criou com um perfil de rede RDMA do Falcon.

    • RDMA_SUBNET_NAME: o nome de uma sub-rede na rede VPC do Falcon.

REST

Para criar uma instância configurada para usar o Cloud RDMA, faça uma solicitação POST para o método instances.insert. Inclua o objeto networkInterfaces com pelo menos duas configurações de rede, uma para a interface gVNIC e outra para a interface IRDMA. É possível personalizar o restante das propriedades da instância, conforme necessário.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: ID do projeto em que a instância será criada.
  • ZONE: a zona em que a instância será criada
  • MACHINE_TYPE: o tipo de máquina a ser usado, por exemplo, h4d-highmem-192-lssd
  • INSTANCE_NAME: um nome para a nova instância
  • IMAGE_PROJECT (opcional): o projeto de imagem que contém a imagem
  • IMAGE (opcional): especifique uma das seguintes opções:

    • Uma versão específica da imagem do SO, como debian-12-bookworm-v20250415
    • Uma família de imagens, que precisa ter o formato family/IMAGE_FAMILY. Isso cria a instância com a imagem do SO mais recente e não obsoleta. Por exemplo, se você especificar family/debian-12, o Compute Engine criará uma instância usando a versão mais recente da imagem do SO na família de imagens Debian 12. Para mais informações sobre o uso de famílias de imagens, consulte Práticas recomendadas para famílias de imagens.
  • NETWORK_NAME: opcional: nome da rede a ser usada com a interface de rede gVNIC
  • SUBNET_NAME: nome da sub-rede a ser usada com a interface de rede gVNIC.

    Para a interface de rede GVNIC, é possível omitir as propriedades network e subnet e usar a rede default.

  • INTERNAL_IPV4_ADDRESS: Opcional: o endereço IPv4 interno que você quer que a instância de computação use na sub-rede de destino. Omita essa flag se você não precisar de um endereço IP específico.
  • EXTERNAL_IPV4_ADDRESS: Opcional: um endereço IPv4 externo estático para usar com a interface de rede. É preciso ter reservado um endereço IPv4 externo.
  • RDMA_NETWORK_NAME: o nome da rede que você criou com um perfil de rede RDMA.
  • RDMA_SUBNET_NAME: o nome de uma sub-rede na rede RDMA

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
    "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
    "name": "INSTANCE_NAME",
    "disks": [
      {
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        },
        "boot": true
      }
    ],
    "networkInterfaces": [
      {
        "network": "NETWORK_NAME",
        "subnetwork": "SUBNET_NAME",
        "networkIP": "INTERNAL_IPV4_ADDRESS",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External IP",
            "natIP": "EXTERNAL_IPV4_ADDRESS"
          }
        ],
        "stackType": "IPV4_ONLY",
        "nicType": "GVNIC",
      },
      {
        "network": "RDMA_NETWORK_NAME",
        "subnetwork": "RDMA_SUBNET_NAME",
        "stackType": "IPV4_ONLY",
        "nicType": "IRDMA",
      }
    ]
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "kind": "compute#operation",
  "id": "9216044482154695709",
  "name": "operation-1739207409646-62dccc7d7bc58-d1350b42-64fdb7f7",
  "zone": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`",
  "operationType": "insert",
  "targetLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/instances/`INSTANCE_NAME`",
  "targetId": "2679381553616227357",
  "status": "RUNNING",
  "user": "USER_ID",
  "progress": 0,
  "insertTime": "2025-02-10T09:10:10.551-08:00",
  "startTime": "2025-02-10T09:10:10.551-08:00",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/`PROJECT_ID`/zones/`ZONE`/operations/operation-1565289606387-58f9f62f5989c-e582f586-6d22f38"
 "kind": "compute#operation"
}

A seguir