Usa reglas de reenvío

Una regla de reenvío y su dirección IP correspondiente representan la configuración de frontend de un balanceador de cargas de Google Cloud. Para obtener información general sobre las reglas de reenvío, consulta Conceptos de la regla de reenvío.

Antes de comenzar

Antes de agregar una regla de reenvío, reserva una dirección IP para ella. Esto no es un requisito, pero se recomienda.

Para los balanceadores de cargas internos, reserva una dirección IP interna estática.

Para los balanceadores de cargas externos, reserva una dirección IP externa estática.

Permisos

Para seguir esta guía, debes tener los permisos necesarios.

Si deseas obtener más información, consulta las siguientes guías:

Agrega una regla de reenvío

Console

Crea la regla de reenvío del balanceador de cargas

  1. Ve a la página Balanceo de cargas en Google Cloud Console.
    Ir a la página Balanceo de cargas
  2. Haz clic en Crear balanceador de cargas.
  3. Selecciona un tipo de balanceador de cargas, incluido el tipo de tráfico y si el balanceador de cargas está orientado a Internet o es solo interno.
  4. Haz clic en Continuar.
  5. Haz clic en Configuración de frontend. En la sección IP y puerto de frontend nuevos, realiza los siguientes cambios:

    1. Nombre: FORWARDING_RULE_NAME
    2. Subred: SUBNET_OF_YOUR_RESERVED_IP_ADDRESS
    3. Desde la IP interna o la dirección IP, selecciona la dirección IP reservada con anterioridad.

      De manera opcional, puedes reservar una dirección IP ahora en esta IU o puedes usar una dirección IP efímera.

    4. Selecciona el protocolo, los números de puerto y la versión de IP.

      Solo algunos tipos de balanceadores de cargas admiten IPv6.

    5. Verifica que haya una marca de verificación azul junto a Configuración de frontend antes de continuar. Si no, revisa este paso.

  6. Haz clic en Revisar y finalizar. Vuelve a verificar la configuración.

  7. Haz clic en Crear.

gcloud

Crea una regla de reenvío para el servicio de backend. Cuando crees la regla de reenvío, especifica la dirección IP reservada en la subred.

gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
    --global | --region=REGION \
    --load-balancing-scheme=SCHEME \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=NAME_OF_BACKEND_SERVICE \
    --backend-service-region=REGION_OF_BACKEND_SERVICE

api

Para un balanceador de cargas regional, crea una regla de reenvío regional mediante una solicitud POST al método forwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/regions/us-west1/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]",
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]",
  "networkTier": "PREMIUM | STANDARD"
}
</code></pre>

Para un balanceador de cargas global, crea una regla de reenvío global mediante una solicitud POST al método globalForwardingRules.insert.

POST https://compute.googleapis.com/compute/v1/projects/[project ID]/global/forwardingRules
{
  "name": "[forwarding rule name]",
  "IPAddress": "[reserved IP address]",
  "IPProtocol": "[protocol type]",
  "ports": [
    "[port number]"
  ],
  "loadBalancingScheme": "[scheme]",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/subnetworks/[subnet name]
  "network": "https://www.googleapis.com/compute/v1/projects/[project ID]/global/networks/[network name]",
  "backendService": "https://www.googleapis.com/compute/v1/projects/[project ID]/regions/[region]/backendServices/[backend service name]
  "networkTier": "PREMIUM | STANDARD"
}

Borra una regla de reenvío

Es posible que quieras borrar una regla de reenvío por una de las siguientes razones:

  • Para reemplazarla por una nueva
  • Para detener un balanceador de cargas durante un tiempo limitado, sin borrar por completo el balanceador de cargas

Estas son dos de las razones por las que podrías tener que detener un balanceador de cargas sin borrarlo:

  • Para suspender de forma temporal los cargos del balanceador de cargas
  • Para pausar de forma temporal las solicitudes entrantes a los backends

Si la regla de reenvío apunta a una dirección IP reservada (como se recomienda), puedes borrar la regla de reenvío para detener un balanceador de cargas. Esto detiene el tráfico al destino de la regla de reenvío.

Para borrar una regla de reenvío global, ejecuta el siguiente comando:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --global

Para borrar una regla de reenvío regional, ejecuta este otro comando:

gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
    --region=REGION

Para reiniciar el balanceador de cargas, vuelve a crear la regla de reenvío y conserva la misma dirección IP, como se describe en Agrega una regla de reenvío.

Configura una regla de reenvío con el directorio de servicios

Puedes registrar reglas de reenvío de balanceadores de cargas internos con el directorio de servicios.

Cuando configuras tu balanceador de cargas TCP/UDP interno o un balanceador de cargas HTTP(S) interno, puedes registrarlo como un extremo en un espacio de nombres del directorio de servicios existente y en el servicio de tu elección. Las aplicaciones cliente pueden usar el Directorio de servicios con HTTP, gRPC o DNS (si creaste una zona DNS de Directorio de servicio) para resolver la dirección del servicio del balanceador de cargas interno y conectarse directamente a él.

Registra un balanceador de cargas TCP/UDP interno

Para registrar un balanceador de cargas TCP/UDP interno, haz lo siguiente:

gcloud

Ejecuta el comando gcloud compute forwarding-rules create y configura la marca service-directory-registrations:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=BACKEND_SERVICE_NAME \
    --backend-service-region=REGION
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

Reemplaza lo siguiente:

  • FORWARDING_RULE_NAME: un nombre para la regla de reenvío que se creará
  • REGION: la región en la que se creará la regla de reenvío
  • NETWORK_NAME: la red a la que se aplica esta regla de reenvío
  • SUBNET_NAME: la subred a la que se aplica esta regla de reenvío
  • RESERVED_IP_ADDRESS: la dirección IP en la que se entrega la regla de reenvío
  • PROTOCOL_TYPE: el protocolo IP que entregará la regla
  • PORT_NUMBER: una lista de puertos separados por comas
  • BACKEND_SERVICE_NAME: servicio de backend de destino que recibe el tráfico
  • SD_NAMESPACE_NAME: el nombre del espacio de nombres del Directorio de servicios en el que deseas registrar el balanceador de cargas TCP/UDP interno. El proyecto y la región de Google Cloud de este espacio de nombres se extraen de esta regla de reenvío.
  • SD_SERVICE_NAME: es el nombre del servicio del Directorio de servicios en el que quieres registrar el extremo. Debe encontrarse en el nombre del espacio de nombres del directorio de servicios.

Registra un balanceador de cargas de HTTP(S) interno

Para registrar un balanceador de cargas HTTP(S) interno, haz lo siguiente:

gcloud

Ejecuta el comando gcloud compute forwarding-rules create y configura la marca service-directory-registrations:

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=INTERNAL_MANAGED \
    --network=NETWORK_NAME \
    --address=RESERVED_IP_ADDRESS \
    --target-https-proxy=PROXY_NAME \
    --target-https-proxy-region=PROXY_REGION \
    --ports=PORT_NUMBER \
    --service-directory-registrations namespace=SD_NAMESPACE_NAME, \
                        service=SD_SERVICE_NAME

Reemplaza lo siguiente:

  • FORWARDING_RULE_NAME: un nombre para la regla de reenvío que se creará
  • REGION: la región en la que se creará la regla de reenvío
  • NETWORK_NAME: la red a la que se aplica esta regla de reenvío
  • RESERVED_IP_ADDRESS: la dirección IP en la que se entrega la regla de reenvío
  • PROXY_NAME: proxy de destino que recibe el tráfico
  • PROXY_REGION: región del proxy en la que se operará
  • PORT_NUMBER: una lista de puertos separados por comas
  • SD_NAMESPACE_NAME: el nombre del espacio de nombres del Directorio de servicios en el que deseas registrar el balanceador de cargas HTTP(S) interno. El proyecto y la región de Google Cloud de este espacio de nombres se extraen de esta regla de reenvío.
  • SD_SERVICE_NAME: es el nombre del servicio del Directorio de servicios en el que quieres registrar el extremo. Debe encontrarse en el nombre del espacio de nombres del directorio de servicios.

Para obtener información detallada sobre cómo configurar un balanceador de cargas interno con el Directorio de servicios, consulta la sección sobre cómo configurar un balanceador de cargas interno en el Directorio de servicios.

¿Qué sigue?