Configura un balanceador de cargas de aplicaciones externo global con backends de grupos de instancias de VM

En esta guía de configuración, se muestra cómo crear un balanceador de cargas de aplicaciones externo global con un backend de grupo de instancias administrado de Compute Engine.

Si este ejemplo no coincide con tu caso de uso, consulta una de las siguientes páginas:

Para conocer los conceptos generales, consulta la descripción general del balanceador de cargas de aplicaciones externo.

Si eres un usuario existente del balanceador de cargas de aplicaciones clásico, asegúrate de revisar Planifica la migración al balanceador de cargas de aplicaciones externo global cuando planifiques una implementación nueva con el balanceador de cargas de aplicaciones externo global.


Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guía:

GUIARME


Topologías de balanceador de cargas

Para un balanceador de cargas HTTPS, crea la configuración que se muestra en el siguiente diagrama.

Balanceador de cargas de aplicaciones externo con un backend de grupo de instancias administrado (MIG).
Figura 1. Balanceador de cargas de aplicaciones externo con un backend de grupo de instancias administrado (MIG) (haz clic para ampliar).

Para un balanceador de cargas HTTP, crea la configuración que se muestra en el siguiente diagrama.

Balanceador de cargas de aplicaciones externo con un backend de grupo de instancias administrado (MIG).
Figura 2. Balanceador de cargas de aplicaciones externo con un backend de grupo de instancias administrado (MIG) (haz clic para ampliar).

La secuencia de eventos de los diagramas 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. Para un balanceador de cargas HTTPS, la regla de reenvío dirige la solicitud al proxy HTTPS de destino.

    Para un balanceador de cargas HTTP, 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 un ú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.

Antes de comenzar

Completa los siguientes pasos antes de crear el balanceador de cargas.

Configura un recurso de certificado SSL

Para un balanceador de cargas HTTPS, crea un recurso de certificado SSL como se describe a continuación:

Recomendamos que uses un certificado administrado por Google.

En este ejemplo, se supone que ya tienes un SSL certificate resource llamado www-ssl-cert.

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 Rol requerido
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 de proyectos

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

Configura la red y las subredes

Para crear la red y la subred de ejemplo, sigue estos pasos:

Console

Para admitir el tráfico IPv4 e IPv6, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. Haz clic en Crear red de VPC.

  3. Ingresa un Nombre para la red.

  4. Opcional: Si deseas configurar rangos de direcciones IPv6 internos en subredes de esta red, completa estos pasos:

    1. En Rango de IPv6 interno de ULA de la red de VPC, selecciona Habilitado.
    2. En Asignar rango de IPv6 interno, selecciona Automáticamente o Manualmente.

      Si seleccionas Manualmente, ingresa un rango /48 que pertenezca al rango fd20::/20. Si el rango está en uso, se te solicitará que proporciones un rango diferente.

  5. En Modo de creación de subredes, selecciona Personalizado.

  6. En la sección Subred nueva, configura los siguientes campos:

    1. En el campo Nombre, proporciona un nombre para la subred.
    2. En el campo Región, selecciona una región.
    3. En Tipo de pila IP, selecciona IPv4 e IPv6 (pila doble).
    4. En el campo Rango de direcciones IP, ingresa un rango de direcciones IP. Este es el rango IPv4 principal de la subred.

      Aunque puedes configurar un rango de direcciones IPv4 para la subred, no puedes elegir el rango de direcciones IPv6 para lo siguiente: la subred. Google proporciona un bloque CIDR IPv6 de tamaño fijo (/64).

    5. En Tipo de acceso IPv6, selecciona Externo.

  7. Haz clic en Listo.

  8. Haz clic en Crear.

Para que solo sea compatible con el tráfico IPv4, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. Haz clic en Crear red de VPC.

  3. En el campo Nombre, ingresa un nombre para la red.

  4. En Modo de creación de subredes, selecciona Personalizado.

  5. En la sección Subred nueva, configura lo siguiente:

    1. En el campo Nombre, proporciona un nombre para la subred.
    2. En el campo Región, selecciona una región.
    3. En Tipo de pila de IP, elige IPv4 (pila única).
    4. En el campo Rango de direcciones IP, ingresa el rango IPv4 principal para la subred.
  6. Haz clic en Listo.

  7. Haz clic en Crear.

gcloud

  1. Crea la red de VPC en modo personalizado:

    gcloud compute networks update NETWORK \
        [ --enable-ula-internal-ipv6 [ --internal-ipv6-range=ULA_IPV6_RANGE ]] \
        --subnet-mode=custom
    
  2. Dentro de la red, crea una subred para backends.

    En el tráfico IPv4 e IPv6, usa el siguiente comando para actualizar una subred:

    gcloud compute networks subnets update SUBNET \
       --stack-type=IPV4_IPv6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --region=REGION_A
    

    Para el tráfico IPv4, usa el siguiente comando:

    gcloud compute networks subnets update SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=10.1.2.0/24 \
       --region=REGION_A
    

Reemplaza lo siguiente:

  • NETWORK: es un nombre para la red de VPC

  • ULA_IPV6_RANGE: es un prefijo /48 desde el rango fd20::/20 que usa Google para los rangos de subred IPv6 internos. Si no usas la marca --internal-ipv6-range, Google selecciona un prefijo /48 para la red

  • SUBNET: un nombre de la subred

  • REGION_A: es el nombre de la región.

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. Un grupo de instancias administrado crea cada una de sus instancias administradas según las plantillas de instancias que especifiques.

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

Antes de crear un grupo de instancias administrado, crea una plantilla de instancias.

Console

Para admitir el tráfico IPv4 e IPv6, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Plantillas de instancia.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. En Nombre, ingresa lb-backend-template.

  4. En la lista Región, selecciona una región.

  5. Asegúrate de que el disco de arranque esté configurado como una imagen de Debian, como Debian GNU/Linux 10 (buster). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como apt-get.

  6. Expande las Opciones avanzadas.

  7. Expande Herramientas de redes y configura los siguientes campos:

    1. En Etiquetas de red, ingresa allow-health-check,allow-health-check-ipv6.
    2. En la sección Interfaces de red, haz clic en Editar. Configura los siguientes campos:
      • Red: NETWORK
      • Subred: SUBNET
      • Tipo de pila IP: IPv4 e IPv6 (pila doble)
    3. Haga clic en Listo.
  8. Expande Administración. En el campo Secuencia de comandos de inicio, ingresa la siguiente secuencia de comandos:

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2
    
  9. Haz clic en Crear.

gcloud

Para admitir el tráfico IPv4 y el IPv6, ejecuta el siguiente comando:

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPv4_IPv6 \
  --tags=allow-health-check,allow-health-check-ipv6 \
  --image-family=debian-10 \
  --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://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Terraform

Para crear la plantilla de instancias, usa el recurso google_compute_instance_template.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

Crea el grupo de instancias administrado y selecciona la plantilla de instancias.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. A la izquierda, elige Nuevo grupo de instancias administrado (sin estado).

  4. En Nombre, ingresa lb-backend-example.

  5. En Ubicación, selecciona Zona única.

  6. En Región, selecciona tu región preferida.

  7. En Zona, selecciona una zona.

  8. En Plantilla de instancias, selecciona la plantilla de instancias lb-backend-template.

  9. En Modo de ajuste de escala automático, selecciona Activado: agrega y quita instancias del grupo.

    Establece la Cantidad mínima de instancias en 2 y la Cantidad máxima de instancias en 2 o más.

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

gcloud

  1. Crea el grupo de instancias administrado en función de la plantilla.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

Para crear el grupo de instancias administrado, usa el recurso google_compute_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

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 pertinente. El servicio de balanceo de cargas reenvía el tráfico al puerto especificado. Para obtener más información, consulta Puertos con nombre.

Console

  1. En la consola de Google Cloud, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

  2. Haz clic en lb-backend-example.

  3. En la página Descripción general del grupo de instancias, haz clic en Editar.

  4. En la sección Asignación de puertos, haz clic en Agregar puerto.

    1. En el nombre de puerto, ingresa http. En el número de puerto, ingresa 80.
  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud compute instance-groups set-named-ports.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE_A

Terraform

El atributo named_port se incluye en la muestra del grupo de instancias administrado.

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 la consola de Google Cloud, ve a la página Políticas de firewall.

    Ir a Políticas de firewall

  2. Haz clic en Crear regla de firewall para crear la regla de firewall.

  3. En Nombre, ingresa fw-allow-health-check.

  4. Selecciona una Red.

  5. En Destinos, selecciona Etiquetas de destino especificadas.

  6. Propaga el campo Etiquetas de destino con allow-health-check.

  7. Configura Filtro de fuente como Rangos de IPv4.

  8. Establece Rangos de IPv4 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=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Terraform

Para crear la regla de firewall, usa el recurso google_compute_firewall.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Crea la regla de firewall de verificación de estado IPv6

Asegúrate de tener una regla de entrada, aplicable a las instancias cuya carga se balancea, que permita el tráfico desde los sistemas de verificación de estado de Google Cloud (2600:2d00:1:b029::/64). En este ejemplo se utiliza la etiqueta de destino allow-health-check-ipv6 para identificar las instancias de VM a las que se aplica.

Sin esta regla de firewall, la regla implícita de denegación de entrada bloquea el tráfico IPv6 entrante a las instancias de backend.

Console

  1. En la consola de Google Cloud, ve a la página Políticas de firewall.

    Ir a Políticas de firewall

  2. Para permitir el tráfico de subred de IPv6, vuelve a hacer clic en Crear regla de firewall y, luego, ingresa la siguiente información:

    • Nombre: fw-allow-lb-access-ipv6
    • Red: NETWORK
    • Prioridad: 1000
    • Dirección del tráfico: Entrada
    • Destinos: Etiquetas de destino especificadas
    • Etiquetas de destino, ingresa allow-health-check-ipv6
    • Filtro de fuente: Rangos de IPv6
    • Rangos de IPv6 de origen: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protocols y puertos: Permitirlos todos
  3. Haz clic en Crear.

gcloud

Para permitir la comunicación con la subred, crea el regla de firewall fw-allow-lb-access-ipv6:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

Reservar 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 la consola de Google Cloud, ve a la página Direcciones IP externas.

    Ir a Direcciones IP externas

  2. Para reservar una dirección IPv4, haz clic en Reservar dirección IP externa 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 \
    --network-tier=PREMIUM \
    --global

Tome nota de la dirección IPv4 que estaba reservada:

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

Terraform

Para reservar la dirección IP, usa el recurso google_compute_global_address.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Configura el balanceador de cargas

En este ejemplo, se usa HTTPS (frontend) entre el cliente y el balanceador de cargas. Para HTTPS, necesitas uno o más recursos de certificado SSL a fin de configurar el proxy. Recomendamos que uses un certificado administrado por Google.

Incluso si usas HTTPS en el frontend, puedes usar HTTP en el backend. Google encripta de forma automática el tráfico entre Google Front Ends (GFE) y los backends que residen en las redes de VPC de Google Cloud.

Console

Inicia la configuración

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

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
  5. En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
  6. En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones externo global y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

En el campo Nombre del balanceador de cargas, ingresa algo como web-map-https o web-map-http.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. En Protocolo, configura HTTPS.
  3. Selecciona IPv4 para el tráfico IPv4. Configura el campo dirección IP como lb-ipv4-1, la que creaste antes.
  4. Configura el Puerto como 443.
  5. Haz clic en Certificado y selecciona tu certificado SSL principal.
  6. Opcional: Crea una política de SSL:
    1. En la lista SSL Policy, selecciona Crear una política.
    2. Establece el nombre de la política de SSL en my-ssl-policy.
    3. En Versión mínima de TLS, selecciona TLS 1.0.
    4. En Perfil, selecciona Moderno. Se mostrarán las Funciones habilitadas y las Funciones inhabilitadas.
    5. Haz clic en Guardar.
    Si no creaste ninguna política de SSL, se aplica una política de SSL predeterminada.
  7. Opcional: Selecciona la casilla de verificación Habilitar el redireccionamiento HTTP a HTTPS para habilitar los redireccionamientos.

    Si habilitas esta casilla de verificación, se creará un balanceador de cargas de HTTP parcial adicional que usa la misma dirección IP que tu balanceador de cargas de HTTPS y redirecciona las solicitudes HTTP entrantes al frontend de HTTPS del balanceador de cargas.

    Esta casilla de verificación solo se puede seleccionar cuando se selecciona el protocolo HTTPS y se usa una dirección IP reservada.

  8. Haz clic en Listo.

Configuración de backend

  1. Haz clic en Configuración de backend.
  2. En Crear o seleccionar servicios y buckets de backend, selecciona Servicios de backend > Crear un servicio de backend.
  3. Agrega un nombre al servicio de backend, como web-backend-service.
  4. En la lista Política de selección de direcciones IP, selecciona Preferir IPv6.
  5. En Protocolo, selecciona HTTP.
  6. En Puerto con nombre, ingresa http.
  7. En Backends > Nuevo backend > Grupo de instancias, selecciona el grupo de instancias lb-backend-example.
  8. En Números de puerto, ingresa 80.
  9. Mantén la configuración predeterminada.
  10. 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.
  11. Configura el protocolo como HTTP y, luego, haz clic en Guardar.
  12. Opcional: Configura una política de seguridad de backend predeterminada. La política de seguridad predeterminada limita el tráfico por encima de un umbral configurado por el usuario. Para obtener más información sobre las políticas de seguridad predeterminadas, consulta la Descripción general del límite de frecuencia.

    1. Para inhabilitar la política de seguridad predeterminada de Google Cloud Armor, selecciona None en el menú de lista de la política de seguridad de backend.
    2. En la sección Seguridad, selecciona Política de seguridad predeterminada.
    3. En el campo Nombre de la política, acepta el nombre que se genera automáticamente o ingresa un nombre para la política de seguridad.
    4. En el campo Recuento de solicitudes, acepta el recuento de solicitudes predeterminado o ingresa un número entero entre 1 y 10,000.
    5. En el campo Intervalo, selecciona un intervalo.
    6. En el campo Aplicar en la clave, elige uno de los siguientes valores: Todos, Dirección IP o Dirección IP X‑Forwarded‑For. Para obtener más información sobre estas opciones, consulta Identifica clientes para el límite de frecuencia.
  13. Mantén la configuración predeterminada.
  14. Haz clic en Crear.

Reglas de enrutamiento

En Reglas de enrutamiento, mantén la configuración predeterminada.

Revisa y finaliza

  1. Haz clic en Revisar y finalizar.
  2. Revisa la configuración del balanceador de cargas.
  3. Opcional: Haz clic en Código equivalente para ver la solicitud a la API de REST que se usará para crear el balanceador de cargas.
  4. Haz clic en Crear.

Espera a que se cree el balanceador de cargas.

Si creaste un balanceador de cargas de HTTPS y seleccionaste la casilla de verificación Habilitar el redireccionamiento de HTTP a HTTPS también verás un balanceador de cargas HTTP creado con un sufijo de redireccionamiento.

  1. Haz clic en el nombre del balanceador de cargas.
  2. 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 beta compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=http-basic-check \
        --global
    
  3. Agrega tu grupo de instancias como backend al servicio de backend.
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. Para HTTP, crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend predeterminado.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. Para HTTPS, crea un mapa de URL a fin de enrutar las solicitudes entrantes al servicio de backend predeterminado.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

Configura un frontend de HTTPS

Omite esta sección para los balanceadores de cargas HTTP.

  1. Para HTTPS, si aún no lo hiciste, crea el recurso de certificado SSL global, como se muestra en las siguientes secciones:
  2. En el caso de HTTPS, crea un proxy HTTPS de destino para enrutar las solicitudes a tu mapa de URL. 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 beta compute target-https-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    

    Reemplaza HTTP_KEEP_ALIVE_TIMEOUT_SEC por el valor de tiempo de espera de keepalive de HTTP del cliente de 5 a 1,200 segundos. El valor predeterminado es 610 segundos. Este campo es opcional.

  3. Para HTTPS, crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
    gcloud beta compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. Para HTTPS, crea una política de SSL global y adjúntala al proxy HTTPS (opcional).
    Si quieres crear una política de SSL global:
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    Para adjuntar la política de SSL al proxy HTTPS de destino global, haz lo siguiente:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

Configura un frontend de HTTP

Omite esta sección para los balanceadores de cargas HTTPS.

  1. En el caso de HTTP, crea un proxy HTTP de destino para enrutar las solicitudes a tu mapa de URL.
    gcloud beta compute target-http-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-http
    

    Reemplaza HTTP_KEEP_ALIVE_TIMEOUT_SEC por el valor de tiempo de espera de keepalive de HTTP del cliente de 5 a 1,200 segundos. El valor predeterminado es 610 segundos. Este campo es opcional.

  2. Para HTTP, crea una regla de reenvío global a fin de enrutar las solicitudes entrantes al proxy.
    gcloud beta compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. Para crear la verificación de estado, usa el recurso google_compute_health_check.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. Para crear el servicio de backend, usa el recurso google_compute_backend_service.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. Para crear el mapa de URL, usa el recurso google_compute_url_map.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. Para crear el proxy HTTP de destino, usa el recurso google_compute_target_http_proxy.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. Para crear la regla de reenvío, usa el recurso google_compute_global_forwarding_rule.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

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, para crear registros A para www.example.com y example.com, usa lo siguiente:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Si usas Cloud DNS como proveedor de DNS, consulta Agrega, modifica y borra registros.

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 la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a 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 la consola de Google Cloud 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. Para HTTPS, si usas un certificado administrado por Google, confirma que el estado de tu recurso de certificado sea ACTIVO. Para obtener más información, consulta Estado de los recursos de certificado SSL administrado por Google.
  5. Después de que la consola de Google Cloud muestre que las instancias de backend están en buen estado, puedes probar tu balanceador de cargas con un navegador web en https://IP_ADDRESS (o http://IP_ADDRESS). Reemplaza IP_ADDRESS por la dirección IP del balanceador de cargas.
  6. Si usaste un certificado autofirmado para las pruebas de HTTPS, el navegador mostrará una advertencia. Debes indicar de manera explícita a tu navegador que acepte un certificado autofirmado.
  7. 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.

gcloud

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

Después de unos minutos, puedes ejecutar el siguiente comando de curl para probar la configuración.

curl http://IP_ADDRESS

O

curl https://HOSTNAME

Configuración adicional

En esta sección se expande el ejemplo de configuración para proporcionar opciones de configuración alternativas y adicionales. Todas las tareas son opcionales. Puedes realizarlas en cualquier orden.

Actualiza el tiempo de espera de keepalive del HTTP del cliente

El balanceador de cargas creado en los pasos anteriores se configuró con un valor predeterminado para el tiempo de espera de keepalive de HTTP del cliente. Para actualizar el tiempo de espera de keepalive del cliente HTTP, sigue las siguientes instrucciones.

Console

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

    Ir a Balanceo de cargas

  2. Haz clic en el nombre del balanceador de cargas que deseas modificar.
  3. Haz clic en Editar.
  4. Haz clic en Configuración de frontend.
  5. Expande Funciones avanzadas. Para el tiempo de espera de keepalive de HTTP, ingresa un valor de tiempo de espera de entre 5 a 1,200 segundos.
  6. Haga clic en Actualizar.
  7. Para revisar los cambios, haz clic en Revisar y finalizar y, luego, haz clic en Actualizar.

gcloud

Para un balanceador de cargas de HTTP, actualiza el proxy HTTP de destino con el comandogcloud compute target-http-proxies update:

    gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Para un balanceador de cargas de HTTPS, actualiza el proxy HTTPS de destino con el comandogcloud compute target-https-proxies update:

    gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Reemplaza lo siguiente:

  • TARGET_HTTP_PROXY_NAME: el nombre del proxy HTTP de destino.
  • TARGET_HTTPS_PROXY_NAME: el nombre del proxy HTTPS de destino.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: El valor de tiempo de espera de keepalive de HTTP de 5 a 1200 segundos.

¿Qué sigue?

Para obtener documentación relacionada, haz lo siguiente:

Para ver videos relacionados, consulta lo siguiente: