Balanceamento de carga interno e nomes do DNS

Um registro de endereço DNS, conhecido como registro A, é usado para mapear um nome do DNS para um endereço IP. Ao configurar um balanceador de carga interno, é possível designar um rótulo de serviço para o GCP criar um nome do DNS interno do Compute Engine referente ao balanceador de carga. Esse nome é gerado com base no ID do projeto, no nome da regra de encaminhamento interna e em um rótulo de serviço escolhido por você.

Use o nome do DNS interno (registro A) em vez do endereço IP da regra de encaminhamento nas VMs cliente no mesmo projeto, rede VPC e região para enviar tráfego ao balanceador de carga. No código e nos scripts, é possível substituir o endereço IP pelo nome do DNS.

Especificações

  • Este recurso é compatível com balanceadores de carga internos:

    • Balanceadores de carga TCP/UDP internos
  • Consulte Formato do registro DNS para mais detalhes sobre o formato do nome do DNS que o GCP cria para o balanceador de carga. Como os nomes do DNS contêm o nome da regra de encaminhamento, cada um deles é exclusivo, mesmo se você usar um rótulo de serviço igual em várias regras de encaminhamento.

  • É possível realizar buscas DNS no nome do DNS interno do balanceador de carga com as VMs cliente em qualquer região no mesmo projeto e rede VPC. No entanto, as VMs cliente precisam estar localizadas na mesma região que o balanceador de carga para receberem tráfego.

  • Só é possível especificar um rótulo de serviço quando você cria uma regra de encaminhamento interna. Não é possível adicioná-lo a uma regra de encaminhamento interna atual. No entanto, é possível substituir uma regra de encaminhamento atual por uma nova que tenha um rótulo de serviço. Se você excluir a regra de encaminhamento original primeiro, a regra substituta poderá usar o mesmo endereço IP interno da original.

  • Os nomes do DNS internos criados a partir de rótulos de serviço têm as restrições a seguir:

    • Nenhum registro PTR reverso correspondente é criado.
    • Cada regra de encaminhamento interna pode ter apenas um rótulo de serviço.
    • Além do nome do rótulo de serviço e da regra de encaminhamento, não é possível alterar nenhuma outra parte do nome do DNS interno. Isso inclui o formato e o nome de domínio (.internal).

    Se você precisa de nomes do DNS mais flexíveis no balanceador de carga interno, crie registros personalizados em uma zona privada gerenciada do Cloud DNS.

Formato do registro DNS

O registro A DNS interno e exclusivo do Compute Engine em um balanceador de carga TCP/UDP interno tem este formato:

  • Balanceamento de carga TCP/UDP interno:

    [SERVICE_LABEL].[FORWARDING_RULE_NAME].il4.[REGION].lb.[PROJECT_ID].internal

em que

  • [SERVICE_LABEL] é o rótulo de serviço especificado que tem este formato:
    • É possível usar até 63 letras minúsculas (a a z), números (0 a 9) ou hífen (-).
    • O rótulo de serviço precisa começar com letra minúscula.
    • O rótulo de serviço precisa terminar com letra minúscula ou um número.
  • [FORWARDING_RULE_NAME] é o nome da regra de encaminhamento definido por você durante a criação dela;
  • [REGION] é a região em que você criou a regra de encaminhamento;
  • [PROJECT_ID] é o ID do projeto. Os que têm o formato organization:project-id são convertidos em project-id.organization. Por exemplo, se o ID do seu projeto for example.com:example-marketing-prod, o GCP usará example-marketing-prod.example.com.

Como criar uma regra de encaminhamento interna com um rótulo de serviço

Neste procedimento, você vê as etapas para atribuir um rótulo de serviço a uma regra de encaminhamento interna em um balanceador de carga interno. As propriedades da configuração do back-end e outras da configuração do front-end são omitidas. Para um exemplo completo, consulte:

  • Como configurar o balanceamento de carga TCP/UDP interno. Na gcloud e nos campos da API, substitua os marcadores pelos valores apropriados:

  • [FORWARDING_RULE_NAME] é o nome da regra de encaminhamento interna.

  • [REGION] é a região em que o balanceador de carga TCP/UDP interno está localizado.

  • [BACKEND_SERVICE_NAME] é o nome do serviço de back-end do balanceador de carga TCP/UDP interno.

  • [NETWORK] é o nome da rede VPC no balanceador de carga TCP/UDP interno.

  • [SUBNET] é o nome de uma sub-rede na rede VPC especificada na mesma região do serviço de back-end do balanceador de carga.

  • [INTERNAL_IP] é um endereço IP interno no intervalo de IPs principal da sub-rede escolhida. É possível omitir a sinalização --address para que o GCP escolha um endereço IP disponível para você.

  • [PROTOCOL] é TCP ou UDP e corresponde ao protocolo do serviço de back-end.

  • [PORTS] é uma matriz de até cinco portas por número ou a palavra ALL. Consulte as regras de encaminhamento e as especificações de porta para mais informações.

  • [SERVICE_LABEL] é o rótulo de serviço pretendido. Ele precisa seguir as convenções de nomenclatura.

Nos balanceadores de carga TCP/UDP internos, o loadBalancingScheme é INTERNAL.

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Clique em Criar balanceador de carga.
  3. Em Balanceamento de carga TCP ou Balanceamento de carga UDP, clique em Iniciar configuração.
  4. Em Somente voltado para a Internet ou interno, selecione Apenas entre minhas VMs e clique em Continuar.
  5. Dê um Nome para o balanceador de carga.
  6. Conclua a Configuração do back-end.
  7. Clique em Configuração do front-end. Conclua a configuração do front-end, especificando um Rótulo de serviço na parte inferior da seção.
  8. Clique em Concluído e em Revisar e finalizar.

gcloud

gcloud compute forwarding-rules create [FORWARDING_RULE_NAME] \
    --load-balancing-scheme=INTERNAL | --load-balancing-scheme=INTERNAL_MANAGED \
    --region=[REGION] \
    --backend-service-region=[REGION] \
    --backend-service=[BACKEND_SERVICE_NAME] \
    --network=[NETWORK] \
    --subnet=[SUBNET] \
    --address=[INTERNAL_IP] \
    --ip-protocol=[PROTOCOL] \
    --ports=[PORTS] \
    --service-label=[SERVICE_LABEL]

API

Adicione uma regra de encaminhamento e um rótulo de serviço com o método forwardingRules.insert

POST https://www.googleapis.com/compute/v1/projects/[PROJECT]/regions/[REGION]/forwardingRules

{
  "name": "[FORWARDING_RULE_NAME]",
  "IPProtocol": "[PROTOCOL]",
  "ports": [PORTS],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[PROJECT]/regions/[REGION]/subnetworks/[SUBNET]",
  "network": "https://www.googleapis.com/compute/v1/projects/[PROJECT]/global/networks/[NETWORK]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[PROJECT]/regions/[REGION]/backendServices/[BACKEND_SERVICE_NAME]",
  "serviceLabel": "[SERVICE_LABEL]"
}

Como visualizar rótulos de serviço

Console

Veja o nome do DNS interno do Compute Engine, criado a partir do rótulo do serviço, de cada regra de encaminhamento interna de um balanceador de carga interno:

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Clique no nome do balanceador de carga interno para visualizar a página de detalhes.
  3. As regras de encaminhamento internas atribuídas ao balanceador de carga são listadas na seção Front-end. A coluna Nome do DNS mostra o nome do DNS interno do Compute Engine atribuído a cada regra de encaminhamento. O rótulo de serviço é a primeira parte desse nome e está localizado antes do primeiro ponto. Se nenhum nome é exibido, você não definiu um rótulo de serviço para a regra de encaminhamento.

gcloud

Nos balanceadores de carga TCP/UDP internos, o loadBalancingScheme é INTERNAL.

  1. Liste todas as regras de encaminhamento internas do projeto. Anote os nomes e as regiões para usar na próxima etapa.

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=INTERNAL"
    
  2. Descreva a regra de encaminhamento, substituindo [FORWARDING_RULE_NAME] pelo nome e [REGION] pela região:

    gcloud compute forwarding-rules describe [FORWARDING_RULE_NAME] \
        --region=[REGION] \
        --format="get(serviceLabel)"
    

API

Veja a regra de encaminhamento e o rótulo de serviço com o método forwardingRules.get

A resposta à solicitação da API inclui o rótulo de serviço (serviceLabel) e o nome do DNS interno do Compute Engine (serviceName).

GET https://www.googleapis.com/compute/v1/projects/[PROJECT]/regions/[REGION]/forwardingRules/[FORWARDING_RULE_NAME]

Resposta TCP/UDP:

{
  ...
  "serviceLabel": "[SERVICE_LABEL]",
  "serviceName": "[SERVICE_LABEL].[FORWARDING_RULE_NAME].il4.[REGION].lb.[PROJECT].internal",
  ...
}

Exemplo

No procedimento a seguir, você vê como criar uma regra de encaminhamento com um rótulo de serviço para o exemplo de balanceador de carga TCP/UDP interno. Nessa página, a regra de encaminhamento interna não tem um rótulo de serviço. Se você seguiu esse exemplo, é possível excluir a regra de encaminhamento e substituí-la por uma que tenha um rótulo de serviço.

  1. Exclua a regra de encaminhamento fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Crie uma regra de encaminhamento com o mesmo nome e um rótulo de serviço. Os outros parâmetros dessa regra, incluindo o endereço IP e o serviço de back-end, são os mesmos do exemplo original.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1 \
        --service-label=example
    

Agora, os clientes na região us-west1 podem acessar o balanceador de carga usando o endereço IP interno deles, 10.1.2.99, ou o nome do DNS interno do Compute Engine, em que [PROJECT] é o ID do projeto:

    example.fr-ilb.il4.us-west1.lb.[PROJECT].internal

A seguir

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

Enviar comentários sobre…