Configura un balanceador de cargas de HTTP externo simple

En esta guía de configuración, se muestra cómo crear un balanceador de cargas de HTTP externo simple con los siguientes recursos: En el caso de un balanceador de cargas de HTTPS externo simple con terminación de TLS, consulta Configura un balanceador de cargas de HTTPS externo simple.

Para ver un ejemplo multirregional basado en el contenido que incluya la configuración de certificados SSL e IPv6, consulta Configura un balanceador de cargas de HTTPS multirregional externo.

Para conocer los conceptos generales, consulta la descripción general del balanceo de cargas de HTTP(S) externo.

Si usas GKE, el controlador de Ingress de Kubernetes suele configurar el balanceador de cargas. A fin de obtener más información, consulta Configura Ingress para el balanceo de cargas externo.

Topología del balanceador de cargas de HTTP

En esta guía, crearás la configuración que se ilustra en el siguiente diagrama.

Balanceo de cargas de HTTP simple (haz clic para ampliar)
Balanceo de cargas de HTTP simple (haz clic para agrandar)

La secuencia de eventos en el diagrama es la siguiente:

  1. Un cliente envía una solicitud de contenido a la dirección IPv4 externa que se define en la regla de reenvío.
  2. La regla de reenvío dirige la solicitud al proxy HTTP de destino.
  3. El proxy de destino usa la regla en el mapa de URL para determinar si el único servicio de backend recibe todas las solicitudes.
  4. El balanceador de cargas determina que el servicio de backend tiene solo un grupo de instancias y dirige la solicitud a una instancia de máquina virtual (VM) en ese grupo.
  5. La VM entrega el contenido que solicitó el usuario.

Configura los permisos

A fin de completar los pasos de esta guía, debes tener permiso para crear instancias de Compute Engine, reglas de firewall y direcciones IP reservadas en un proyecto. Debes tener la función de propietario o editor del proyecto, o las siguientes funciones de IAM de Compute Engine:

Tarea Función requerida
Crear instancias Administrador de instancias
Agregar y quitar reglas de firewall Administrador de seguridad
Crear componentes del balanceador de cargas Administrador de redes
Crear un proyecto (opcional) Creador del proyecto

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

Crea un grupo de instancias administrado

Para configurar un balanceador de cargas con un backend de Compute Engine, tus VM deben estar en un grupo de instancias. En esta guía, se describe cómo crear un grupo de instancias administrado con las VM de Linux en las que se ejecuta Apache y, luego, configurar el balanceo de cargas.

El grupo de instancias administrado proporciona las VM que ejecutan los servidores de backend de un balanceador de cargas de HTTP externo. A modo de demostración, los backends entregan sus propios nombres de host.

Console

  1. En Google Cloud Platform Console, ve a la página de grupos de instancias.

    Ir a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias.
  3. A la izquierda, elige Nuevo grupo de instancias administrado.
  4. En Nombre, ingresa lb-backend-example.
  5. En Ubicación, selecciona Zona única.
  6. En Región, selecciona tu región preferida. En este ejemplo, se usa us-east1.
  7. En Zona, selecciona us-east1-b.
  8. En Plantilla de instancias, selecciona Crear una nueva plantilla de instancias.
  9. En Nombre, ingresa lb-backend-template.
  10. Asegúrate de que el disco de arranque esté establecido en una imagen de Debian, como Debian GNU/Linux 9 (stretch). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como apt-get.
  11. En Administración, seguridad, discos, herramientas de redes, usuario único, en la pestaña Administración, inserta la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    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
    
  12. En la pestaña Herramientas de redes, agrega las siguientes etiquetas de red: allow-health-check

  13. Haz clic en Guardar y continuar.

  14. En Modo de ajuste de escala automático, selecciona Sin ajuste de escala automático.

  15. En Cantidad de instancias, ingresa 2.

  16. Para crear el grupo de instancias nuevo, haz clic en Crear.

gcloud

  1. Crea la plantilla.

    gcloud compute instance-templates create lb-backend-template \
       --region=us-east1 \
       --network=default \
       --subnet=default \
       --tags=allow-health-check \
       --image-family=debian-9 \
       --image-project=debian-cloud \
       --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         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'
    
  2. Crea el grupo de instancias administrado en función de la plantilla.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=lb-backend-template --size=2 --zone=us-east1-b
    

Agrega un puerto con nombre al grupo de instancias

En el grupo de instancias, define un servicio HTTP y mapea un nombre de puerto al puerto relevante. Una vez configurado, el servicio de balanceo de cargas reenvía el tráfico al puerto con nombre.

Console

  1. En Google Cloud Platform Console, ve a la página de grupos de instancias.

    Ir a la página Grupos de instancias

  2. Haz clic en el nombre del grupo de instancias (en este ejemplo, lb-backend-example) y, luego, en Editar grupo.
  3. Haz clic en Especificar la asignación del nombre de puerto.
  4. Haz clic en Agregar elemento.
  5. En el nombre de puerto, ingresa http. En el número de puerto, ingresa 80.
  6. Haz clic en Guardar.

gcloud

gcloud compute instance-groups unmanaged set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone us-east1-b

Configura una regla de firewall

En este ejemplo, se crea la regla de firewall fw-allow-health-check. Esta es una regla de entrada que permite el tráfico de los sistemas de verificación de estado de Google Cloud (130.211.0.0/2235.191.0.0/16). En este ejemplo, se usa la etiqueta de destino allow-health-check para identificar las VM.

Console

  1. En Google Cloud Console, ve a la página Firewall.

    Ir a la página Firewall

  2. Haz clic en Crear regla de firewall para crear la segunda regla de firewall:
  3. En Nombre, ingresa fw-allow-health-check.
  4. En Red, selecciona Predeterminado.
  5. En Destinos, selecciona Etiquetas de destino especificadas.
  6. Propaga el campo Etiquetas de destino con allow-health-check.
  7. Establece Filtro de fuente en Rangos de IP.
  8. Establece Rangos de IP de origen en 130.211.0.0/2235.191.0.0/16.
  9. En Protocolos y puertos, selecciona Protocolos y puertos especificados.
  10. Selecciona la casilla de verificación tcp y, luego, escribe 80 para los números de puerto.
  11. Haz clic en Crear.

gcloud

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

Reserva una dirección IP externa

Ahora que tus instancias están en funcionamiento, configura una dirección IP externa, estática y global que tus clientes usarán para llegar al balanceador de cargas.

Console

  1. En Google Cloud Console, ve a la página Direcciones IP externas.

    Ir a la página Direcciones IP externas

  2. Para reservar una dirección IPv4, haz clic en Reservar dirección estática.
  3. En Nombre, ingresa lb-ipv4-1.
  4. En Nivel de servicio de red, establece Premium.
  5. Configura Versión de IP como IPv4.
  6. Establece Tipo en Global.
  7. Haz clic en Reservar.

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --global

Préstale atención a la dirección IPv4 que estaba reservada:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Configura el balanceador de cargas

Console

  1. En Google Cloud Console, ve a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Balanceo de cargas de HTTP(S), haz clic en Iniciar configuración.
  4. Selecciona De Internet a mis VM y, luego, haz clic en Continuar.
  5. En el campo Nombre del balanceador de cargas, ingresa web-map-http.
  6. Haz clic en Configuración de backend.
    1. En Crear o seleccionar servicios y depósitos de backend, selecciona Servicios de backend > Crear un servicio de backend.
    2. Agrega un nombre al servicio de backend, como web-backend-service.
    3. En Protocolo, selecciona HTTP.
    4. En Puerto con nombre, ingresa http.
    5. En Backends > Nuevo Backend > Grupo de instancias, selecciona el grupo de instancias, lb-backend-example.
    6. En Números de puerto, ingresa 80.
    7. Mantén la configuración predeterminada.
    8. En Verificación de estado, selecciona Crear una verificación de estado y, luego, agrega un nombre para la verificación de estado, como http-basic-check.
    9. Configura el protocolo como HTTP y haz clic en Guardar y continuar.
    10. Mantén la configuración predeterminada.
    11. Haz clic en Crear.
  7. En Reglas de host y de ruta de acceso, mantén la configuración predeterminada.
  8. En Configuración de frontend, usa los siguientes valores:
    1. Configura Protocolo como HTTP.
    2. Configura Dirección IP como lb-ipv4-1, la que creaste antes.
    3. Asegúrate de que el valor de Puerto esté establecido en 80 para permitir el tráfico HTTP.
    4. Haz clic en Listo.
  9. Haz clic en Revisar y finalizar.
  10. Cuando termines de configurar el balanceador de cargas, haz clic en Crear.
  11. Espera a que se cree el balanceador de cargas.
  12. Haz clic en el nombre del balanceador de cargas.
  13. En la pantalla Detalles del balanceador de cargas, toma nota del valor de IP:Puerto de tu balanceador de cargas.

gcloud

  1. Crea una verificación de estado.
        gcloud compute health-checks create http http-basic-check \
            --port 80
        
  2. Crea un servicio de backend.
        gcloud compute backend-services create web-backend-service \
            --protocol=HTTP \
            --port-name=http \
            --health-checks=http-basic-check \
            --global
        
  3. Agrega tu grupo de instancias como backend al servicio de backend.
        gcloud compute backend-services add-backend web-backend-service \
            --instance-group=lb-backend-example \
            --instance-group-zone=us-east1-b \
            --global
        
  4. Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend predeterminado.
        gcloud compute url-maps create web-map-http \
            --default-service web-backend-service
        
  5. Cree un proxy HTTP de destino para enrutar las solicitudes al mapa de URL.
        gcloud compute target-http-proxies create http-lb-proxy \
            --url-map web-map-http
        
  6. Crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
        gcloud compute forwarding-rules create http-content-rule \
            --address=lb-ipv4-1\
            --global \
            --target-http-proxy=http-lb-proxy \
            --ports=80
        

Prueba el tráfico enviado a las instancias

Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico a la regla de reenvío y ver cómo este se dispersa en las diferentes instancias.

Console

  1. En Google Cloud Console, ve a la página Balanceo de cargas.

    Ir a la página Balanceo de cargas

  2. Haz clic en el balanceador de cargas que acabas de crear.
  3. En la sección Backend, confirma que las VM estén en buen estado. La columna En buen estado debe estar propagada, de modo que se indique que ambas VM están en buen estado (2/2). Si no ves esto, vuelve a cargar la página. Puede tomar unos minutos que Cloud Console indique que las VM están en buen estado. Si los backends no se muestran en buen estado después de unos minutos, revisa la configuración del firewall y la etiqueta de red asignada a tus VM de backend.
  4. Una vez que Cloud Console muestre que las instancias de backend están en buen estado, puedes probar tu balanceador de cargas con un navegador web si te diriges a http://IP_ADDRESS. Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas.
  5. El navegador debe procesar una página con contenido que muestre el nombre de la instancia que entregó la página, junto con su zona (por ejemplo, Page served from: lb-backend-example-xxxx). Si el navegador no procesa esta página, revisa las opciones de configuración que aparecen en esta guía.

Próximos pasos