Balanceo de carga interno y nombres de DNS

Un registro de dirección DNS, conocido como registro A, se usa para asignar un nombre DNS a una dirección IP. Cuando creas la regla de reenvío de un balanceador de carga interno, puedes designar una etiqueta de servicio para que Google Cloud se cree un nombre de DNS interno de Compute Engine único para el balanceador de carga. Este nombre de DNS interno se compone del ID de tu proyecto, el nombre de la regla de reenvío y una etiqueta de servicio que especifiques.

Especificaciones

  • Esta función es compatible con las reglas de reenvío de los siguientes balanceadores de carga:

  • Consulta Formato de registro DNS para obtener información sobre el formato del nombre DNS que Google Cloud crea para tu balanceador de carga. Como el nombre de DNS contiene el nombre de la regla de reenvío, cada nombre de DNS es único, aunque uses la misma etiqueta de servicio para varias reglas de reenvío.

  • A menos que se configure un servidor de nombres alternativo, las VMs cliente de cualquier región del mismo proyecto y red de VPC pueden realizar búsquedas de DNS para el nombre de DNS interno del balanceador de carga. Para acceder al balanceador de carga, las VMs cliente deben estar ubicadas en la misma región. Si habilitas el acceso global, un cliente de cualquier región podrá acceder al balanceador de carga.

  • Solo puedes especificar una etiqueta de servicio cuando creas una regla de reenvío. No puedes añadir una etiqueta de servicio a una regla de reenvío que ya tengas. Sin embargo, puedes sustituir una regla de reenvío por otra que tenga una etiqueta de servicio. La sustitución puede usar la misma dirección IP interna que la original si primero elimina la regla de reenvío original.

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

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

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

Formato de registro DNS

Cuando añades una etiqueta de servicio a una regla de reenvío,se Google Cloud crea un registro A de DNS interno de Compute Engine con uno de estos formatos:

  • En el caso de los balanceadores de carga de red de paso a través internos:

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

  • En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales:

    SERVICE_LABEL.FORWARDING_RULE_NAME.il7.REGION.lb.PROJECT_ID.internal

SERVICE_LABEL es la etiqueta de servicio de la regla de reenvío que especifiques. Debe seguir este formato:

  • Puedes usar hasta 63 letras minúsculas (de a a z), números (de 0 a 9) o guiones (-).
  • La etiqueta de servicio debe empezar por una letra minúscula.
  • La etiqueta de servicio debe terminar en una letra minúscula o un número.

FORWARDING_RULE_NAME es el nombre de la regla de reenvío que vas a crear.

REGION es la región del balanceador de carga.

PROJECT_ID es el ID del proyecto. Los IDs de proyecto que tienen el formato organization:project-id se convierten en project-id.organization. Por ejemplo, si el ID de tu proyecto es example.com:example-marketing-prod, Google Cloud usa example-marketing-prod.example.com.

Crear una regla de reenvío con una etiqueta de servicio

En este procedimiento se muestra cómo crear una regla de reenvío con una etiqueta de servicio.

Este procedimiento se centra únicamente en cómo crear una regla de reenvío con una etiqueta de servicio. Se omiten las propiedades de la configuración de backend del balanceador de carga y otras propiedades de su configuración de frontend. Si no tienes experiencia con los balanceadores de carga de red con paso a través internos, los balanceadores de carga de aplicaciones internos regionales o los balanceadores de carga de red con proxy internos regionales, consulta estas páginas para ver ejemplos completos:

Consola

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en Crear balanceador de carga.
  3. Sigue los pasos del asistente para crear un balanceador de carga de red con paso a través interno o un balanceador de carga de aplicaciones interno regional y haz clic en Configurar.
  4. Especifica un nombre para el balanceador de carga.
  5. Haz clic en Continuar.
  6. Completa la configuración de backend.
  7. Haz clic en Configuración de frontend. Completa la configuración del frontend y especifica una etiqueta de servicio en la parte inferior de esa sección.

  8. Haz clic en Hecho y, a continuación, en Revisar y finalizar.

gcloud

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de red de paso a través interno, sigue estos pasos:

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 crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de red de proxy interno regional, sigue estos pasos:

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

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de aplicación interno regional con HTTPS, sigue estos pasos:

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=PORT \
    --service-label=SERVICE_LABEL

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de aplicaciones interno regional con HTTP, sigue estos pasos:

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

Sustituye los marcadores de posición por los valores adecuados:

  • FORWARDING_RULE_NAME es el nombre de la regla de reenvío del balanceador de carga.
  • REGION es la región del balanceador de carga.
  • BACKEND_SERVICE_NAME es el nombre del servicio de backend del balanceador de carga.
  • TARGET_PROXY_NAME es el nombre del proxy de destino.
  • NETWORK es el nombre de la red de VPC en la que se crea el balanceador de carga.
  • SUBNET es el nombre de una subred de la red de VPC. La subred debe estar en la misma región que el servicio de backend o el proxy de destino del balanceador de carga.
  • INTERNAL_IP es una dirección IP interna del intervalo de IP principal de la subred elegida. Puedes omitir la marca --address para que Google Cloud elija una dirección IP disponible.
  • En el caso de los balanceadores de carga de red de paso a través internos, PROTOCOL es TCP o UDP, según el protocolo del servicio de backend del balanceador de carga. En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales, el protocolo debe ser TCP.
  • En el caso de los balanceadores de carga de red de paso a través internos, PORTS es una matriz de hasta cinco puertos por número o la palabra ALL. En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales, puedes hacer referencia a un solo puerto del intervalo 1-65535. Consulta las especificaciones de los puertos en los conceptos de reglas de reenvío para obtener más información.
  • SERVICE_LABEL es la etiqueta de servicio que has elegido. Debe seguir las convenciones de nomenclatura.

api

En los siguientes ejemplos se crean reglas de reenvío con el método forwardingRules.insert.

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de red de paso a través interno, sigue estos pasos:

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 crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de red de proxy interno regional, sigue estos pasos:

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/targetTcpProxies/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"
}

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de aplicación interno regional con HTTPS, sigue estos pasos:

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": PORT,
  "serviceLabel": "SERVICE_LABEL"
}

Para crear una regla de reenvío con una etiqueta de servicio para un balanceador de carga de aplicaciones interno regional con HTTP, sigue estos pasos:

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"
}

Sustituye los marcadores de posición por los valores adecuados:

  • FORWARDING_RULE_NAME es el nombre de la regla de reenvío del balanceador de carga.
  • REGION es la región del balanceador de carga.
  • BACKEND_SERVICE_NAME es el nombre del servicio de backend del balanceador de carga de red de paso a través interno.
  • TARGET_PROXY_NAME es el nombre del proxy de destino.
  • NETWORK es el nombre de la red de VPC en la que se crea el balanceador de carga.
  • SUBNET es el nombre de una subred de la red de VPC. La subred debe estar en la misma región que el servicio de backend o el proxy de destino del balanceador de carga.
  • INTERNAL_IP es una dirección IP interna del intervalo de IP principal de la subred elegida. Puedes omitir la tecla IPAddress para que Google Cloud elija una dirección IP disponible.
  • En el caso de los balanceadores de carga de red de paso a través internos, PROTOCOL es TCP o UDP, según el protocolo del servicio de backend del balanceador de carga. En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales, el protocolo debe ser TCP.
  • En el caso de los balanceadores de carga de red de paso a través internos, PORTS es una matriz de hasta cinco puertos por número o la palabra ALL. En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales, puedes hacer referencia a un solo puerto del intervalo 1-65535. Consulta las especificaciones de los puertos en los conceptos de reglas de reenvío para obtener más información.
  • SERVICE_LABEL es la etiqueta de servicio que has elegido. Debe seguir las convenciones de nomenclatura.

Ver etiquetas de servicio

Consola

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

  1. En la Google Cloud consola, ve a la página Balanceo de carga.

    Ir a Balanceo de carga

  2. Haga clic en el nombre del balanceador de carga interno para ver su página de detalles.

  3. Las reglas de reenvío internas asignadas al balanceador de carga se indican en la sección Frontend (Backend). La columna Nombre de DNS muestra el nombre de DNS interno de Compute Engine asignado 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, significa que la regla de reenvío no tiene ninguna etiqueta de servicio definida.

gcloud

  1. Lista las reglas de reenvío de tu proyecto que usan los balanceadores de carga de red con paso a través internos o los balanceadores de carga de aplicaciones internos regionales. Busca el que necesites y anota su nombre y región para el siguiente paso.

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

    El valor de SCHEME depende de las reglas de reenvío que necesites listar:

    • En el caso de los balanceadores de carga de red de paso a través internos, usa INTERNAL.
    • En el caso de los balanceadores de carga de aplicaciones internos regionales y los balanceadores de carga de red con proxy internos regionales, usa INTERNAL_MANAGED.
  2. Describe la regla de reenvío, sustituyendo 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

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

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

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

Respuesta del balanceador de carga de red de paso a través interno:

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

Respuesta del balanceador de carga de red de proxy interno regional y del balanceador de carga de aplicaciones interno regional:

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

Ejemplo

En el siguiente procedimiento se muestra cómo sustituir una regla de reenvío por una que tenga una etiqueta de servicio. Este procedimiento funciona con todos los balanceadores de carga admitidos.

Si aún no has creado una regla de reenvío para tu balanceador de carga interno, salta este ejemplo y consulta el artículo Crear una regla de reenvío con una etiqueta de servicio.

  1. Describe la regla de reenvío del balanceador de carga, indicando la dirección IP interna de la regla de reenvío:

    gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
        --region=REGION \
        --format="get(IPAddress)"
    
  2. Elimina la regla de reenvío:

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
        --region=REGION
    
  3. Crea una regla de reenvío de sustitución con el mismo nombre y la misma dirección IP interna con una etiqueta de servicio. Consulta las instrucciones para crear una regla de reenvío con una etiqueta de servicio.

Siguientes pasos