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 criar uma regra de encaminhamento para um balanceador de carga interno, é possível designar um rótulo de serviço para que o Google Cloud gere um nome DNS interno do Compute Engine referente a esse balanceador. Esse nome é gerado com base no ID do projeto, no nome da regra de encaminhamento e em um rótulo de serviço especificado por você.

Especificações

  • Esse recurso é compatível com as regras de encaminhamento desses balanceadores de carga:

  • Consulte Formato do registro DNS para mais detalhes sobre o formato de nome DNS que o Google Cloud cria no 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.

  • A menos que um servidor de nomes alternativo seja configurado, as VMs cliente em qualquer região no mesmo projeto e rede VPC executarão buscas DNS pelo nome DNS interno do balanceador de carga. Para acessar o balanceador de carga, as VMs cliente precisam estar na mesma região a menos que o acesso global esteja disponível e ativado. Se você ativar o acesso global, um cliente em qualquer região poderá acessar o balanceador de carga.

  • Só é possível especificar um rótulo de serviço ao criar uma regra de encaminhamento. Ele não pode ser adicionado a uma regra de encaminhamento 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 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

Quando você adiciona um rótulo de serviço a uma regra de encaminhamento, o Google Cloud cria um registro A DNS interno do Compute Engine usando um destes formatos:

  • Para balanceadores de carga de rede de passagem interna:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il4.REGION.lb.PROJECT_ID.interno

  • Para balanceadores de carga de aplicativo internos regionais:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT_ID.interno

SERVICE_LABEL é o rótulo de serviço da regra de encaminhamento que você especifica. Ele precisa seguir este formato:

  • Use até 63 letras minúsculas (a a z), números (0 a 9) ou hifens (-).
  • 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 que você está criando.

REGION é a região do balanceador de carga.

PROJECT_ID é o ID do projeto. Esses IDs que têm o formato organization:project-id são convertidos em project-id.organization. Por exemplo, se o ID do projeto for example.com:example-marketing-prod, o Google Cloud usará example-marketing-prod.example.com.

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

Neste procedimento, mostramos como criar uma regra de encaminhamento com um rótulo de serviço para um balanceador de carga de rede de passagem interna ou um balanceador de carga de aplicativo interno.

O procedimento aborda apenas a criação de uma regra de encaminhamento com um rótulo de serviço. As propriedades da configuração de back-end do balanceador de carga e outras da configuração de front-end são omitidas. Se você não conhece os balanceadores de carga de rede ou de aplicativo internos de passagem, consulte estas páginas para ver exemplos completos:

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Conclua as etapas do assistente para criar um balanceador de carga de rede de passagem interna ou um balanceador de carga de aplicativo interno e clique em Configurar.
  4. Dê um Nome para o balanceador de carga.
  5. Clique em Continuar.
  6. Conclua a Configuração do back-end.
  7. Clique em Configuração de 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

Para criar uma regra de encaminhamento com um rótulo de serviço para um balanceador de carga de rede de passagem interna:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL \
    --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

Para criar uma regra de encaminhamento com um rótulo de serviço em um balanceador de carga interno HTTPS:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-https-proxy-region=REGION \
    --target-https-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=443 \
    --service-label=SERVICE_LABEL

Para criar uma regra de encaminhamento com um rótulo de serviço em um balanceador de carga interno HTTP:

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --region=REGION \
    --target-http-proxy-region=REGION \
    --target-http-proxy=TARGET_PROXY_NAME \
    --network=NETWORK \
    --subnet=SUBNET \
    --address=INTERNAL_IP \
    --ip-protocol=TCP \
    --ports=PORT \
    --service-label=SERVICE_LABEL

Substitua os marcadores por valores apropriados:

  • FORWARDING_RULE_NAME é o nome da regra de encaminhamento do balanceador de carga.
  • REGION é a região do balanceador de carga.
  • BACKEND_SERVICE_NAME é o nome do serviço de back-end do balanceador de carga.
  • TARGET_PROXY_NAME é o nome do proxy HTTPS de destino (para um balanceador de carga HTTPS interno) ou do proxy HTTP de destino (para um balanceador de carga HTTP interno).
  • NETWORK é o nome da rede VPC em que o balanceador de carga é criado.
  • SUBNET é o nome de uma sub-rede na rede VPC. A sub-rede precisa estar na mesma região do serviço de back-end ou proxy de destino 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 Google Cloud escolha um endereço IP disponível para você.
  • Para balanceadores de carga de rede de passagem interna, PROTOCOL é TCP ou UDP, correspondendo ao protocolo do serviço de back-end do balanceador de carga. Para balanceadores de carga de aplicativo internos, o protocolo precisa ser TCP.
  • Para balanceadores de carga de rede de passagem interna, PORTS é uma matriz de até cinco portas por número ou a palavra ALL. Para balanceadores de carga HTTPS internos, você precisa usar 443 na porta. Nos balanceadores de carga internos HTTP, você pode usar 80 ou 8080 para PORT. Consulte as Especificações de porta nos conceitos das regras de encaminhamento para mais detalhes.
  • SERVICE_LABEL é o rótulo de serviço pretendido. Ele precisa seguir as convenções de nomenclatura.

api

Nos exemplos a seguir, você cria regras de encaminhamento usando o método forwardingRules.insert

Para criar uma regra de encaminhamento com um rótulo de serviço para um balanceador de carga de rede de passagem interna:

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

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

Para criar uma regra de encaminhamento com um rótulo de serviço em um balanceador de carga interno HTTPS:

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

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpsProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": 443,
  "serviceLabel": "SERVICE_LABEL"
}

Para criar uma regra de encaminhamento com um rótulo de serviço em um balanceador de carga interno HTTP:

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

{
  "name": "FORWARDING_RULE_NAME",
  "loadBalancingScheme": "INTERNAL_MANAGED",
  "target": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/targetHttpProxies/TARGET_PROXY_NAME",
  "network": "https://www.googleapis.com/compute/v1/projects/PROJECT/global/networks/NETWORK",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET",
  "IPAddress": "INTERNAL_IP",
  "IPProtocol": "TCP",
  "ports": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

Substitua os marcadores por valores apropriados:

  • FORWARDING_RULE_NAME é o nome da regra de encaminhamento do balanceador de carga.
  • REGION é a região do balanceador de carga.
  • BACKEND_SERVICE_NAME é o nome do serviço de back-end do balanceador de carga de rede interno.
  • TARGET_PROXY_NAME é o nome do proxy HTTPS de destino (para um balanceador de carga HTTPS interno) ou do proxy HTTP de destino (para um balanceador de carga HTTP interno).
  • NETWORK é o nome da rede VPC em que o balanceador de carga é criado.
  • SUBNET é o nome de uma sub-rede na rede VPC. A sub-rede precisa estar na mesma região do serviço de back-end ou proxy de destino do balanceador de carga.
  • INTERNAL_IP é um endereço IP interno no intervalo de IPs principal da sub-rede escolhida. É possível omitir a chave IPAddress para que o Google Cloud escolha um endereço IP disponível para você.
  • Para balanceadores de carga de rede de passagem interna, PROTOCOL é TCP ou UDP, correspondendo ao protocolo do serviço de back-end do balanceador de carga. Para balanceadores de carga de aplicativo internos, o protocolo precisa ser TCP.
  • Para balanceadores de carga de rede de passagem interna, PORTS é uma matriz de até cinco portas por número ou a palavra ALL. Para balanceadores de carga HTTPS internos, você precisa usar 443 na porta. Nos balanceadores de carga internos HTTP, você pode usar 80 ou 8080 para PORT. Consulte as Especificações de porta nos conceitos das regras de encaminhamento para mais detalhes.
  • SERVICE_LABEL é o rótulo de serviço pretendido. Ele precisa seguir as convenções de nomenclatura.

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. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "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

  1. Liste as regras de encaminhamento no projeto usadas pelos balanceadores de carga de rede internos ou de aplicativo. Localize a regra necessária e anote o nome e a região dela para a próxima etapa.

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=SCHEME"
    

    O valor de SCHEME depende das regras de encaminhamento que você precisa listar:

    • Para balanceadores de carga de rede de passagem interna, use INTERNAL.
    • Para balanceadores de carga de aplicativo internos, use INTERNAL_MANAGED.
  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 de DNS interno do Compute Engine (serviceName).

GET https://compute.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",
  ...
}

Resposta HTTP(S):

{
  ...
  "serviceLabel": "SERVICE_LABEL",
  "serviceName": "SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT.internal",
  ...
}

Exemplo

Veja no procedimento a seguir como substituir uma regra de encaminhamento por uma que tenha um rótulo de serviço. Esse procedimento funciona para balanceadores de carga de rede de passagem e internos do aplicativo.

Se você ainda não criou uma regra de encaminhamento para o balanceador de carga interno, pule este exemplo e consulte Como criar uma regra de encaminhamento com um rótulo de serviço.

  1. Descreva a regra de encaminhamento atual do balanceador de carga e anote o endereço IP interno dela:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)"
    
  2. Exclua a regra de encaminhamento:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. Crie uma regra de encaminhamento substituta com o mesmo nome e um endereço IP interno com um rótulo de serviço. Consulte Como criar uma regra de encaminhamento com um rótulo de serviço para mais instruções.

A seguir