Balanceo de cargas interno y nombres de DNS

Un registro de dirección de DNS, conocido como registro A, se usa para asignar un nombre de DNS a una dirección IP. Cuando configuras un balanceador de cargas interno, puedes designar de forma opcional una etiqueta de servicio a fin de que GCP cree un nombre de DNS interno de Compute Engine para el balanceador de cargas. Este nombre de DNS interno se crea a partir de tu ID del proyecto, el nombre de la regla de reenvío interna y una etiqueta de servicio que elijas.

Las VM de cliente en el mismo proyecto, la red de VPC y la región pueden usar el nombre de DNS interno (registro A), en lugar de la dirección IP de la regla de reenvío para enviar tráfico al balanceador de cargas. En tu código y secuencias de comandos, puedes sustituir el nombre de DNS en lugar de la dirección IP.

Especificaciones

  • Esta función es compatible con los balanceadores de cargas internos:

    • Balanceadores de cargas TCP/UDP internos
  • Consulta el formato de registro DNS a fin de obtener detalles sobre el formato del nombre de DNS que GCP crea para el balanceador de cargas. Debido a que el nombre de DNS contiene el nombre de la regla de reenvío, cada nombre de DNS es único, incluso si usas la misma etiqueta de servicio para varias reglas de reenvío.

  • Las VM de cliente en cualquier región del mismo proyecto y la red de VPC pueden realizar búsquedas de DNS para el nombre de DNS interno del balanceador de cargas; sin embargo, las VM de cliente se deben ubicar en la misma región que el balanceador de cargas para enviarle tráfico.

  • Solo se puede especificar una etiqueta de servicio cuando creas una regla de reenvío interna. No se puede agregar una etiqueta de servicio a una regla de reenvío interno existente. Sin embargo, puedes reemplazar una regla de reenvío existente con una regla de reenvío nueva que tenga una etiqueta de servicio. El reemplazo puede usar la misma dirección IP interna que el original si primero borras la regla de reenvío original.

  • Los nombres de DNS internos creados a partir de etiquetas de servicio tienen las restricciones siguientes:

    • No se crean los registros (PTR) inversos correspondientes.
    • Cada regla de reenvío interno solo puedes tener una etiqueta de servicio.
    • Además de la etiqueta de servicio y el nombre de la regla de reenvío, no puedes cambiar ningún otra parte del nombre de DNS interno. Esto incluye su formato y nombre de dominio (.internal).

    Si necesitas nombres de DNS más flexibles para tu balanceador de cargas interno, puedes crear registros personalizados en una zona privada y administrada de Cloud DNS.

Formato del Registro DNS

El único registro A de DNS interno de Compute Engine para un balanceador de cargas TCP/UDP interno usa el formato siguiente:

  • Balanceo de cargas TCP/UDP interno:

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

donde:

  • [SERVICE_LABEL] es la etiqueta de servicio que especificas en el formato siguiente:
    • Puedes usar hasta 63 letras minúsculas (de la a a la z), números (de 09) o guiones (-).
    • La etiqueta de servicio debe comenzar con una letra en minúscula.
    • La etiqueta de servicio debe terminar con una letra en minúscula o un número.
  • [FORWARDING_RULE_NAME] es el nombre de tu regla de reenvío que se configuró cuando la creaste.
  • [REGION] es la región en la que creaste la regla de reenvío.
  • [PROJECT_ID] es tu ID del proyecto. Los ID del proyecto que tienen el formato organization:project-id se convierten en project-id.organization. Por ejemplo, si tu ID del proyecto es example.com:example-marketing-prod, GCP usará example-marketing-prod.example.com.

Crea una regla de reenvío interno con una etiqueta de servicio

En este procedimiento, se muestran los pasos para asignar una etiqueta de servicio a una regla de reenvío interna en un balanceador de cargas interno. Se omiten las propiedades de configuración de backend y otras propiedades de la configuración de frontend. Para obtener un ejemplo completo, consulta la información siguiente:

  • Configuración del balanceo de cargas interno TCP/UDP. En los campos de gcloud y de la API, reemplaza los marcadores de posición por los valores apropiados:

  • [FORWARDING_RULE_NAME] es el nombre de tu regla de reenvío interno.

  • [REGION] es la región en la que se encuentra el balanceador de cargas TCP/UDP interno.

  • [BACKEND_SERVICE_NAME] es el nombre del servicio de backend del balanceador de cargas TCP/UDP interno.

  • [NETWORK] es el nombre de la red de VPC para el balanceador de cargas TCP/UDP interno.

  • [SUBNET] es el nombre de una subred en la red de VPC especificada en la misma región que el servicio de backend del balanceador de cargas.

  • [INTERNAL_IP] es una dirección IP interna en el rango de IP principal de la subred elegida. Puedes omitir la marca --address a fin de que GCP elija una dirección IP disponible para ti.

  • [PROTOCOL] es TCP o UDP, que coincide con el protocolo del servicio de backend.

  • [PORTS] es un arreglo de hasta cinco puertos por número o la palabra ALL. Consulta las reglas de reenvío y las especificaciones de puertos para obtener más información.

  • [SERVICE_LABEL] es la etiqueta de servicio que necesitas. Esta debe seguir las convenciones de nombres.

Para los balanceadores de cargas TCP/UDP internos, el loadBalancingScheme es INTERNAL.

Console

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en Crear balanceador de cargas.
  3. En Balanceo de cargas TCP o Balanceo de cargas UDP, haz clic en Iniciar configuración.
  4. En Orientado a Internet o solo interno selecciona Solo entre mis VM, luego, haz clic en Continuar.
  5. Ingresa un Nombre para el balanceador de cargas.
  6. Completa la Configuración del backend.
  7. Haz clic en Configuración de frontend. Completa la configuración de frontend y especifica una Etiqueta de servicio en la parte inferior de esa sección.
  8. Haz clic en Listo y, luego, en Revisar y 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

Agrega una regla de reenvío y una etiqueta de servicio con el 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]"
}

Visualiza las etiquetas de servicio

Console

Puede ver el nombre de DNS interno de Compute Engine (creado a partir de la etiqueta de servicio) para cada regla de reenvío interna de un balanceador de cargas interno:

  1. Ve a la página Balanceo de cargas de Google Cloud Platform Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en el nombre del balanceador de cargas interno para ver su página de detalles.s
  3. Las reglas de reenvío internas asignadas al balanceador de cargas se enumeran en la sección Frontend. En la columna nombre de DNS, se muestra el nombre de DNS interno de Compute Engine que se asigna a cada regla de reenvío. La etiqueta de servicio es la primera parte de ese nombre (antes del primer punto). Si no se muestra ningún nombre, la regla de reenvío no tiene una etiqueta de servicio definida.

gcloud

Para los balanceadores de cargas TCP/UDP internos, el loadBalancingScheme es INTERNAL.

  1. Enumera todas las reglas de reenvío interno de tu proyecto. Toma nota de su nombre y región para el paso siguiente.

    gcloud compute forwarding-rules list \
        --filter="loadBalancingScheme=INTERNAL"
    
  2. Describe la regla de reenvío y reemplaza [FORWARDING_RULE_NAME] por su nombre y [REGION] por su región:

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

api

Visualiza la regla de reenvío y la etiqueta de servicio con el método forwardingRules.get

La respuesta a la solicitud a la API incluye la etiqueta de servicio (serviceLabel) y el nombre de DNS interno de Compute Engine (serviceName).

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

Respuesta de TCP/UDP:

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

Ejemplo

CEl procedimiento siguiente muestra cómo crear una regla de reenvío con una etiqueta de servicio para el balanceador de cargas TCP/UDP interno de ejemplo. En esa página, la regla de reenvío interno no tiene etiqueta de servicio. Si seguiste ese ejemplo, puedes borrar la regla de reenvío y reemplazarla por una que tenga una etiqueta de servicio.

  1. Borra la regla de reenvío fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Crea una regla de reenvío con el mismo nombre y una etiqueta de servicio. Los otros parámetros para esta regla, incluida la dirección IP y el servicio de backend, son los mismos que en el ejemplo 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
    

Ahora, los clientes en la región us-west1 pueden acceder al balanceador de cargas con su dirección IP interna, 10.1.2.99, o el siguiente nombre de DNS interno de Compute Engine, en el que [PROJECT] es tu ID del proyecto:

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

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...