Agrupe VMs não geridas

Um grupo de instâncias não gerido é um conjunto de instâncias de máquinas virtuais (VMs) que residem num único projeto, zona, rede VPC e sub-rede. Um grupo de instâncias não gerido é útil para agrupar VMs que requerem definições de configuração ou otimização individuais. Pode usar um grupo de instâncias não gerido no serviço de back-end de um equilibrador de carga.

Para VMs que requerem definições de configuração consistentes, pode usar um grupo de instâncias geridas (GIG) baseado num modelo de instância. Quando possível, considere usar grupos de instâncias geridos em vez de não geridos. Para criar um grupo de instâncias geridas, consulte o artigo Crie um MIG.

Pode adicionar qualquer um dos tipos de grupo de instâncias como back-end a um Trusted Cloud balanceador de carga. Para mais informações, consulte a Vista geral do Cloud Load Balancing. Para saber o número de VMs por grupo de instâncias que o Cloud Load Balancing suporta, consulte o artigo VMs por grupo de instâncias.

Para saber mais sobre os grupos de instâncias, consulte a vista geral dos grupos de instâncias.

Antes de começar

  • Leia sobre a diferença entre grupos de instâncias geridos e não geridos.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

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

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

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

Trabalhar com grupos de instâncias não geridos

Criar grupos

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

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Clique em Criar grupo de instâncias.
  3. Clique em Novo grupo de instâncias não gerido.
  4. Introduza um nome para o grupo de instâncias não gerido.
  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 adicionar a este grupo.
  8. Clique em Criar.

gcloud

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

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

Substitua o seguinte:

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

REST

Para criar um grupo de instâncias não gerido com REST, envie um pedido através do método instanceGroups.insert:POST

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 quer criar.
  • zone: a zona onde quer criar o grupo.
  • project-id: o ID do projeto que contém o grupo.

Quando cria um novo grupo de instâncias não gerido com a Google Cloud CLI ou a REST, não são adicionadas VMs automaticamente. Pode adicionar VMs ao grupo de instâncias não gerido manualmente.

Listar e descrever grupos

Obter uma lista de grupos de instâncias não geridos existentes.

Consola

Na Trusted Cloud consola, a página Grupos de instâncias apresenta os grupos de instâncias geridas e não geridas existentes.

Aceda à página Grupos de instâncias

gcloud

Para listar todos os grupos de instâncias não geridos no seu projeto com a CLI 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 gerido específico, use o comando instance-groups unmanaged describe:

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

Substitua o seguinte:

  • instance-group-name: o nome do grupo a descrever.
  • zone: a zona do grupo.

REST

Para listar grupos de instâncias com REST, envie um pedido GET através do 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 gerido específico com a API, envie um pedido GET através do 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 descrever.
  • zone: a zona do grupo.
  • project-id: o ID do projeto que contém o grupo.

A eliminar grupos...

Ao contrário de um grupo de instâncias gerido, a eliminação de um grupo de instâncias não gerido não elimina nenhuma das VMs no grupo. A eliminação de um grupo de instâncias não gerido remove apenas o agrupamento lógico de VMs.

Não pode eliminar um grupo de instâncias se o grupo for um back-end de um Trusted Cloud balanceador de carga. Primeiro, tem de remover o back-end do serviço de back-end.

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Selecione um ou mais grupos de instâncias não geridos na lista.
  3. Clique em Eliminar para remover os grupos. Os grupos são removidos, mas as VMs nos grupos não são eliminadas.

gcloud

Para eliminar um grupo de instâncias não gerido, use o comando instance-groups unmanaged delete:

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

Substitua o seguinte:

  • instance-group-name: o nome do grupo que quer eliminar.
  • zone: a zona do grupo.

REST

Para eliminar um grupo de instâncias não gerido com REST, envie um pedido DELETE através do 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 quer eliminar.
  • zone: a zona do grupo.
  • project-id: o ID do projeto que contém o grupo.

Inscrições no grupo

Adicionar VMs

Depois de criar um grupo de instâncias não gerido, pode adicionar VMs ao grupo. No entanto, só pode agrupar VMs se a primeira ou a única interface de rede (nic0) de cada VM estiver associada à mesma rede da VPC. O número máximo de VMs que pode adicionar a um grupo de instâncias não gerido é 2000. Se quiser adicionar mais de 2000 VMs ao grupo, contacte o apoio técnico.

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde quer adicionar as suas VMs. É aberta uma página 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 gerido.
  4. Em Instâncias de VM, selecione uma ou mais VMs existentes para adicionar ao grupo. Só pode selecionar VMs que estejam na mesma zona, rede de VPC e sub-rede que as VMs existentes.
  5. Clique em Guardar para adicionar as novas VMs ao grupo.

gcloud

Para adicionar instâncias a um grupo de instâncias não gerido, 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 quer adicionar VMs.
  • zone: a zona do grupo.
  • list-of-VM-names: Uma lista separada por vírgulas de VMs na mesma zona, rede VPC e sub-rede.

REST

Para adicionar VMs a um grupo de instâncias não gerido, envie um pedido POST através do 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 quer 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: estes são os nomes das VMs, na mesma zona, rede VPC e sub-rede, que quer adicionar ao grupo.

Listar VMs

Pode obter uma lista de VMs membro num grupo de instâncias não gerido.

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias não gerido que quer ver. É apresentada uma página com a lista de instâncias incluídas no grupo.

gcloud

Para listar as VMs num grupo de instâncias não gerido, 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 quer listar.
  • zone: a zona do grupo.

REST

Para listar VMs num grupo de instâncias não gerido, envie um pedido 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 quer listar.
  • zone: a zona do grupo.
  • project-id: o ID do projeto que contém o grupo.

Remover VMs

Pode remover VMs de um grupo de instâncias não gerido. A remoção de uma VM do grupo de instâncias não elimina a VM.

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda à página Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias do qual quer remover VMs. É aberta uma página 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 quer remover do grupo.
  4. Clique em Remover do grupo. As VMs que remover de um grupo de instâncias não gerido continuam a existir e a ser executadas, a menos que as pare ou elimine.

gcloud

Para remover VMs de um grupo de instâncias não gerido, use o comando instance-groups unmanaged 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 remover.
  • zone: a zona do grupo.
  • list-of-VM-names: uma lista delimitada por vírgulas de VMs que quer remover do grupo.

REST

Para remover VMs de um grupo de instâncias não gerido, envie um pedido através do método instanceGroups.removeInstances.POST Pode remover várias VMs em simultâneo, 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 remover.
  • zone: a zona do grupo.
  • project-id: o ID do projeto que contém o grupo.
  • instance-1-name e instance-2-name: estes são os nomes das VMs que quer dessassociar do grupo.

Trabalhar com portas com nome

As portas com nome são pares de chave-valor que representam o nome e o número de uma porta. O nome da porta representa o nome de um serviço ou de uma aplicação. O número da porta representa a porta em que o serviço ou a aplicação é executado.

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

Por exemplo, um serviço de back-end pode subscrever uma porta denominada http-port. O grupo de instâncias de back-end pode ter uma porta denominada http-port:80. O grupo de instâncias de back-end indica ao balanceador de carga que envie tráfego para uma VM no grupo na porta 80 através de um protocolo (como TCP). O protocolo é definido no serviço de back-end do balanceador de carga.

As portas com nome são metadados simples usados pelos equilibradores de carga de proxy. As portas denominadas não controlam os recursos de rede nem de firewall no Compute Engine.

Vários números de porta para uma porta com nome

Pode atribuir várias portas a cada nome de serviço. Também pode atribuir vários nomes de serviços a cada porta.

Tenha em atenção 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 de cada vez.
  • Se usar vários números de porta para uma porta com nome, as portas têm de ser todas para a mesma aplicação.

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

Pode atribuir várias portas com nome num grupo de instâncias. Para ilustrar, considere um serviço de back-end de exemplo que subscreve a porta com nome http-port e que tem dois grupos de instâncias de back-end:

  • instance-group-a com uma porta denominada http-port:80
  • instance-group-b com uma porta denominada 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.

Quando adiciona 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 serve portas diferentes em cada balanceador de carga, não adicione todos os números de portas a uma única porta com nome. Em vez disso, crie uma porta com um nome único e mapeie-a para um conjunto de portas que cada serviço de back-end deve servir.

Por exemplo, suponhamos que tem três aplicações, cada uma com o seu próprio equilibrador de carga. Cada aplicação tem o seu próprio número de porta: 81 para app1, 82 para app2 e 83 para app3. Partindo do princípio de que todos os três serviços de back-end estão a usar um grupo de instâncias comum, atribua as portas com nome para este grupo de instâncias como [app1:81, app2:82, app3:83].

Portas com nome e verificações de funcionamento

Para que uma porta com nome e vários números de porta num serviço de back-end funcione num Application Load Balancer externo ou num Application Load Balancer interno, a verificação de estado tem de ter a flag --use-serving-port em vez de um número de porta específico. Esta opção não está disponível na Trusted Cloud consola. Para definir --use-serving-port, tem de usar a CLI Google Cloud ou a API.

Por exemplo, suponhamos que tem uma aplicação que equilibra a carga do tráfego em três portas diferentes (81, 82 e 83) no mesmo serviço de back-end com um único grupo de instâncias. Pode atribuir as portas para estes grupos de instâncias como [app:81, 82, 83]. A verificação de saúde neste cenário tem de ter a flag --use-serving-port.

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

Portas com nome e regras de firewall

As portas com nome não criam nem modificam Trusted Cloud regras de firewall. Para permitir o tráfego para VMs de back-end, continua a ter de criar as regras de firewall necessárias.

Portas com nome e serviços de back-end

Além da configuração do grupo de instâncias, também tem de configurar o serviço de back-end. Por exemplo, suponhamos que define a porta com nome num 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, tem de consultar a porta com nome na configuração do serviço de back-end com o --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

Criar portas com nome

Consola

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Na coluna Nome da lista, clique no nome do grupo de instâncias onde quer especificar portas com nome. É aberta uma página com as propriedades do grupo de instâncias.
  3. Clique em Editar para modificar este grupo de instâncias não gerido.
  4. Na secção Mapeamento de portas, clique em Adicionar porta e introduza um nome de porta e o respetivo número. Adicione ou remova outras portas com nome, conforme necessário.
  5. Clique em Guardar para atualizar a lista de portas com nome para o grupo de instâncias não gerido.

gcloud

Para adicionar portas com nome a um grupo de instâncias não gerido, 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 apresentar uma lista de portas com nome num grupo de instâncias não gerido, use o comando instance-groups unmanaged get-named-ports:

Defina uma ou mais portas com nome através do 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 várias portas a cada nome de serviço ou vários nomes a cada serviço, crie mais do que uma entrada para cada nome ou porta. Por exemplo, se as portas 10, 20 e 80 forem para a mesma aplicação, pode atribuir name1 a todas essas portas. Além disso, pode atribuir dois nomes, name2 e name3, para fazer a portabilidade de 8080. Por fim, pode atribuir a porta 9000 a name4, como no exemplo seguinte:

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 com nome de um grupo de instâncias não gerido com a CLI Google Cloud, use instance-groups unmanaged set-named-ports com uma lista vazia de portas com nome:

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

Em todos os exemplos acima, substitua o seguinte, se estiver 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 à sua escolha para um número da porta. Pode especificar vários mapeamentos separados por vírgulas; por exemplo, port-one:80,port-two:8080 é uma lista válida de portas com nome.

REST

  1. Descreva o grupo de instâncias e tome nota do fingerprint.

  2. Para adicionar portas com nome, envie um pedido POST através do método instanceGroups.setNamedPorts. Se quiser remover todas as portas com nome, 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 que escolher para um número da porta.
    • fingerprint: esta é a impressão digital do passo anterior.

O que se segue?