Noções básicas sobre serviços de back-end

Um serviço de back-end é um recurso com campos que contêm valores de configuração para estes serviços de balanceamento de carga do Google Cloud Platform:

  • Balanceamento de carga HTTP(S)
  • Balanceamento de carga de proxy SSL
  • Balanceamento de carga de proxy TCP
  • Balanceamento de carga TCP/UDP interno
  • Balanceamento de carga interno HTTP(S) (Beta)

Um serviço de back-end direciona o tráfego para back-ends, que são grupos de instâncias ou grupos de endpoints de rede.

O serviço de back-end executa várias funções, como:

  • Como direcionar o tráfego de acordo com um modo de balanceamento. O modo de balanceamento é definido no serviço de back-end para cada back-end.
  • Como monitorar a integridade do back-end de acordo com uma verificação de integridade
  • Como manter a afinidade da sessão

Arquitetura

O número de serviços de back-end por balanceador de carga depende do tipo de balanceador de carga:

Tipo de balanceador de carga Número de serviços de back-end
Balanceamento de carga HTTP(S) Vários
Balanceamento de carga SSL 1
Balanceamento de carga de proxy TCP 1
Balanceamento de carga TCP/UDP interno 1
Balanceamento de carga HTTP(S) interno Vários

Cada serviço de back-end contém um ou mais back-ends.

Para um determinado serviço de back-end, todos os back-ends precisam ser grupos de instâncias ou de endpoints de rede. É possível associar diferentes tipos de grupos de instâncias a grupos de instâncias gerenciadas e não gerenciadas com o mesmo serviço de back-end, mas não é possível associar grupos de instâncias e grupos de endpoints ao mesmo serviço de back-end.

Configurações do serviço de back-end

Cada serviço de back-end tem as seguintes configurações que podem ser ajustadas:

  • Afinidade da sessão (opcional). Normalmente, os balanceadores de carga usam um algoritmo de hash para distribuir solicitações entre instâncias disponíveis. Em uso normal, o hash é baseado no endereço IP de origem, endereço IP de destino, porta de origem, porta de destino e protocolo (um hash de 5 tuplas). A afinidade da sessão ajusta o que está incluído no hash e tenta enviar todas as solicitações do mesmo cliente para a mesma instância de máquina virtual.
  • O tempo limite do serviço de back-end. Esse valor é interpretado de maneiras diferentes, dependendo do tipo de balanceador de carga e protocolo usado:
    • Para um balanceador de carga HTTP(S), o tempo limite do serviço de back-end é um tempo limite de solicitação/resposta, exceto para conexões atualizadas para usar o protocolo Websocket.
    • Ao enviar tráfego WebSocket para um balanceador de carga HTTP(S), o tempo limite do serviço de back-end é interpretado como o tempo máximo que um WebSocket, inativo ou ativo, pode permanecer aberto.
    • Para um proxy SSL ou balanceador de carga de proxy TCP, o tempo limite do serviço de back-end é interpretado como um tempo limite de inatividade para todo o tráfego.
    • Para um balanceador de carga TCP/UDP interno, o parâmetro de timeout do serviço de back-end é ignorado.
  • Uma verificação de integridade. O verificador de integridade consulta as instâncias conectadas ao serviço de back-end em intervalos configurados. Instâncias aprovadas na verificação de integridade são autorizadas a receber novas solicitações. Instâncias não íntegras não recebem solicitações até que estejam íntegras novamente.

Consulte o recurso da API do serviço de back-end ou o guia de usuário da ferramenta de linha de comando gcloud para descrições das propriedades disponíveis ao trabalhar com serviços de back-end.

Back-ends

Cada back-end é um recurso para em que um balanceador de carga do GCP distribui o tráfego. Há dois tipos diferentes de recursos que podem ser usados como back-ends:

Para um determinado serviço de back-end, todos os back-ends têm que ser grupos de instâncias ou, se compatíveis, NEGs. Não é possível usar os grupos de instâncias e os NEGs como back-ends no mesmo serviço de back-end. Além disso:

  • Back-ends para balanceadores de carga TCP/UDP internos são compatíveis somente com back-ends de grupos de instâncias.
  • Se um balanceador de carga HTTP(S) tiver dois (ou mais) serviços de back-end, você pode usar grupos de instâncias como back-ends para um serviço de back-end e NEGs como back-ends para o outro serviço de back-end.

Back-ends e endereços IP externos

As VMs de back-end não precisam de endereços IP externos:

  • Para balanceadores de carga de HTTP(S), Proxy SSL e Proxy TCP: os clientes se comunicam com um Google Front End (GFE) usando o endereço IP externo do balanceador de carga. O GFE se comunica com as VMs de back-end usando os endereços IP internos da interface de rede principal. Como o GFE é um proxy, as próprias VMs de back-end não exigem endereços IP externos.

  • Para balanceadores de carga de rede: balanceadores de carga de rede encaminham pacotes usando conversão de endereços de rede bidirecional (NAT, na sigla em inglês). Quando as VMs de back-end enviam respostas aos clientes, elas usam o endereço IP externo da regra de encaminhamento do balanceador de carga como o endereço IP de origem.

  • Para balanceadores de carga internos: as VMs de back-end de um balanceador de carga interno não precisam de endereços IP externos.

Distribuição de tráfego

Os valores dos campos a seguir no recurso de serviços de back-end determinam alguns aspectos do comportamento do back-end:

  • Um modo de balanceamento, que diz ao sistema de balanceamento de carga como determinar quando o back-end está sendo totalmente utilizado. Se todos os back-ends do serviço de back-end em uma região estiverem em uso total, novas solicitações serão roteadas automaticamente para a região mais próxima que ainda poderá processar solicitações. O modo de balanceamento pode ser baseado em conexões, utilização da CPU ou solicitações por segundo (taxa).
  • Uma configuração de capacidade. Capacidade é um outro controle que interage com a configuração do modo de balanceamento. Por exemplo, se você quer que as instâncias operem a um máximo de 80% de uso de CPU, defina o modo de balanceamento para utilização de CPU e a capacidade como 80%. Se você quiser reduzir o uso da instância pela metade, deixe a capacidade em 80% de utilização da CPU e defina o dimensionador de capacidade como 0,5. Para drenar o serviço de back-end, defina o dimensionador de capacidade como 0 e deixe a capacidade como está. Para mais informações sobre capacidade e a utilização da CPU, leia Como escalonar com base na CPU ou na capacidade de serviço de balanceamento de carga.

Observações:

  • Se a utilização média de CPU de todas as instâncias em grupos de instâncias de back-end conectados ao mesmo serviço de back-end for inferior a 10%, no GCP as zonas específicas podem ser preferidas. Isso pode acontecer quando você usa grupos de instâncias regionais gerenciadas, grupos de instâncias zonais gerenciadas e grupos de instâncias zonais não gerenciadas. Esse desequilíbrio zonal resolverá automaticamente a si mesmo à medida que mais tráfego for enviado ao balanceador de carga. Os serviços de back-end em outras regiões não afetam nada disso.

O Traffic Director também usa recursos do serviço de back-end. Especificamente, o Traffic Director usa serviços de back-end com um esquema de balanceamento de carga que é INTERNAL_SELF_MANAGED. Para um serviço interno de back-end autogerenciado, a distribuição de tráfego é realizada usando uma combinação de um modo de balanceamento de carga e uma política de balanceamento de carga. O serviço de back-end direciona tráfego para um back-end (grupo de instância ou NEG) de acordo com o modo de balanceamento do back-end e, depois de selecionar um back-end, o Traffic Director distribui o tráfego de acordo com uma política de balanceamento de carga.

Os serviços de back-end autogerenciados internos são compatíveis com os seguintes modos de balanceamento:

  • UTILIZAÇÃO, se todos os back-ends forem grupos de instâncias
  • TAXA, se todos os back-ends forem grupos de instância ou NEGs

Se você escolher o modo de balanceamento TAXA, será necessário especificar uma taxa máxima por back-end, instância ou endpoint.

Protocolo para os back-ends

Ao criar um serviço de back-end, especifique um protocolo usado para comunicação com os respectivos back-ends. Apenas um protocolo pode ser usado por um serviço de back-end. Não é possível especificar um protocolo secundário para usar como substituto.

Os protocolos disponíveis são:

  • HTTP
  • HTTPS
  • HTTP/2
  • SSL
  • TCP
  • UDP

O tipo de protocolo válido depende do tipo de balanceador de carga que você cria, incluindo o esquema de balanceamento de carga dele. Consulte a documentação referente a cada tipo de balanceador de carga para mais informações sobre quais protocolos podem ser usados para os serviços de back-end.

O HTTP/2, como protocolo para os back-ends, também está disponível para balanceamento de carga com Ingress.

Serviços de back-end e regiões

O balanceamento de carga de HTTP(S) é um serviço global. Pode haver mais de um serviço de back-end em uma região e você pode atribuir serviços de back-end a mais de uma região, todos atendidos pelo mesmo balanceador de carga global. O tráfego é alocado aos serviços de back-end da seguinte forma:

  1. Quando uma solicitação de usuário chega, o serviço de balanceamento de carga determina a origem aproximada da solicitação pelo endereço IP de origem.
  2. O serviço de balanceamento de carga sabe a localização das instâncias pertencentes ao serviço de back-end, a capacidade total e o uso atual geral.
  3. Se as instâncias mais próximas do usuário têm capacidade disponível, a solicitação é encaminhada a esse conjunto mais próximo de instâncias.
  4. Solicitações recebidas para a região determinada são distribuídas uniformemente em todos os serviços de back-end e instâncias disponíveis naquela região. No entanto, em cargas muito pequenas, a distribuição pode parecer irregular.
  5. Se não houver instâncias íntegras com capacidade disponível em uma determinada região, o balanceador de carga envia a solicitação para a região seguinte mais próxima com capacidade disponível.

Grupos de instâncias

Serviços de back-end e grupos de instâncias gerenciadas com escalonamento automático

Grupos de instâncias gerenciadas com escalonamento automático são úteis quando é necessário ter muitas máquinas configuradas da mesma forma e você quer adicionar ou remover instâncias automaticamente com base na necessidade.

A porcentagem de escalonamento automático funciona com o modo de balanceamento do serviço de back-end. Por exemplo, digamos que você defina o modo de balanceamento para uma utilização de CPU de 80% e deixar o escalador de capacidade em 100%, e defina o Uso pretendido do balanceamento de carga no autoescalador em 80%. Sempre que a utilização de CPU do grupo ultrapassar 64% (80% de 80%), o autoescalador criará novas instâncias com base no modelo até que o uso fique abaixo de 64%. Se o uso geral cair abaixo de 64%, o escalonador automático removerá instâncias até que o uso volte a 64%.

Novas instâncias têm um período de espera até que sejam consideradas como parte do grupo, portanto, é possível que o tráfego exceda a utilização de CPU de 80% do serviço de back-end durante esse tempo, fazendo com que tráfego em excesso seja encaminhado para o próximo serviço de back-end disponível. Quando as instâncias estiverem disponíveis, o novo tráfego será encaminhado para elas. Também, se o número de instâncias alcançar o máximo permitido pelas configurações do autoescalador, o autoescalador deixará de adicionar instâncias, não importa qual é o uso. Nesse caso, o tráfego extra terá a carga balanceada para a próxima região disponível.

Como configurar grupos de instâncias gerenciadas com escalonamento automático

Para configurar grupos de instâncias gerenciadas com escalonamento automático, execute as etapas a seguir:

  1. Crie um modelo de instância para o grupo de instâncias.
  2. Crie um grupo de instâncias gerenciadas e atribua o modelo a ele.
  3. Ative o escalonamento automático com base na capacidade de serviço de balanceamento de carga.

Restrições e orientações para grupos de instâncias

Como o Cloud Load Balancing oferece muita flexibilidade na forma como o balanceamento de carga é configurado, é possível criar configurações que não funcionam bem. Tenha em mente as restrições e orientações a seguir ao criar grupos de instâncias para uso com balanceamento de carga.

  • Não coloque uma instância de máquina virtual em mais de um grupo de instâncias.
  • Não exclua um grupo de instâncias se ele estiver sendo usado por um back-end.
  • A configuração será mais simples se você não adicionar o mesmo grupo de instâncias em dois back-ends diferentes. Se você adicionar o mesmo grupo de instâncias a dois back-ends:
    • Os dois back-ends têm que usar o mesmo modo de balanceamento, UTILIZATION ou RATE.
    • É possível usar maxRatePerInstance e maxRatePerGroup juntos. É aceitável definir um back-end para usar maxRatePerInstance e o outro para maxRatePerGroup.
    • Se o grupo de instâncias atende a duas ou mais portas para vários back-ends respectivamente, é preciso especificar nomes de porta diferentes no grupo de instâncias.
  • Todas as instâncias em um grupo de instâncias gerenciadas ou não precisam estar na mesma rede VPC e, se aplicável, na mesma sub-rede.
  • Se você estiver usando um grupo de instâncias gerenciadas com escalonamento automático, não use o modo de balanceamento maxRate no serviço de back-end. É possível usar o modo maxUtilization ou maxRatePerInstance.
  • Não torne um grupo de instâncias gerenciadas com escalonamento automático o destino de dois balanceadores de carga diferentes.
  • Ao redimensionar um grupo de instâncias gerenciadas, o tamanho máximo do grupo deve ser menor ou igual ao tamanho da sub-rede.

Grupos de endpoints da rede

Um endpoint de rede é uma combinação de um endereço IP e de uma porta, especificados e uma de duas maneiras:

  • Especificando um par IP address:port, como 10.0.1.1:80.
  • Especificando apenas um endereço IP de endpoint de rede. A porta padrão do NEG é usada automaticamente como a porta do par IP address:port.

Os endpoints de rede representam serviços pelos respectivos endereço IP e porta em vez de se referir a determinada VM. Um grupo de endpoints de rede (NEG) é um agrupamento lógico de endpoints de rede.

Um serviço de back-end que usa grupos de endpoints de rede como back-ends distribui o tráfego entre aplicativos ou contêineres em execução nas instâncias de VM. Para mais informações, consulte Conceitos de grupos de endpoints de rede em balanceamento de carga.

Afinidade da sessão

Sem afinidade da seção, os balanceadores de carga distribuem as novas solicitações de acordo com o modo de balanceamento do grupo de instâncias de back-end ou NEG. Alguns aplicativos, como servidores com estado usados pela veiculação de anúncios, jogos ou serviços com uso intenso do cache interno, precisam de várias solicitações de determinado usuário para serem direcionados à mesma instância.

A afinidade da sessão torna isso possível ao identificar o tráfego TCP proveniente do mesmo cliente com base em parâmetros como o endereço IP do cliente ou o valor de um cookie, direcionando essas solicitações para a mesma instância de back-end se o back-end estiver íntegro e com capacidade, de acordo com o respectivo modo de balanceamento.

A afinidade da sessão tem um efeito pouco significativo no tráfego UDP, porque uma sessão de UDP é uma única solicitação e uma única resposta.

A afinidade da sessão pode ser interrompida se a instância perder a integridade ou ficar sobrecarregada, portanto, é recomendável não pressupor uma afinidade perfeita.

Para o balanceamento de carga HTTP(S), a afinidade da sessão funciona melhor com o modo de balanceamento RATE.

Diferentes balanceadores de carga são compatíveis com diferentes opções de afinidade da sessão, como resumido na tabela a seguir:

Balanceador de carga Opções de afinidade da sessão
Interno • Nenhuma
• IP do cliente • IP e protocolo do cliente • IP, protocolo e porta do cliente
Proxy TCP
Proxy SSL
• Nenhuma
• IP do cliente
HTTP(S) • Nenhuma
• IP do cliente • Cookie gerado
Rede O balanceamento de carga de rede não usa serviços de back-end. Em vez disso, você define a afinidade da sessão para balanceadores de carga de rede por meio de pools de destino. Consulte o parâmetro sessionAffinity em Pools de destino.

As sessões a seguir abordam dois tipos comuns de afinidade da sessão.

Como usar a afinidade de IP do cliente

A afinidade de IP do cliente direciona as solicitações provenientes do mesmo endereço IP do cliente para a mesma instância de back-end com base em um hash do endereço IP do cliente. A afinidade de IP do cliente é uma opção para cada balanceador de carga do GCP que usa serviços de back-end.

Ao usar a afinidade de IP do cliente, tenha isto em mente:

  • O endereço IP do cliente, como visto pelo balanceador de carga, pode não ser o cliente de origem se estiver por trás de NAT ou fizer solicitações por meio de um proxy. As solicitações feitas por meio de NAT ou proxy usam o endereço IP do roteador NAT ou do proxy como endereço IP do cliente. Isso pode fazer com que o tráfego se acumule desnecessariamente nas mesmas instâncias de back-end.

  • Se um cliente mudar de uma rede para outra, o endereço IP dele será alterado, resultando em afinidade corrompida.

Console


Para definir a afinidade de IP do cliente:

  1. No Console do Google Cloud Platform, acesse a seção Configuração de back-end da página do balanceador de carga.
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Selecione o lápis Editar de um Serviço de back-end.
  5. Na caixa de diálogo Editar serviço de back-end, selecione Client IP no menu suspenso Afinidade da sessão.
    Essa ação permite a afinidade da sessão de IP do cliente. O campo TTL do cookie de afinidade fica esmaecido porque não tem utilidade para a afinidade de IP do cliente.
  6. Clique no botão Atualizar do Serviço de back-end.
  7. Clique no botão Atualizar do balanceador de carga.

gcloud


Use o comando create para definir afinidade da sessão para um novo serviço de back-end ou o comando update para configurá-la para um serviço de back-end atual. Neste exemplo, mostramos como usá-lo com o comando update.

gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
    --session-affinity client_ip

API


Consulte a referência da API sobre os serviços de back-end.

Ao definir a afinidade de cookie gerado, o balanceador de carga emite um cookie chamado GCLB na primeira solicitação, em seguida direciona para a mesma instância cada solicitação subsequente que tenha o mesmo cookie. A afinidade baseada em cookie permite que o balanceador de carga faça a distinção entre diversos clientes usando o mesmo endereço IP, a fim de distribuí-los entre as instâncias de maneira mais uniforme. A afinidade baseada em cookie permite que o balanceador de carga mantenha a afinidade de instância mesmo quando o endereço IP do cliente muda.

O caminho do cookie sempre é /, portanto, se houver dois serviços de back-end no mesmo nome do host que habilitem a afinidade baseada em cookie, os dois serviços são balanceados pelo mesmo cookie.

A duração do cookie HTTP gerado pelo balanceador de carga é configurável. Ela pode ser definida como 0 (padrão), o que significa que o cookie é apenas um cookie de sessão, ou pode ter uma duração de 1 a 86400 segundos (24 horas).

Console


Para definir a afinidade de cookie gerado:

  1. No Console do Google Cloud Platform, modifique a afinidade de cookie gerado na seção de Configuração de back-end na página do balanceador de carga de HTTP(S).
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Selecione o lápis Editar de um Serviço de back-end.
  5. Selecione Generated cookie no menu suspenso Afinidade da sessão para selecionar Afinidade de cookie gerado.
  6. No campo TTL do cookie de afinidade, defina a duração do cookie em segundos.
  7. Clique no botão Atualizar do Serviço de back-end.
  8. Clique no botão Atualizar do balanceador de carga.

gcloud


Ative a afinidade de cookie gerado definindo --session-affinity como generated_cookie e definindo --affinity-cookie-ttl como a vida útil do cookie em segundos. Use o comando create para configurá-lo para um novo serviço de back-end ou o comando update para configurá-lo para um serviço de back-end atual. Neste exemplo, mostramos como usá-lo com o comando update.

gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
    --session-affinity generated_cookie \
    --affinity-cookie-ttl 86400

API


Consulte a referência da API sobre os serviços de back-end.

Desativar a afinidade da sessão

É possível desativar a afinidade da sessão atualizando o serviço de back-end e definindo afinidade da sessão como none, ou é possível editar o serviço de back-end e definir a afinidade da sessão como em um editor de texto. Também é possível usar um dos dois comandos para modificar a duração do cookie.

Console


Para desativar a afinidade da sessão:

  1. No Console do Google Cloud Platform, a afinidade da sessão pode ser desativada na parte Configuração de back-end da página do balanceador de carga.
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Selecione o lápis Editar de um Serviço de back-end.
  5. Selecione None no menu suspenso Afinidade da sessão para desativar a afinidade da sessão.
  6. Clique no botão Atualizar do Serviço de back-end.
  7. Clique no botão Atualizar do balanceador de carga.

gcloud


Para desativar a afinidade da sessão, execute o comando a seguir:

  gcloud compute backend-services update [BACKEND_SERVICE_NAME] \
  --session-affinity none


OU

gcloud compute backend-services edit [BACKEND_SERVICE_NAME]

API


Consulte a referência da API sobre os serviços de back-end.

Como perder a afinidade da sessão

Seja qual for o tipo de afinidade escolhido, um cliente pode perder afinidade com a instância nos seguintes cenários.

  • O grupo de instâncias fica sem capacidade e o tráfego precisa ser encaminhado para uma zona diferente. Neste caso, o tráfego de sessões atuais pode ser enviado para a nova zona, interrompendo a afinidade. Isso pode ser minimizado garantindo que os grupos de instâncias tenham capacidade suficiente para lidar com todos os usuários locais.
  • O escalonamento automático adiciona ou remove instâncias do grupo de instâncias. Em qualquer caso, o serviço de back-end realoca a carga e o destino pode se mover. Isso pode ser reduzido garantindo que o número mínimo de instâncias provisionadas pelo escalonamento automático seja suficiente para tratar a carga esperada e só usar o escalonamento automático para aumentos inesperados de carga.
  • A instância de destino falha nas verificações de integridade. A afinidade é perdida quando a sessão é transferida para uma instância íntegra.
  • O modo de balanceamento é definido para a utilização da CPU, o que pode alterar as capacidades calculadas entre as zonas, enviando algum tráfego para outra zona dentro da região. Isso é mais provável em tráfego baixo quando a capacidade computada é menos estável.
  • Quando os back-ends estiverem em várias regiões da nuvem e o roteamento do cliente for projetado para que a primeira e as subsequentes solicitações em uma conexão sejam provenientes de locais geográficos diferentes, você poderá perder afinidade da sessão. Isso ocorre porque as solicitações adicionais podem ser roteadas para uma região da nuvem diferente que é determinada pelo novo local de saída.

Como configurar o tempo limite

Para ter conexões de longa duração com o serviço de back-end a partir do balanceador de carga, configure um tempo limite padrão superior a 30 segundos.

Console


Para configurar o tempo limite:

  1. No Console do Google Cloud Platform, modifique a configuração de tempo limite na seção de Configuração de back-end na página do balanceador de carga de HTTP(S).
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Selecione o lápis Editar do Serviço de back-end.
  5. Na linha das configurações de Protocolo, porta e tempo limite, selecione o lápis Editar.
  6. Digite uma nova Configuração de tempo limite em segundos.
  7. Clique no botão Atualizar do Serviço de back-end.
  8. Clique no botão Atualizar do balanceador de carga.

gcloud


Para alterar a configuração de tempo limite com a ferramenta de linha de comando gcloud, use o comando "gcloud compute backend-services update". Anexe "--help" ao comando para receber informações detalhadas.

gcloud compute backend-services update [BACKEND_SERVICE] [--timeout=TIMEOUT]

API


Consulte a referência da API REST para serviços de back-end.

Portas nomeadas

Para balanceadores de carga HTTP(S) internos, HTTP(S) externos, SSL Proxy e TCP Proxy, é necessário que os serviços de back-end tenham uma porta nomeada associada se os back-ends dela forem grupos de instâncias. A porta nomeada informa ao balanceador de carga que ele deve usá-la configurada no grupo de instâncias de back-end, que a transforma em um número de porta. Essa é a porta que o balanceador de carga usa para conectar as VMs de back-end, que podem ser diferentes da porta que os clientes usam para fazer contato com o próprio balanceador de carga.

As portas nomeadas são pares de chave-valor que representam um nome de serviço e um número de porta em que um serviço está em execução. O par de chave-valor é definido em um grupo de instâncias. Quando um serviço de back-end usa esse grupo de instâncias como um back-end, ele pode "se inscrever" na porta nomeada:

  • Cada grupo de instâncias pode ter até cinco portas nomeadas (pares de chave-valor) definidas.
  • Cada serviço de back-end para um balanceador de carga HTTP(S), Proxy SSL ou Proxy TCP que usa back-ends de grupos de instâncias só pode "se inscrever" em uma única porta nomeada.
  • Ao especificar uma porta nomeada para um serviço de back-end, todos os grupos de instâncias de back-end têm que ter pelo menos uma porta nomeada definida que use esse mesmo nome.

Portas nomeadas não podem ser usadas nestas circunstâncias:

  • Para back-ends NEG: os NEGs definem as portas por endpoint, e não há par de chave-valor de porta nomeada associado a um NEG.
  • Para balanceadores de carga TCP/UDP internos: como eles são balanceadores de carga de passagem (não proxies), os serviços de back-end deles não são compatíveis com a configuração de uma porta nomeada.

Verificações de integridade

É necessário que cada serviço de back-end tenha uma verificação de integridade associada. Uma verificação de integridade é executada continuamente, e os resultados ajudam a determinar quais instâncias devem receber novas solicitações.

As instâncias não íntegras não recebem novas solicitações e continuam a ser consultadas. Se uma instância não íntegra é aprovada em uma verificação de integridade, ela é considerada íntegra e começará a receber novas conexões.

Práticas recomendadas para verificações de integridade

A prática recomendada é verificar a integridade e veicular o tráfego na mesma porta. No entanto, é possível realizar verificações de integridade em uma porta durante a veiculação de tráfego em outra. Se você usar duas portas diferentes, verifique se as regras de firewall e os serviços executados nas instâncias estão configurados corretamente. Se você executar ambos na mesma porta, mas decidir mudar as portas em algum momento, lembre-se de atualizar o serviço de back-end e a verificação de integridade.

Os serviços de back-end que não têm uma regra de encaminhamento válida referente a eles, não terão a verificação e nem o status de integridade.

Como criar verificações de integridade

É necessário criar uma verificação de integridade antes de criar o serviço de back-end. Recomendamos que você crie uma verificação de integridade para o mesmo protocolo do tráfego com balanceamento de carga.

Console

No Console, crie uma verificação de integridade ao criar o serviço de back-end.

gcloud

Para os comandos gcloud, consulte esta página para criar uma verificação de integridade.

API

Para os comandos da API, consulte a página Verificações de integridade.

Como criar um serviço de back-end

Console


Para criar um novo serviço de back-end:

  1. No Console do Google Cloud Platform, crie um serviço de back-end na seção de Configuração de back-end na página do balanceador de carga de HTTP(S).
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. No menu suspenso Criar ou selecionar serviços de back-end e intervalos de back-end menu suspenso, selecione Serviços de back-end -> criar um serviço de back-end.
  5. Digite um Nome para o serviço de back-end.
  6. Opcionalmente, insira uma Descrição.
  7. Selecione o lápis Editar na linha das configurações de Protocolo, porta e tempo limite.
    • Escolha um Protocolo de http, https ou http2.
    • Insira um port name para a Porta nomeada.
    • Como opção, altere a configuração padrão de Tempo limite.
  8. Em Tipo de back-end, escolha o botão de opção Grupo de instâncias.
  9. Na caixa de diálogo Back-ends, crie um ou mais back-ends.
    1. Na caixa de diálogo Novo back-end, selecione um Grupo de instâncias atual no menu suspenso.
    2. Digite um ou mais Números de portas, separados por vírgulas, de acordo com as portas que você quer que o back-end use para receber solicitações.
      • Para um Protocolo de http, esse campo é definido como 80.
      • Para um Protocolo de https, esse campo é definido como 443.
      • Para um Protocolo de http2, esse campo é definido como 443.
    3. Defina a porcentagem de Uso máximo da CPU.
    4. Como opção, defina o RPS máximo, deixando o campo em branco para unlimited. Defina RPS por instância ou RPS por grupo.
    5. Defina a porcentagem de Capacidade.
    6. Clique no botão Concluído.
  10. Marque ou desmarque a caixa Ativar Cloud CDN.
  11. No menu suspenso Verificação de integridade, selecione uma verificação de integridade atual. Ou então, escolha Criar outra verificação de integridade e conclua as etapas a seguir:
    1. Defina o Nome.
    2. Como opção, defina Descrição.
    3. Defina o Protocolo e a Porta. Consulte a seção sobre verificações de integridade para saber quais são as práticas recomendadas.
    4. Defina o Protocolo de proxy.
    5. Como opção, defina os valores de Solicitação e Resposta.
    6. Em Critérios de integridade, defina os itens a seguir:
      1. Defina o Intervalo de verificação em segundos.
      2. Defina o Tempo limite em segundos.
      3. Defina o number of consecutive successes em Limite íntegro.
      4. Defina o number of consecutive failures em Limite não íntegro.
      5. Clique em Salvar e continuar.
    7. Clique em Configurações avançadas para modificar Afinidade da sessão, o Tempo limite do esgotamento de conexão, os Cabeçalhos de solicitações personalizadas ou as Políticas de segurança.
      1. Para definir a Afinidade da sessão, selecione o IP do cliente ou oCookie gerado. Se você selecionou *Cookie gerado, configure uma TTL de cookie de afinidade em segundos.
      2. Para definir o Tempo limite de esgotamento de conexão, insira o número de segundos que a instância espera a conclusão de conexões em trânsito.
      3. Para criar cabeçalhos de solicitação personalizados, clique em +Adicionar cabeçalho e adicione Nome do cabeçalho e Valor do cabeçalho ao cabeçalho.
      4. Para ativar uma Política de segurança, selecione uma no menu suspenso.
    8. Clique no botão Atualizar do Serviço de back-end.
    9. Clique no botão Atualizar do balanceador de carga.

gcloud


Para criar um serviço de back-end usando a ferramenta de linha de comando gcloud, consulte a documentação do SDK do Cloud.

API


Para comandos da API, consulte a página Serviços de back-end para criar um serviço de back-end.

Como modificar um serviço de back-end

As alterações nos serviços de back-end não são instantâneas. Pode levar vários minutos para que suas mudanças se propaguem em toda a rede.

Console


Para modificar um serviço de back-end atual:

  1. No Console do Google Cloud Platform, edite um serviço de back-end na seção de Configuração de back-end na página do balanceador de carga de HTTP(S).
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Em Serviços de back-end, selecione o lápis Editar do serviço de back-end. Os campos a seguir podem ser modificados:
    1. Em Back-ends, adicione um novo Back-end ou selecione o lápis Editar de um back-end atual.
    2. Selecione o lápis Editar na linha referente às configurações Protocolo, Porta e Tempo limite.
    3. Selecione uma Verificação de integridade atual ou crie uma nova, seguindo as etapas de criação de mencionadas anteriormente.
    4. Modifique a Afinidade da sessão e, se necessário, o TTL do cookie de afinidade.
    5. Clique em Configurações avançadas para modificar o Tempo limite de esgotamento de conexão.
    6. Marque ou desmarque a caixa Ativar Cloud CDN.
  5. Clique em Configurações avançadas para modificar a Afinidade da sessão, o Tempo limite de esgotamento de conexão, os Cabeçalhos de solicitação personalizada ou as Políticas de segurança.
    1. Para definir a Afinidade da sessão, selecione o IP do cliente ou o Cookie gerado. Se você selecionou *Cookie gerado, configure uma TTL de cookie de afinidade em segundos.
    2. Para definir o Tempo limite de esgotamento de conexão, insira o número de segundos que a instância espera a conclusão de conexões em trânsito.
    3. Para criar cabeçalhos de solicitação personalizados, clique em +Adicionar cabeçalho e adicione Nome do cabeçalho e Valor do cabeçalho ao cabeçalho.
    4. Para ativar uma Política de segurança, selecione uma no menu suspenso.
    5. Clique no botão Atualizar do Serviço de back-end.
    6. Clique no botão Atualizar do balanceador de carga.

gcloud


Para modificar um serviço de back-end usando a ferramenta de linha de comando gcloud, consulte a documentação do SDK do Cloud.

API


Para modificar um serviço de back-end com a API, consulte os documentos da API.

Como adicionar grupos de instâncias a um serviço de back-end

Para definir as instâncias que são incluídas em um serviço de back-end, é preciso adicionar um back-end e atribuir um grupo de instâncias a ele. Você deve criar o grupo de instâncias antes de adicioná-lo ao back-end.

Ao adicionar o grupo de instâncias ao back-end, é preciso também definir certos parâmetros.

Console


Para adicionar um grupo de instâncias a um serviço de back-end:

  1. No Console do Google Cloud Platform, adicione um grupo de instâncias a um back-end na seção de Configuração de back-end na página do balanceador de carga de HTTP(S).
    Acessar a página "Balanceamento de carga"
  2. Selecione o lápis Editar do balanceador de carga.
  3. Selecione Configuração de back-end.
  4. Selecione o lápis Editar da Configuração de back-end.
  5. Selecione o lápis Editar de um Back-end.
  6. Na caixa de diálogo Editar back-end, no menu suspenso Grupo de instâncias, selecione um Instance group.
  7. Clique no botão Concluído de Editar back-end.
  8. Clique no botão Atualizar do Serviço de back-end.
  9. Clique no botão Atualizar do balanceador de carga.

gcloud


Para adicionar um grupo de instâncias a um serviço de back-end usando a ferramenta de linha de comando gcloud, consulte o SDK do Cloud.

API


Para adicionar um grupo de instâncias a um serviço de back-end usando a API, consulte os documentos da API.

Como adicionar grupos de endpoints da rede a um serviço de back-end

Para adicionar um grupo de endpoints da rede a um serviço de back-end, consulte Como adicionar um grupo de endpoints da rede a um serviço de back-end.

Como ver os resultados de uma verificação de integridade dos serviços de back-end

Após criar suas verificações de integridade e serviços de back-end, os resultados da verificação de integridade poderão ser visualizados.

Console


Para ver o resultado de uma verificação de integridade em um serviço de back-end:

  1. Acesse a página de resumo do balanceamento de carga.
    Acessar a página "Balanceamento de carga"
  2. Clique no nome de um balanceador de carga.
  3. Em Back-end, veja a coluna Íntegros na tabela Grupo de instâncias de um Serviço de back-end.

gcloud


Para ver os resultados da verificação de integridade mais recente com a ferramenta de linha de comando gcloud, use o comando backend-services get-health.

gcloud compute backend-services get-health [BACKEND_SERVICE]

O comando retorna um valor de healthState para todas as instâncias no serviço de back-end especificado, com um valor de HEALTHY ou UNHEALTHY:

  healthStatus:
    - healthState: UNHEALTHY
      instance: us-central1-b/instances/www-video1
    - healthState: HEALTHY
      instance: us-central1-b/instances/www-video2
  kind: compute#backendServiceGroupHealth
  

API


Consulte os comandos da API na página Verificações de integridade.

Outras observações

Os recursos do Traffic Director a seguir não são compatíveis com balanceadores de carga do GCP:

  • Disjuntores
  • Detecção de outliers
  • Políticas de balanceamento de carga
  • Afinidade da sessão baseada em cookie HTTP
  • Afinidade da sessão baseada em cabeçalho HTTP

A seguir

Para documentação relacionada e informações sobre como os serviços de back-end são usados no balanceamento de carga, analise o seguinte:

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…