Configura un balanceador de cargas de HTTP(S) externo global con conectividad híbrida.

En esta página, se ilustra cómo implementar un balanceador de cargas de HTTP(S) externo global para balancear las cargas del tráfico a los extremos de red locales o en otras nubes públicas y que son accesibles a través de la conectividad híbrida.

Después de completar estas tareas, puedes explorar de manera opcional la habilitación de servicios adicionales (como Cloud CDN y Google Cloud Armor) y las características de administración avanzada del tráfico.

Si aún no lo hiciste, revisa la descripción general de los NEG de conectividad híbrida a fin de comprender los requisitos de red para configurar el balanceo de cargas híbrido.

Descripción general de la configuración

En el ejemplo en esta página, se configura la siguiente implementación de muestra:

Ejemplo del balanceador de cargas de HTTP(S) externo para la conectividad híbrida (haz clic para ampliar)
Ejemplo del balanceador de cargas de HTTP(S) externo para la conectividad híbrida (haz clic para ampliar)

Debes configurar la conectividad híbrida antes de intentar configurar una implementación del balanceo de cargas híbrida. En esta página, no se incluye la configuración de conectividad híbrida.

Según la elección del producto de conectividad híbrida (ya sea Cloud VPN o Cloud Interconnect [dedicado o de socio]), usa la documentación del producto pertinente para configurarlo.

Permisos

Debes tener los siguientes permisos para configurar el balanceo de cargas híbrido:

  • En Google Cloud

  • En tu entorno local o en otro entorno de nube que no es de Google Cloud

    • Permiso para configurar los extremos de red que permiten que se pueda acceder a los servicios en tu entorno local o en otros entornos de nube desde Google Cloud a través de una combinación IP:Port. Comunícate con el administrador de red del entorno para obtener más detalles.
    • Permiso para crear reglas de firewall en tus entornos locales o en otros entornos de nube a fin de permitir que los sondeos de verificación de estado de Google lleguen a los extremos.

Además, a fin de seguir las instrucciones de esta página, crea un NEG de conectividad híbrida, un balanceador de cargas y NEG zonales (y sus extremos) que funcionen como backends basados en la nube de Google para el balanceador de cargas.

Debes ser propietario o editor de un proyecto o tener las siguientes funciones de IAM de Compute Engine.

Tarea Función requerida
Crear y modificar componentes del balanceador de cargas Administrador de redes
Crear y modificar los NEG Administrador de instancias de Compute
Agrega y quita reglas de firewall Administrador de seguridad

Establece una conectividad híbrida

Tu Google Cloud y otros entornos de nube deben estar conectados a través de la conectividad híbrida, mediante adjuntos de VLAN de Cloud Interconnect o túneles de Cloud VPN con Cloud Router. Te recomendamos usar una conexión de alta disponibilidad.

Un Cloud Router habilitado con enrutamiento dinámico global aprende sobre el extremo específico a través de BGP y lo programa en tu red de VPC de Google Cloud. No se admite el enrutamiento dinámico regional. Tampoco se admiten las rutas estáticas.

La red de VPC de Google Cloud que usas para configurar Cloud Interconnect o Cloud VPN es la misma red que usas a fin de configurar la implementación del balanceo de cargas híbrido. Asegúrate de que los rangos de CIDR de la subred de la red de VPC no entren en conflicto con los rangos de CIDR remotos. Cuando las direcciones IP se superponen, las rutas de subred se priorizan por sobre la conectividad remota.

Para obtener instrucciones, consulta los siguientes vínculos:

No sigas las instrucciones de esta página hasta que no hayas configurado la conectividad híbrida entre tus entornos.

Configura el entorno local o algún otro entorno de nube

Realiza los pasos siguientes a fin de configurar tu entorno local o algún otro entorno de nube para el balanceo de cargas híbrido:

  • Configura los extremos de red para exponer los servicios locales a Google Cloud (IP:Port).
  • Configura reglas de firewall en tu entorno local o en otro entorno de nube.
  • Configura Cloud Router para anunciar ciertas rutas obligatorias a tu entorno privado.

Configura extremos de red

Luego de configurar la conectividad híbrida, configura uno o más extremos de red en tus entornos de nube locales o en otros a los que se pueda acceder mediante Cloud Interconnect o Cloud VPN mediante una combinación IP:port. Esta combinación IP:port se configurará como uno o más extremos para el NEG de conectividad híbrida que se creará más adelante en Google Cloud en este proceso.

Si hay varias rutas de acceso al extremo de IP, el enrutamiento seguirá el comportamiento descrito en la descripción general de Cloud Router.

Configurar reglas de firewall

Las siguientes reglas de firewall se deben crear en tu entorno local o en otro entorno de nube:

  • Ingress permite las reglas de firewall para permitir el tráfico de los sondeos de verificación de estado de Google a tus extremos. Para el balanceador de cargas de HTTP(S) externo, el balanceador de cargas de HTTP(S) interno, el balanceador de cargas de proxy TCP y el balanceador de cargas de proxy SSL, los rangos que se permitirán son: 35.191.0.0/16 y 130.211.0.0/22. , Para obtener más detalles, consulta Rangos de IP del sondeo y reglas de firewall.
  • Ingress permite que las reglas de firewall permitan que el tráfico con balanceo de cargas llegue a los extremos.

Configura Cloud Router para anunciar las siguientes rutas en tu entorno local o en otro entorno de nube:

  • Los rangos que usan los sondeos de verificación de estado de Google: 35.191.0.0/16 y 130.211.0.0/22.

Configura el entorno de Google Cloud

Para los siguientes pasos, asegúrate de usar la misma red de VPC que se usó a fin de configurar la conectividad híbrida entre los entornos.

Crear regla de firewall

En este ejemplo, se crea la regla de firewall:

  • fw-allow-health-check: Una regla de entrada, aplicable a las instancias de Google Cloud cuyas cargas se balancean, que permite el tráfico del balanceador de cargas y los sistemas de verificación de estado de Google Cloud (130.211.0.0/22 y 35.191.0.0/16) En este ejemplo, se usa la etiqueta de destino allow-health-check para identificar las VM de backend a las que se debe aplicar.

Console

  1. Ve a la página Firewalls en la consola de Google Cloud.
    Ir a la página Firewalls
  2. Haz clic en Crear regla de firewall:
    1. Ingresa un Nombre de fw-allow-health-check.
    2. En Red selecciona NETWORK.
    3. En Destinos, selecciona Etiquetas de destino especificadas.
    4. Propaga el campo Etiquetas de destino con allow-health-check.
    5. Configura Filtro de fuente como Rangos de IPv4.
    6. Establece Rangos de IPv4 de origen en 130.211.0.0/2235.191.0.0/16.
    7. En Protocolos y puertos, selecciona Protocolos y puertos especificados.
    8. Selecciona la casilla de verificación junto a tcp y escribe 80 para el número de puerto.
    9. Haz clic en Crear.

gcloud

  1. Crea la regla fw-allow-health-check-and-proxy para permitir que las verificaciones de estado del balanceador de cargas y Google Cloud se comuniquen con instancias de backend en los puertos TCP 80.

    Reemplaza NETWORK por el nombre de la red de VPC.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=NETWORK \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    

Configura el NEG zonal

Para los backends basados en la nube de Google, te recomendamos configurar varios NEG zonales en la misma región en la que configuraste la conectividad híbrida.

Para este ejemplo, configuramos un NEG zonal (con extremos de tipo GCE_VM_IP_PORT) en la región REGION. Primero, crea las VM. Luego, crea un NEG zonal y agrega los extremos de red de las VM al NEG.

Crea las VM

Console

  1. Ve a la página Instancias de VM en Google Cloud Console.
    Ir a la página Instancias de VM
  2. Haz clic en Crear instancia.
  3. Configura el campo Nombre como vm-a1.
  4. En Región, elige REGION y elige cualquier Zona.
  5. En la sección Disco de arranque, asegúrate de que el sistema operativo Debian y la versión 10 (buster) estén seleccionados como opciones de disco de arranque. Haz clic en Elegir para cambiar la imagen si es necesario.
  6. Haz clic en Administración, seguridad, discos, redes, instancia única y realiza los siguientes cambios:

    • Haz clic en Herramientas de redes y agrega las siguientes Etiquetas de red: allow-ssh y allow-health-check.
    • Haz clic en Editar  en Interfaces de red y realiza los siguientes cambios. Luego, haz clic en Listo:
      • Red: NETWORK
      • Subred: SUBNET
      • IP interna principal: efímera (automática)
      • IP externa: efímera
    • Haz clic en Administración. En el campo Secuencia de comandos de inicio, copia y pega el siguiente contenido de la secuencia de comandos. El contenido de secuencia de comandos es idéntico para las cuatro VM:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      
  7. Haz clic en Crear.

  8. Repite los siguientes pasos para crear una segunda VM mediante la siguiente combinación de nombre y zona:

    • Nombre: vm-a2, zona: ZONE

gcloud

A fin de crear las VM, ejecuta el siguiente comando dos veces, con estas combinaciones para VM_NAME y ZONE. El contenido de la secuencia de comandos es idéntico para ambas VM.

  • VM_NAME de vm-a1 y cualquier ZONE que elijas
  • VM_NAME de vm-a2 y la misma ZONE

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=SUBNET \
        --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://169.254.169.254/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    

Crea el NEG zonal

gcloud

  1. Crea un NEG zonal (con extremos GCE_VM_IP_PORT) mediante el comando gcloud compute network-endpoint-groups create:

    gcloud compute network-endpoint-groups create GCP_NEG_NAME \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=GCP_NEG_ZONE \
        --network=NETWORK \
        --subnet=SUBNET
        [--default-port=DEFAULT_PORT]
    

    Puedes especificar un DEFAULT_PORT mientras creas el NEG o especificar un número de puerto para cada extremo en el paso siguiente.

  2. Agrega extremos a GCP_NEG_NAME.

    gcloud compute network-endpoint-groups update GCP_NEG_NAME \
        --zone=GCP_NEG_ZONE \
        --add-endpoint='instance=vm-a1,[port=PORT_VM_A1]' \
        --add-endpoint='instance=vm-a2,[port=PORT_VM_A2]'
    

Configura el NEG de conectividad híbrida

Cuando crees el NEG, usa un ZONE que minimice la distancia geográfica entre Google Cloud y tu entorno local o de otra nube. Por ejemplo, si alojas un servicio en un entorno local en Fráncfort, Alemania, puedes especificar la zona europe-west3-a de Google Cloud cuando crees el NEG.

Además, si usas Cloud Interconnect, la ZONE que se usa para crear el NEG debe estar en la misma región en la que se configuró el adjunto de VLAN de Cloud Interconnect con conectividad híbrida.

Para conocer las regiones y zonas disponibles, consulta la documentación de Compute Engine: regiones y zonas disponibles.

Console

gcloud

  1. Crea un NEG de conectividad híbrida mediante el comando gcloud compute network-endpoint-groups create.

    gcloud compute network-endpoint-groups create ON_PREM_NEG_NAME \
        --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
        --zone=ON_PREM_NEG_ZONE \
        --network=NETWORK
    
  2. Agrega el extremo a on-prem-neg:

    gcloud compute network-endpoint-groups update ON_PREM_NEG_NAME \
        --zone=ON_PREM_NEG_ZONE \
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_1,port=PORT_1"
        --add-endpoint="ip=ON_PREM_IP_ADDRESS_2,port=PORT_2"
    

Puedes usar este comando para agregar los extremos de red que configuraste antes de forma local o en tu entorno de nube. Repite --add-endpoint tantas veces como sea necesario.

Puedes repetir estos pasos para crear varios NEG híbridos si es necesario.

Configura el balanceador de cargas

Console

gcloud

  1. Crea una dirección IP externa estática global a la que los clientes externos envían tráfico.
      gcloud compute addresses create LB_IP_ADDRESS_NAME \
          --network-tier=PREMIUM \
          --global
      
  2. Crea una verificación de estado para los backends.
      gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
          --use-serving-port
      
  3. Crea un servicio de backend. Agrega el NEG zonal y el NEG de conectividad híbrida como backends a este servicio de backend.
      gcloud compute backend-services create BACKEND_SERVICE \
          --health-checks=HTTP_HEALTH_CHECK_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --global
      
  4. Agrega el NEG sin servidores como un backend al servicio de backend:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=GCP_NEG_NAME \
          --network-endpoint-group-zone=GCP_NEG_ZONE
       
  5. Agrega el NEG híbrido como un backend al servicio de backend:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --global \
          --balancing-mode=RATE \
          --max-rate-per-endpoint=MAX_REQUEST_RATE_PER_ENDPOINT \
          --network-endpoint-group=ON_PREM_NEG_NAME \
          --network-endpoint-group-zone=ON_PREM_NEG_ZONE
      
  6. Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend.
      gcloud compute url-maps create URL_MAP_NAME \
          --default-service BACKEND_SERVICE
      
  7. Sigue este paso solo si quieres crear un balanceador de cargas de HTTPS. Esto no es obligatorio para los balanceadores de cargas de HTTP.
    Si quieres crear un balanceador de cargas de HTTPS, debes tener un recurso de certificado SSL para usar en el proxy HTTPS. Puedes crear un recurso de certificado SSL mediante un certificado SSL administrado por Google o un certificado SSL autoadministrado. Se recomienda usar certificados administrados por Google, ya que Google Cloud obtiene, administra y renueva estos certificados de manera automática.

    Para crear un certificado administrado por Google, debes tener un dominio. Si no tienes un dominio, puedes usar un certificado SSL autofirmado para realizar pruebas.

    Si deseas crear un recurso de certificado SSL que administra Google, ingresa el siguiente comando:
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --domains DOMAIN
    
    Si deseas crear un recurso de certificado SSL autoadministrado, haz lo siguiente:
    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
        --certificate CRT_FILE_PATH \
        --private-key KEY_FILE_PATH
    
  8. Crea un proxy HTTP(S) de destino para enrutar las solicitudes al mapa de URL.

    Para un balanceador de cargas de HTTP, crea un proxy HTTP de destino:
    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
        --url-map=URL_MAP_NAME
    
    Para un balanceador de cargas de HTTPS, crea un proxy HTTPS de destino. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas de HTTPS, por lo que también debes cargar el certificado en este paso.
    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
        --ssl-certificates=SSL_CERTIFICATE_NAME \
        --url-map=URL_MAP_NAME
    
  9. Crea una regla de reenvío para enrutar las solicitudes entrantes al proxy.

    Para un balanceador de cargas de HTTP, ingresa el siguiente comando:
    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=LB_IP_ADDRESS_NAME \
        --target-http-proxy=TARGET_HTTP_PROXY_NAME \
        --global \
        --ports=80
    
    Para un balanceador de cargas de HTTPS, ingresa el siguiente comando:
    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=LB_IP_ADDRESS_NAME \
        --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
        --global \
        --ports=443
    

Conecta tu dominio al balanceador de cargas

Después de crear el balanceador de cargas, toma nota de la dirección IP asociada con este: por ejemplo, 30.90.80.100. Para apuntar tu dominio al balanceador de cargas, crea un registro A mediante tu servicio de registro de dominio. Si agregaste varios dominios a tu certificado SSL, debes agregar un registro A para cada uno, que apunte a la dirección IP del balanceador de cargas. Por ejemplo, a fin de crear registros A para www.example.com y example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si usas Google Domains, consulta la página de ayuda de Google Domains para obtener más información.

Prueba el balanceador de cargas

Ahora que ya configuraste el balanceador de cargas, puedes comenzar a enviar tráfico a la dirección IP del balanceador de cargas.

  1. Ve a la página Balanceo de cargas en la consola de Google Cloud.
    Ir a la página Balanceo de cargas
  2. Haz clic en el balanceador de cargas que acabas de crear.
  3. Toma nota de la Dirección IP del balanceador de cargas.
  4. Si creaste un balanceador de cargas de HTTP, puedes probarlo mediante un navegador web en http://IP_ADDRESS. Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas. Deberías dirigirte al servicio que expusiste a través del extremo.

    Si creaste un balanceador de cargas de HTTPS, puedes probarlo mediante curl de la siguiente manera. Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas. Deberías dirigirte al servicio que expusiste a través del extremo.

   curl -k https://IP_ADDRESS
   

Para confirmar que los extremos que no son de Google Cloud responden, ejecuta lo siguiente:

   curl -k https://IP_ADDRESS/on-prem-service
   

Si eso no funciona y usas un certificado administrado por Google, confirma que el estado del recurso de certificado sea ACTIVO. Para obtener más información, consulta el estado de los recursos del certificado SSL administrado por Google.

Si usas un certificado administrado por Google, prueba el dominio que apunta a la dirección IP del balanceador de cargas. Por ejemplo:

   curl -s https://test.example.com
   

¿Qué sigue?