Agrupar VMs não gerenciadas


Um grupo de instâncias não gerenciadas é uma coleção de instâncias de máquinas virtuais (VM) que residem em um único projeto, zona, rede VPC e sub-rede. Um grupo de instâncias não gerenciadas é útil para agrupar VMs que exigem ajustes ou configurações individuais. Você pode usar um grupo de instâncias não gerenciadas no serviço de back-end de um balanceador de carga .

Para VMs que exigem definições de configuração consistentes, você pode usar um grupo gerenciado de instâncias (MIG) baseado em um modelo de instância . Quando possível, considere usar grupos de instâncias gerenciadas em vez de grupos não gerenciados. Para criar um grupo gerenciado de instâncias, consulte Criar um MIG .

Você pode adicionar qualquer tipo de grupo de instâncias como back-end a um Google Cloudbalanceador de carga. Para obter mais informações, consulte Visão geral do Cloud Load Balancing . Para saber o número de VMs por grupo de instâncias compatíveis com o Cloud Load Balancing, consulte VMs por grupo de instâncias .

Para saber mais sobre grupos de instâncias, consulte Visão geral de grupos de instâncias .

Antes de começar

  • Leia sobre a diferença entre grupos de instâncias gerenciadas e não gerenciadas.
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    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. After installing the Google Cloud CLI, initialize it 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.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it 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 Autenticar para usar REST na documentação de autenticação do Google Cloud.

Trabalhar com grupos de instâncias não gerenciadas

Criando grupos

Ao contrário dos grupos de instâncias gerenciadas , os grupos de instâncias não gerenciadas são apenas coleções de VMs distintas que não compartilham um modelo de instância comum. Basta criar um grupo e adicionar VMs individuais ao grupo.

Console

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

    Vá para a página Grupos de instâncias

  2. Clique em Criar grupo de instâncias .
  3. Clique em Novo grupo de instâncias não gerenciadas .
  4. Insira um nome para o grupo de instâncias não gerenciadas.
  5. Em Localização , selecione uma região e uma zona.
  6. Selecione uma rede e uma sub-rede .
  7. Em Instâncias de VM , selecione as VMs a serem adicionadas a esse grupo.
  8. Clique em Criar .

gcloud

Para criar um novo grupo de instâncias não gerenciadas, use o comando instance-groups unowned create :

gcloud compute instance-groups unmanaged create instance-group-name \
    --zone=zone

Substitua o seguinte:

  • instance-group-name : o nome do grupo que você deseja criar.
  • zone : a zona onde você deseja criar o grupo.

DESCANSAR

Para criar um grupo de instâncias não gerenciadas com REST, envie uma solicitação POST usando o método instanceGroups.insert :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

{
   "name": "instance-group-name"
}

Substitua o seguinte:

  • instance-group-name : o nome do grupo que você deseja criar.
  • zone : a zona onde você deseja criar o grupo.
  • project-id : o ID do projeto que contém o grupo.

Quando você cria um novo grupo de instâncias não gerenciadas com Google Cloud CLI ou REST, nenhuma VM é adicionada a ele automaticamente. Você pode adicionar VMs ao grupo de instâncias não gerenciadas manualmente.

Listando e descrevendo grupos

Recuperar uma lista de grupos de instâncias não gerenciadas existentes.

Console

No console do Google Cloud, a página Grupos de instâncias lista os grupos de instâncias gerenciadas e não gerenciadas existentes.

Vá para a página Grupos de instâncias

gcloud

Para listar todos os grupos de instâncias não gerenciadas no seu projeto com a CLI do Google Cloud, use instance-groups unManaged list :

gcloud compute instance-groups unmanaged list

Para ver informações sobre um grupo de instâncias não gerenciadas específico, use o comando de descrição não gerenciado de grupos de instâncias :

gcloud compute instance-groups unmanaged describe instance-group-name \
   --zone=zone

Substitua o seguinte:

  • instance-group-name : o nome do grupo a ser descrito.
  • zone : A zona do grupo.

DESCANSAR

Para listar grupos de instâncias com REST, envie uma solicitação GET usando o método instanceGroups.list :

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

Para obter informações sobre um grupo de instâncias não gerenciadas específico com a API, envie uma solicitação GET usando o método instanceGroups.get :

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Substitua o seguinte:

  • instance-group-name : o nome do grupo a ser descrito.
  • zone : A zona do grupo.
  • project-id : o ID do projeto que contém o grupo.

Excluindo grupos

Ao contrário de um grupo de instâncias gerenciadas, a exclusão de um grupo de instâncias não gerenciadas não exclui nenhuma das VMs do grupo. A exclusão de um grupo de instâncias não gerenciadas remove apenas o agrupamento lógico de VMs.

Você não poderá excluir um grupo de instâncias se o grupo for um back-end de umGoogle Cloud balanceador de carga. Você deve primeiro remover o back-end do serviço de back-end .

Console

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

    Vá para a página Grupos de instâncias

  2. Selecione um ou mais grupos de instâncias não gerenciadas na lista.
  3. Clique em Excluir para remover os grupos. Os grupos são removidos, mas as VMs nos grupos não são excluídas.

gcloud

Para excluir um grupo de instâncias não gerenciadas, use o comando de exclusão não gerenciada de grupos de instâncias :

gcloud compute instance-groups unmanaged delete instance-group-name \
    --zone=zone

Substitua o seguinte:

  • instance-group-name : o nome do grupo que você deseja excluir.
  • zone : A zona do grupo.

DESCANSAR

Para excluir um grupo de instâncias não gerenciadas com REST, envie uma solicitação DELETE usando o método instanceGroups.delete :

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name

Substitua o seguinte:

  • instance-group-name : o nome do grupo que você deseja excluir.
  • zone : A zona do grupo.
  • project-id : o ID do projeto que contém o grupo.

Associação ao grupo

Adicionando VMs

Depois de criar um grupo de instâncias não gerenciadas , você poderá adicionar VMs ao grupo. No entanto, você só poderá agrupar VMs se a primeira ou única interface de rede ( nic0 ) de cada VM estiver conectada à mesma rede VPC. O número máximo de VMs que você pode adicionar a um grupo de instâncias não gerenciadas é 2.000. Se quiser adicionar mais de 2.000 VMs ao grupo, entre em contato com o suporte .

Console

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

    Vá para a página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias ao qual você deseja adicionar suas VMs. Uma página é aberta com as propriedades do grupo de instâncias e uma lista de VMs que já fazem parte do grupo.
  3. Clique em Editar para modificar este grupo de instâncias não gerenciadas.
  4. Em instâncias de VM, selecione uma ou mais VMs existentes para adicionar ao grupo. Você só pode selecionar VMs que estejam na mesma zona, rede VPC e sub-rede das VMs existentes.
  5. Clique em Salvar para adicionar as novas VMs ao grupo.

gcloud

Para adicionar instâncias a um grupo de instâncias não gerenciadas, use o comando instance-groups unManaged add-instances :

gcloud compute instance-groups unmanaged add-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Substitua o seguinte:

  • instance-group-name : o nome do grupo ao qual você deseja adicionar VMs.
  • zone : A zona do grupo.
  • list-of-VM-names : uma lista delimitada por vírgulas de VMs na mesma zona, rede VPC e sub-rede.

DESCANSAR

Para adicionar VMs a um grupo de instâncias não gerenciadas, envie uma solicitação POST usando o método instanceGroups.addInstances :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

   {
      "instances": [
         {
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
         "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
         ....
         }
      ]
   }

Substitua o seguinte:

  • instance-group-name : o nome do grupo ao qual você deseja adicionar VMs.
  • zone : A zona do grupo.
  • project-id : o ID do projeto que contém o grupo.
  • instance-1-name e instance-2-name : são os nomes das VMs, na mesma zona, rede VPC e sub-rede, que você deseja adicionar ao grupo.

Listando VMs

Você pode recuperar uma lista de VMs membros em um grupo de instâncias não gerenciadas.

Console

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

    Vá para a página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias não gerenciadas que você deseja visualizar. Uma página com a lista de instâncias incluídas no grupo é exibida.

gcloud

Para listar as VMs em um grupo de instâncias não gerenciadas, use o comando instance-groups unManaged list-instances :

gcloud compute instance-groups unmanaged list-instances instance-group-name \
   --zone=zone

Substitua o seguinte:

  • instance-group-name : o nome do grupo cujos membros você deseja listar.
  • zone : A zona do grupo.

DESCANSAR

Para listar VMs em um grupo de instâncias não gerenciadas, envie uma solicitação POST usando o método instanceGroups.listInstances :

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances

Substitua o seguinte:

  • instance-group-name : o nome do grupo cujos membros você deseja listar.
  • zone : A zona do grupo.
  • project-id : o ID do projeto que contém o grupo.

Removendo VMs

Você pode remover VMs de um grupo de instâncias não gerenciadas. A remoção de uma VM do grupo de instâncias não a exclui.

Console

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

    Vá para a página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias do qual você deseja remover VMs. Uma página é aberta com as propriedades do grupo de instâncias e uma lista de VMs incluídas no grupo.
  3. Na lista, selecione uma ou mais VMs que você deseja remover do grupo.
  4. Clique em Remover do grupo . As VMs removidas de um grupo de instâncias não gerenciadas continuarão existindo e em execução, a menos que você as interrompa ou exclua.

gcloud

Para remover VMs de um grupo de instâncias não gerenciadas, use o comando instance-groups unowned remove-instances :

gcloud compute instance-groups unmanaged remove-instances instance-group-name \
    --zone=zone \
    --instances=list-of-VM-names

Substitua o seguinte:

  • instance-group-name : o nome do grupo que contém instâncias a serem removidas.
  • zone : A zona do grupo.
  • list-of-VM-names : uma lista delimitada por vírgulas de VMs que você deseja remover do grupo.

DESCANSAR

Para remover VMs de um grupo de instâncias não gerenciadas, envie uma solicitação POST usando o método instanceGroups.removeInstances . Você pode remover simultaneamente várias VMs conforme mostrado abaixo:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
{
    "instances": [
        {
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
        "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
        ....
        }
    ]
}

Substitua o seguinte:

  • instance-group-name : o nome do grupo que contém instâncias a serem removidas.
  • zone : A zona do grupo.
  • project-id : o ID do projeto que contém o grupo.
  • instance-1-name e instance-2-name : são os nomes das VMs que você deseja desassociar do grupo.

Trabalhando com portas nomeadas

Portas nomeadas são pares de valores-chave que representam o nome e o número de uma porta. O nome da porta representa o nome de um serviço ou aplicativo. O número da porta representa a porta em que o serviço ou aplicativo é executado.

As portas nomeadas são usadas pelo Cloud Load Balancing. Os balanceadores de carga que atuam como proxies assinam uma única porta nomeada em sua configuração de serviço de back-end. O nome da porta é traduzido para um número de porta com base no mapeamento da porta nomeada de cada back-end do grupo de instâncias.

Por exemplo, um serviço de back-end pode assinar uma porta chamada http-port . O grupo de instâncias de back-end pode ter uma porta chamada http-port:80 . O grupo de instâncias de back-end instrui o balanceador de carga a enviar tráfego para uma VM do grupo na porta 80 usando um protocolo (como TCP). O protocolo é definido no serviço de back-end do balanceador de carga.

Portas nomeadas são metadados simples usados ​​por balanceadores de carga de proxy . As portas nomeadas não controlam recursos de rede ou firewall no Compute Engine.

Vários números de porta para uma porta nomeada

Você pode atribuir várias portas para cada nome de serviço. Você também pode atribuir vários nomes de serviço para cada porta.

Tenha em mente os seguintes pontos:

  • O tráfego é equilibrado entre todas as portas com o mesmo nome de porta.
  • Um determinado serviço de back-end só pode encaminhar tráfego para uma porta nomeada por vez.
  • Se você usar vários números de porta para uma porta nomeada, todas as portas deverão ser para o mesmo aplicativo.

    Por exemplo, http:80,http:8080 funciona, mas http:80,http:443 não funciona porque a porta 80 geralmente não suporta TLS.

Você pode atribuir várias portas nomeadas em um grupo de instâncias. Para ilustrar, considere um exemplo de serviço de back-end que assina a porta nomeada http-port e que possui dois grupos de instâncias de back-end:

  • instance-group-a com uma porta nomeada de http-port:80
  • instance-group-b com uma porta nomeada de http-port:79

Este serviço de back-end envia tráfego para a porta 80 para VMs em instance-group-a e para a porta 79 para VMs em instance-group-b .

Ao adicionar o mesmo grupo de instâncias a vários serviços de back-end (para vários balanceadores de carga) e o grupo de instâncias atender portas diferentes em cada balanceador de carga, não adicione todos os números de porta a uma única porta nomeada. Em vez disso, crie uma porta nomeada exclusiva e mapeie-a para um conjunto de portas que cada serviço de back-end deve servir.

Por exemplo, suponha que você tenha três aplicativos, cada um com seu próprio balanceador de carga. Cada aplicativo possui seu próprio número de porta: 81 para app1 , 82 para app2 e 83 para app3 . Supondo que todos os três serviços de back-end estejam usando um grupo de instâncias comum, atribua as portas nomeadas para esse grupo de instâncias como [app1:81, app2:82, app3:83] .

Portas nomeadas e verificações de integridade

Para que uma porta nomeada com vários números de porta em um serviço de back-end funcione em um Application Load Balancer externo ou em um Application Load Balancer interno, a verificação de integridade deve ter o sinalizador --use-serving-port em vez de um número de porta específico. Esta opção não está disponível no console do Google Cloud. Para definir --use-serving-port , você deve usar a Google Cloud CLI ou a API.

Por exemplo, suponha que você tenha um aplicativo que equilibra a carga do tráfego em três portas diferentes (81, 82, 83) no mesmo serviço de back-end com um único grupo de instâncias. Você pode atribuir as portas para esses grupos de instâncias como [app:81, 82, 83] . A verificação de integridade neste cenário deve ter o sinalizador --use-serving-port .

Para obter mais informações, consulte a documentação da verificação de integridade do balanceamento de carga .

Portas nomeadas e regras de firewall

Portas nomeadas não criam ou modificam Google Cloud regras de firewall . Para permitir o tráfego para VMs de back-end, você ainda deve criar as regras de firewall necessárias.

Portas nomeadas e serviços de back-end

Além da configuração do grupo de instâncias, você também deve configurar o serviço de back-end. Por exemplo, suponha que você defina a porta nomeada em um grupo de instâncias com o nome my-service-name e a porta 8888 :

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Em seguida, você deve consultar a porta nomeada na configuração do serviço de back-end com --port-name no serviço de back-end definido como my-service-name :

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Criando portas nomeadas

Console

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

    Vá para grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde você deseja especificar portas nomeadas. Uma página é aberta com as propriedades do grupo de instâncias.
  3. Clique em Editar para modificar este grupo de instâncias não gerenciadas.
  4. Na seção Mapeamento de portas , clique em Adicionar porta e insira um nome de porta e seu número. Adicione ou remova outras portas nomeadas conforme necessário.
  5. Clique em Salvar para atualizar a lista de portas nomeadas do grupo de instâncias não gerenciadas.

gcloud

Para adicionar portas nomeadas a um grupo de instâncias não gerenciadas, use o comando instance-groups unmanaged set-named-ports :

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=port-name:port-number,...

Para listar portas nomeadas em um grupo de instâncias não gerenciadas, use o comando instance-groups unmanaged get-named-ports :

Defina uma ou mais portas nomeadas usando o comando set-named-ports :

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Por exemplo:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:80,name2:8080

Para atribuir diversas portas a cada nome de serviço ou vários nomes para cada serviço, crie mais de uma entrada para cada nome ou porta. Por exemplo, se as portas 10 , 20 e 80 forem para o mesmo aplicativo, você poderá atribuir name1 a todas essas portas. Além disso, você pode atribuir dois nomes, name2 e name3 à porta 8080 . Finalmente, você pode atribuir a porta 9000 a name4 , como no exemplo a seguir:

gcloud compute instance-groups unmanaged set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Para remover todas as portas nomeadas de um grupo de instâncias não gerenciadas com a CLI do Google Cloud, use instâncias não gerenciadas set-named-ports com uma lista vazia de portas nomeadas:

gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
    --zone=zone \
    --named-ports=""

Em todos os exemplos acima, substitua o seguinte, se presente:

  • instance-group-name : o nome do grupo de instâncias.
  • zone : A zona do grupo.
  • port-name e port-number : o nome e o número da porta representam um mapeamento de um nome escolhido para um número de porta. Você pode especificar vários mapeamentos separados por vírgulas; por exemplo, port-one:80,port-two:8080 é uma lista válida de portas nomeadas.

DESCANSAR

  1. Descreva o grupo de instâncias e anote a fingerprint .

  2. Para adicionar portas nomeadas, envie uma solicitação POST usando o método instanceGroups.setNamedPorts . Se desejar remover todas as portas nomeadas, defina namedPorts como uma lista vazia.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
    {
        "fingerprint": "fingerprint",
        "namedPorts": [
            {
            "name": "port-name",
            "port": port-number
            },
            {
            "name": "port-name",
            "port": port-number
            },
            ....
        ]
    }
    

    Substitua o seguinte:

    • instance-group-name : o nome do grupo de instâncias.
    • zone : A zona do grupo.
    • project-id : o ID do projeto que contém o grupo.
    • port-name e port-number : o nome e o número da porta representam um mapeamento de um nome escolhido para um número de porta.
    • fingerprint : Esta é a impressão digital da etapa anterior.

O que vem a seguir