Configurar un balanceador de carga de aplicación clásico con un backend de grupo de instancias gestionado

En esta guía de configuración se muestra cómo crear un balanceador de carga de aplicaciones clásico con un backend de grupo de instancias gestionado de Compute Engine.

Para conocer los conceptos generales, consulta la descripción general de los balanceadores de carga de aplicación externos.

Si ya usas el balanceador de carga de aplicación clásico, consulta el resumen de la migración cuando planifiques una nueva implementación con el balanceador de carga de aplicación externo global.

Topologías del balanceador de carga

En el caso de un balanceador de carga HTTPS, debes crear la configuración que se muestra en el siguiente diagrama.

Balanceador de carga de aplicación externo con un backend de grupo de instancias gestionado (MIG).
Imagen 1. Balanceador de carga de aplicación externo con un backend de grupo de instancias gestionado (MIG) (haz clic para ampliar).

En el caso de un balanceador de carga HTTP, se crea la configuración que se muestra en el siguiente diagrama.

Balanceador de carga de aplicación externo con un backend de grupo de instancias gestionado (MIG).
Imagen 2. Balanceador de carga de aplicación externo con un backend de grupo de instancias gestionado (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 definida en la regla de reenvío.
  2. En el caso de un balanceador de carga HTTPS, la regla de reenvío dirige la solicitud al proxy HTTPS de destino.

    En el caso de un balanceador de carga HTTP, la regla de reenvío dirige la solicitud al proxy HTTP de destino.

  3. El proxy de destino usa la regla del mapa de URLs para determinar que el servicio de backend único recibe todas las solicitudes.

  4. El balanceador de carga determina que el servicio de backend solo tiene un grupo de instancias y dirige la solicitud a una instancia de máquina virtual (VM) de ese grupo.

  5. La VM sirve el contenido solicitado por el usuario.

Antes de empezar

Sigue estos pasos antes de crear el balanceador de carga.

Configurar un recurso de certificado SSL

En el caso de un balanceador de carga HTTPS, cree un recurso de certificado SSL como se describe a continuación:

Te recomendamos que uses un certificado gestionado por Google.

En este ejemplo se da por hecho que ya tienes un recurso de certificado SSL llamado www-ssl-cert.

Configurar permisos

Para completar los pasos de esta guía, debes tener permiso para crear instancias de Compute Engine, reglas de cortafuegos y direcciones IP reservadas en un proyecto. Debes tener el rol de propietario o editor de un proyecto o los siguientes roles de gestión de identidades y accesos de Compute Engine.

Tarea Rol necesario
Crear instancias Administrador de instancias
Añadir y eliminar reglas de cortafuegos Administrador de seguridad
Crear componentes de balanceador de carga Administrador de red
Crear un proyecto (opcional) Project Creator

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

Configurar la red y las subredes

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

Consola

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

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. Introduce un nombre para la red.

  4. En Modo de creación de subred, elige Personalizado.

  5. En la sección Nueva subred, configure los siguientes campos:

    1. Asigna un nombre a la subred.
    2. Selecciona una región.
    3. En Tipo de pila de IP, selecciona IPv4 (pila única).
    4. Introduce un intervalo de direcciones IP. Este es el intervalo IPv4 principal de la subred.
  6. Haz clic en Listo.

  7. Para añadir una subred en otra región, haz clic en Añadir subred y repite los pasos anteriores.

  8. Haz clic en Crear.

gcloud

  1. Crea la red VPC en modo personalizado:

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. En la red, cree una subred para los backends:

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

    Haz los cambios siguientes:

    • NETWORK: nombre de la red de VPC.

    • SUBNET: nombre de la subred.

    • REGION: el nombre de la región.

Crear un grupo de instancias gestionado

Para configurar un balanceador de carga con un backend de Compute Engine, tus VMs deben estar en un grupo de instancias. En esta guía se describe cómo crear un grupo de instancias gestionado con VMs Linux que tengan Apache en ejecución y, a continuación, configurar el balanceo de carga. Un grupo de instancias gestionadas crea cada una de sus instancias gestionadas a partir de las plantillas de instancias que especifiques.

El grupo de instancias gestionado proporciona VMs que ejecutan los servidores backend de un balanceador de carga HTTP(S) externo. Para fines de demostración, los back-ends sirven sus propios nombres de host.

Antes de crear un grupo de instancias gestionado, crea una plantilla de instancia.

Consola

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

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

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancia.

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

  4. Asegúrate de que el disco de arranque esté configurado con 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.

  5. Despliega Opciones avanzadas.

  6. Despliega Redes y configura los siguientes campos:

    1. En Etiquetas de red, introduzca allow-health-check.
    2. En la sección Interfaces de red, haz clic en Editar y haz los siguientes cambios:
      • Red: NETWORK
      • Subred: SUBNET
      • Tráfico IPv4: IPv4 (single-stack)
    3. Haz clic en Listo.
  7. Despliega Gestión. En el campo Secuencia de comandos de inicio, introduce 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
    
  8. Haz clic en Crear.

gcloud

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

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPV4_ONLY \
  --tags=allow-health-check \
  --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 instancia, usa el google_compute_instance_template resource.

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 gestionado y selecciona la plantilla de instancia.

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. A la izquierda, elige Nuevo grupo de instancias gestionado (sin reconocimiento del estado).

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

  5. En Ubicación, selecciona Una sola zona.

  6. En Región, selecciona la que prefieras.

  7. En Zona, selecciona una zona.

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

  9. En Modo de autoescalado, selecciona Activado: añade y quita instancias del grupo.

    Define Número mínimo de instancias como 2 y Número máximo de instancias como 2 o más.

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

gcloud

  1. Crea el grupo de instancias gestionado a partir 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 gestionado, usa el google_compute_instance_group_manager recurso.

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
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Añadir un puerto con nombre al grupo de instancias

En tu grupo de instancias, define un servicio HTTP y asigna un nombre de puerto al puerto correspondiente. El servicio de balanceo de carga reenvía el tráfico al puerto con nombre. Para obtener más información, consulta Puertos con nombre.

Consola

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

    Ir a Grupos de instancias

  2. Haz clic en lb-backend-example.

  3. En la página Resumen del grupo de instancias, haz clic en Editar.

  4. En la sección Asignación de puertos, haz clic en Añadir puerto.

    1. En el nombre del puerto, introduce http. En el número de puerto, introduce 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 el ejemplo de grupo de instancias gestionado.

Configurar una regla de cortafuegos

En este ejemplo, se crea la regla de cortafuegos fw-allow-health-check. Se trata de una regla de entrada que permite el tráfico de los sistemas de comprobación del 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 VMs.

Consola

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

    Ir a Políticas de cortafuegos

  2. Haz clic en Crear regla de cortafuegos para crearla.

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

  4. Selecciona una red.

  5. En Objetivos, seleccione Etiquetas de destino especificadas.

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

  7. En Filtro de origen, elija Intervalos de IPv4.

  8. Asigna los valores 130.211.0.0/22 y 35.191.0.0/16 a Intervalos de IPv4 de origen.

  9. En Protocolos y puertos, selecciona Protocolos y puertos especificados.

  10. Marca la casilla TCP y, a continuación, escribe 80 en 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 cortafuegos, 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"
  }
}

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Reservar una dirección IP externa

Ahora que tus instancias están en funcionamiento, configura una dirección IP externa estática global que tus clientes usan para llegar a tu balanceador de carga.

Consola

  1. En la Google Cloud consola, 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 estática externa.

  3. En Nombre, escribe lb-ipv4-1.

  4. Configure Nivel de servicio de red como Premium.

  5. Configura Versión de IP como IPv4.

  6. En Tipo, seleccione Global.

  7. Haz clic en Reservar.

gcloud

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

Anota la dirección IPv4 que se ha reservado:

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

Terraform

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

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

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Configurar el balanceador de carga

En este ejemplo, se usa HTTPS (frontend) entre el cliente y el balanceador de carga. Para HTTPS, necesitas uno o varios recursos de certificado SSL para configurar el proxy. Te recomendamos que uses un certificado gestionado por Google.

Aunque uses HTTPS en el frontend, puedes usar HTTP en el backend. Google encripta automáticamente el tráfico entre los Google Front Ends (GFEs) y tus backends que se encuentren en las Google Cloud redes de VPC.

Consola

Selecciona el tipo de balanceador de carga

  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. En Tipo de balanceador de carga, selecciona Balanceador de carga de aplicación (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Público o interno, selecciona Público (externo) y haz clic en Siguiente.
  5. En Implementación global o en una sola región, selecciona La mejor opción para cargas de trabajo globales y haz clic en Siguiente.
  6. En Generación del balanceador de carga, selecciona Balanceador de carga de aplicación clásico y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

En Nombre del balanceador de carga, introduce un nombre como web-map-https o web-map-http.

Configuración del frontend

  1. Haz clic en Configuración de frontend.
  2. En Protocolo, selecciona HTTPS.
  3. Selecciona IPv4 para el tráfico IPv4. En Dirección IP, define el valor lb-ipv4-1, que has creado anteriormente.
  4. Asigna el valor 443 a Puerto.
  5. Haz clic en Certificado y selecciona tu certificado SSL principal.
  6. Opcional: Crea una política de SSL:
    1. En la lista Política de SSL, selecciona Crear una política.
    2. Asigna el nombre my-ssl-policy a la política de SSL.
    3. En Versión mínima de TLS, selecciona TLS 1.0.
    4. En Perfil, selecciona Moderno. Se muestran las secciones Funciones habilitadas y Funciones inhabilitadas.
    5. Haz clic en Guardar.
    Si no has creado ninguna política de SSL, se aplicará una política de SSL predeterminada.
  7. Opcional: Marca la casilla Habilitar redirección de HTTP a HTTPS para habilitar las redirecciones.

    Si marcas esta casilla, se creará un balanceador de carga HTTP parcial adicional que usará la misma dirección IP que tu balanceador de carga HTTPS y redirigirá las solicitudes HTTP entrantes al frontend HTTPS de tu balanceador de carga.

    Esta casilla solo se puede marcar si 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 Servicios y segmentos de backend, selecciona Crear un servicio de backend.
  3. Añade un nombre para tu servicio backend, como web-backend-service.
  4. Ve a la sección Seguridad y, a continuación, selecciona Habilitar IAP para proteger el acceso a tus aplicaciones.

    Cloud CDN y IAP no son compatibles. Si tienes Cloud CDN habilitado y seleccionas habilitar IAP, Cloud CDN se inhabilita automáticamente.

  5. 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 el artículo Descripción general de la limitación de frecuencia.

    1. Para inhabilitar la política de seguridad predeterminada de Cloud Armor, selecciona None en la lista Política de seguridad de backend de Cloud Armor.
    2. Para configurar la política de seguridad predeterminada de Cloud Armor, selecciona Política de seguridad predeterminada en la lista Política de seguridad de backend de Cloud Armor.
    3. En el campo Nombre de la política, acepta el nombre generado automáticamente o introduce un nombre para tu política de seguridad.
    4. En el campo Número de solicitudes, acepta el número de solicitudes predeterminado o introduce un número entero entre 1 y 10,000.
    5. En el campo Intervalo, selecciona un intervalo.
    6. En el campo Enforce on key (Aplicar en clave), elige uno de los siguientes valores: All (Todo), IP address (Dirección IP) o X-Forwarded-For IP address (Dirección IP X-Forwarded-For). Para obtener más información sobre estas opciones, consulta Identificar clientes para limitar la frecuencia.
  6. Mantén el resto de los ajustes predeterminados.
  7. Haz clic en Crear.

Reglas de host y ruta

En Reglas de host y ruta, mantén la configuración predeterminada.

Revisar y finalizar

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

Espera a que se cree el balanceador de carga.

Si has creado un balanceador de carga HTTPS y has marcado la casilla Habilitar redirección de HTTP a HTTPS, también verás un balanceador de carga HTTP creado con el sufijo -redirect.

  1. Haz clic en el nombre del balanceador de carga.
  2. En la pantalla Detalles del balanceador de carga, anota la IP:Puerto de tu balanceador de carga.

gcloud

  1. Crea una comprobación del 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 \
        --load-balancing-scheme=EXTERNAL \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --global
    
  3. Añade 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. En el caso de HTTP, crea un mapa de URLs para enrutar las solicitudes entrantes al servicio backend predeterminado.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. En el caso de HTTPS, crea un mapa de URLs para enrutar las solicitudes entrantes al servicio de backend predeterminado.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

Configurar un frontend HTTPS

Omite esta sección si usas balanceadores de carga HTTP.

  1. En el caso de HTTPS, si aún no lo has hecho, crea el recurso de certificado SSL global, tal como se muestra en las siguientes secciones:
  2. En el caso de HTTPS, crea un proxy HTTPS de destino para dirigir las solicitudes a tu mapa de URLs. El proxy es la parte del balanceador de carga que contiene el certificado SSL de un balanceador de carga HTTPS, por lo que también debes cargar el certificado en este paso.

    gcloud compute target-https-proxies create https-lb-proxy \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    
  3. En el caso de HTTPS, cree una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
    gcloud compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. Opcional: En el caso de HTTPS, crea una política de SSL global y adjúntala al proxy HTTPS.
    Para crear una política de SSL global, sigue estos pasos:
    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, sigue estos pasos:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

Configurar un frontend HTTP

Omite esta sección si usas balanceadores de carga HTTPS.

  1. En el caso de HTTP, crea un proxy HTTP de destino para enrutar las solicitudes a tu mapa de URLs.
    gcloud compute target-http-proxies create http-lb-proxy \
      --url-map=web-map-http
    
  2. En el caso de HTTP, crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
    gcloud compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. Para crear la comprobación del 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.

    En este ejemplo se usa load_balancing_scheme="EXTERNAL_MANAGED", que configura un balanceador de carga de aplicación externo global con gestión de tráfico avanzada. Para crear un balanceador de carga de aplicación clásico, asegúrate de cambiar load_balancing_scheme a EXTERNAL antes de ejecutar la secuencia de comandos.

    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 URLs, 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.

    En este ejemplo se usa load_balancing_scheme="EXTERNAL_MANAGED", que configura un balanceador de carga de aplicación externo global con gestión de tráfico avanzada. Para crear un balanceador de carga de aplicación clásico, asegúrate de cambiar load_balancing_scheme a EXTERNAL antes de ejecutar la secuencia de comandos.

    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
    }

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Conectar tu dominio a tu balanceador de carga

Una vez creado el balanceador de carga, anota la dirección IP asociada a él. Por ejemplo, 30.90.80.100. Para dirigir tu dominio a tu balanceador de carga, crea un registro A con tu servicio de registro de dominios. Si has añadido varios dominios a tu certificado SSL, debes añadir un registro A para cada uno de ellos, todos apuntando a la dirección IP del balanceador de carga. Por ejemplo, para crear registros A de 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 el artículo sobre cómo añadir, modificar y eliminar registros.

Tráfico de prueba enviado a tus instancias

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

Consola

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

    Ir a Balanceo de carga

  2. Haz clic en el balanceador de carga que acabas de crear.
  3. En la sección Backend, comprueba que las VMs estén en buen estado. La columna Estado debe estar rellenada, lo que indica que ambas máquinas virtuales están en buen estado (2/2). Si no es así, prueba a volver a cargar la página. La consola de Google Cloud puede tardar unos instantes en indicar que las VMs están en buen estado. Si los back-ends no parecen estar en buen estado después de unos minutos, revisa la configuración del cortafuegos y la etiqueta de red asignada a tus VMs de backend.

  4. En el caso de HTTPS, si usas un certificado gestionado por Google, comprueba que el estado del recurso de certificado sea ACTIVE. Para obtener más información, consulta Estado del recurso de certificado SSL gestionado por Google.
  5. Una vez que la consola muestre que las instancias de backend están en buen estado, puedes probar el balanceador de carga con un navegador web. Para ello, ve a https://IP_ADDRESS (o http://IP_ADDRESS). Sustituye IP_ADDRESS por la dirección IP del balanceador de carga. Google Cloud
  6. Si has usado un certificado autofirmado para probar HTTPS, tu navegador mostrará una advertencia. Debes indicar explícitamente a tu navegador que acepte un certificado autofirmado.
  7. Tu navegador debería renderizar una página con contenido que muestre el nombre de la instancia que ha servido la página, junto con su zona (por ejemplo, Page served from: lb-backend-example-xxxx). Si tu navegador no renderiza esta página, revisa los ajustes de configuración de esta guía.

gcloud

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

Transcurridos unos minutos, puedes probar la configuración ejecutando el siguiente comando curl.

curl http://IP_ADDRESS

-O-

curl https://HOSTNAME

Siguientes pasos