Configura un balanceador de cargas de proxy SSL externo con backends de grupo de instancias de VM

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

En este documento se proporcionan instrucciones para configurar el balanceo de cargas del proxy SSL externo. Antes de que comiences, lee la Descripción general del balanceo de cargas del proxy SSL externo para obtener información sobre su funcionamiento.

Descripción general de la configuración

En este ejemplo se demuestra cómo configurar el balanceo de cargas del proxy SLL global externo en un servicio simple que existe en dos regiones: us-central1 y us-east1. Deberás configurar lo que se describe a continuación:

  1. Cuatro instancias repartidas en dos regiones
  2. Grupos de instancias para mantener las instancias
  3. Componentes del backend, que incluyen lo que se describe a continuación:
    • Verificación de estado: supervisa el estado de la instancia.
    • Servicio de backend: supervisa los grupos de instancias y evita que excedan el uso configurado.
    • Backends: mantienen los grupos de instancias.
  4. Componentes frontend, que incluyen lo que se describe a continuación:
    • Incluyen un recurso de certificado SSL. Puedes usar un certificado autoadministrado, en el que proporcionas tu certificado SSL, o uno administrado por Google, en el que Google emite un certificado válido para todos tus dominios. Para obtener más información, consulta los Tipos de certificados SSL.
    • El propio proxy SSL con su certificado SSL
    • Una dirección IPv4 estática externa y una regla de reenvío que envíe el tráfico del usuario al proxy
    • Una dirección IPv6 estática externa y una regla de reenvío que envíe el tráfico del usuario al proxy
  5. Una regla de firewall que permita el tráfico desde el balanceador de cargas y el verificador de estado a las instancias.
  6. De manera opcional, una política de SSL para controlar las características de SSL que tu balanceador de cargas de proxy SSL negocia con los clientes.

Luego, probarás la configuración.

Permisos

Para seguir esta guía, debes poder crear instancias y modificar una red en un proyecto. Debes ser propietario o editor de un proyecto o tener todas las siguientes funciones de IAM de Compute Engine:

Tarea Función requerida
Crear redes, subredes y componentes del balanceador de cargas Administrador de redes
Agrega y quita reglas de firewall Administrador de seguridad
Crea instancias Administrador de instancias de Compute

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

Configura instancias y grupos de instancias

En esta sección, se muestra cómo crear instancias y grupos de instancias y, luego, agregarlas a los grupos de instancias. Por lo general, un sistema de producción usaría grupos de instancias administrados basados en plantillas de instancias, pero esta configuración es más rápida para las pruebas iniciales.

Crea instancias

Para la prueba instala Apache en cuatro instancias, dos en cada grupo de instancias. Por lo general, no usarías el balanceo de cargas del proxy SSL externo para el tráfico HTTP, pero Apache se usa con frecuencia y es fácil de configurar si deseas realizar pruebas.

Crea estas instancias con la etiqueta ssl-lb, que la regla de firewall usará más adelante.

Console

Crea instancias

  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. Establece el Nombre como ig-us-central1-1.

  4. Establece la Zona en us-central1-b.

  5. Haz clic en Administración, seguridad, discos, redes, usuario único para mostrar la configuración avanzada.

  6. En Administración propaga el campo Etiquetas con ssl-lb.

  7. Configura la Secuencia de comandos de inicio de la siguiente manera:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  8. Deja los valores predeterminados para el resto de los campos.

  9. Haga clic en Crear.

  10. Crea ig-us-central1-2 con la misma configuración, pero con la secuencia de comandos de inicio establecida de la siguiente manera:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. Crea ig-us-east1-1 con la misma configuración, pero con la zona establecida como us-east1-b y la secuencia de comandos de inicio de la siguiente manera:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. Crea ig-us-east1-2 con la misma configuración, pero con la zona establecida como us-east1-b y la secuencia de comandos de inicio de la siguiente manera:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Crea ig-us-central1-1 en la zona us-central1-b.

    gcloud compute instances create ig-us-central1-1 \
       --image-family debian-10 \
       --image-project debian-cloud \
       --tags ssl-lb \
       --zone us-central1-b \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo a2ensite default-ssl
         sudo a2enmod ssl
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  2. Crea ig-us-central1-2 en la zona us-central1-b.

    gcloud compute instances create ig-us-central1-2 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-central1-b \
       --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  3. Crea ig-us-east1-1 en la zona us-east1-b.

    gcloud compute instances create ig-us-east1-1 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    
  4. Crea ig-us-east1-2 en la zona us-east1-b.

    gcloud compute instances create ig-us-east1-2 \
      --image-family=debian-10 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    

Crea un grupo de instancias para cada zona y agrega las instancias

Console

  1. Ve a la página Grupos de instancias en Google Cloud Console.

    Ir a la página Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. Establece el campo Nombre como us-ig1.

  4. En Zona establece us-central1-b.

  5. En Asignación de puertos, haz clic en Agregar puerto. Un balanceador de cargas envía tráfico a un grupo de instancias a través de un puerto con nombre. Crea un puerto con nombre para asignar el tráfico entrante a un número de puerto específico.

    1. Ingresa un Nombre de puerto ssl-lb y Números de puerto de 443.
  6. En Definición de instancia, haz clic en Seleccionar instancias existentes.

  7. En Instancias de VM, selecciona ig-us-central1-1 y ig-us-central1-2.

  8. Deja el resto de la configuración como está.

  9. Haz clic en Crear.

  10. Repite los pasos, pero configura la siguiente información:

    • Nombre: us-ig2
    • Zona: us-east1-b
    • Nombre del puerto de ssl-lb y Números de puerto de 443
    • Instancias: ig-us-east1-1 e ig-us-east1-2.
  11. Verifica si ahora tienes dos grupos de instancias, cada uno con dos instancias.

gcloud

  1. Crea el grupo de instancias us-ig1.

    gcloud compute instance-groups unmanaged create us-ig1 --zone us-central1-b
    
  2. Configura un puerto con nombre para el grupo de instancias.

    gcloud compute instance-groups set-named-ports us-ig1 \
        --named-ports=ssl-lb:443 \
        --zone=us-central1-b
    
  3. Agrega ig-us-central1-1 y ig-us-central1-2 a us-ig1.

    gcloud compute instance-groups unmanaged add-instances us-ig1 \
        --instances=ig-us-central1-1,ig-us-central1-2 \
        --zone=us-central1-b
    
  4. Crea el grupo de instancias us-ig2.

    gcloud compute instance-groups unmanaged create us-ig2 --zone us-east1-b
    
  5. Configura un puerto con nombre para el grupo de instancias.

    gcloud compute instance-groups set-named-ports us-ig2 \
        --named-ports=ssl-lb:443 \
        --zone=us-east1-b
    
  6. Agrega ig-us-east1-1 y ig-us-east1-2 a us-ig2.

    gcloud compute instance-groups unmanaged add-instances us-ig2 \
         --instances=ig-us-east1-1,ig-us-east1-2 \
         --zone=us-east1-b
    

Ahora tienes un grupo de instancias en cada una de las dos regiones, cada una con dos instancias.

Crea una regla de firewall para el balanceador de cargas SSL

Configura el firewall para permitir el tráfico del balanceador de cargas y el verificador de estado a las instancias.

Console

  1. Ve a la página Firewall en Google Cloud Console.
    Ir a la página Firewall
  2. Haga clic en Crear regla de firewall.
  3. En el campo Nombre, ingresa allow-ssl-lb-and-health.
  4. En Red, selecciona default.
  5. En Destinos selecciona Etiquetas de destino especificadas.
  6. Configura las Etiquetas de destino como ssl-lb.
  7. Configura Filtro de fuente como Rangos de IPv4.
  8. Configura Rangos de IPv4 de origen como 130.211.0.0/22,35.191.0.0/16.
  9. En Protocolos y puertos, establece Protocolos y puertos especificados como tcp:443.
  10. Haga clic en Crear.

gcloud

gcloud compute firewall-rules create allow-ssl-lb-and-health \
   --source-ranges=130.211.0.0/22,35.191.0.0/16 \
   --target-tags=ssl-lb \
   --allow=tcp:443

Si usas un certificado administrado por Google, confirma que el estado de tu recurso de certificado sea ACTIVE. Para obtener más información, consulta Estado de los recursos de certificado SSL administrado por Google.

gcloud compute ssl-certificates list

Configura el balanceador de cargas

Console

  1. Ve a la página Balanceo de cargas en Google Cloud Console.

    Ir a la página Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.

  3. En Balanceo de cargas de TCP, haz clic en Iniciar configuración.

  4. En Orientado a Internet o solo interno, selecciona De Internet a mis VM.

  5. En Varias regiones o una sola región, selecciona Varias regiones (o no estoy seguro todavía).

Configuración de backend

  1. Haga clic en Configuración de backend.
  2. Establece el Nombre my-ssl-lb para el balanceador de cargas.
  3. Configura el Protocolo en SSL.
  4. En Puerto con nombre, ingresa ssl-lb.
  5. Acepta el valor predeterminado para eltiempo de espera.
  6. Deja el Tipo de backend establecido en Grupos de instancias.
  7. En Nuevo backend, selecciona el grupo de instancias us-ig1.
  8. Establece los Números de puerto en 443.
  9. Deja el resto de la configuración como está.
  10. En Nuevo backend, selecciona el grupo de instancias us-ig2.
  11. Establece los Números de puerto en 443.
  12. Deja el resto de la configuración como está.
  13. Haz clic en Listo.
  14. En Verificación de estado, selecciona Crear verificación de estado.
    1. Configura el Nombre de la verificación de estado como my-ssl-health-check.
    2. Establece el Protocolo en SSL.
    3. Deja el resto de la configuración igual.
    4. Haga clic en Guardar y continuar
  15. 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.
  16. Verifica que haya una marca de verificación verde junto a Configuración de backend en la consola de Google Cloud. De no ser así, vuelve a revisar que hayas completado todos los pasos anteriores.

Configuración de frontend

  1. Haz clic en Configuración de frontend.
  2. En IP y puerto de frontend nuevos, ingresa un Nombre de my-ssl-lb-forwarding-rule.
  3. Configura Protocolo como SSL.
  4. En Dirección IP selecciona Crear dirección IP.
    1. Ingresa un Nombre de ssl-lb-static-ipv4.
    2. Haz clic en Reservar.
  5. En Certificado selecciona Crear un certificado nuevo.
    1. Ingresa un Nombre de my-ssl-cert.
    2. Si eliges Subir certificado, sigue estos pasos:
      1. Pega el certificado o haz clic en Subir para navegar hasta el archivo del certificado.
      2. Pega la clave privada o haz clic en Subir para navegar hasta el archivo de claves privadas.
    3. Si seleccionas Crear certificado administrado por Google, ingresa un Dominio.
      1. Para ingresar dominios adicionales, haz clic en Agregar dominio.
      2. Haz clic en Crear.
    4. Para agregar otros recursos de certificado, además del recurso de certificado SSL principal, haz clic en Certificados adicionales. Luego, selecciona otro certificado en el menú Certificados o haz clic en Crear un certificado nuevo y sigue las instrucciones anteriores.
  6. (Opcional) Si quieres crear una política de SSL, sigue estos pasos:
    1. En Política de SSL, selecciona Crear una política.
    2. En Nombre ingresa 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 Crear.
  7. (Opcional) Si lo deseas, activa Protocolo de proxy.
  8. Haz clic en Listo.
  9. Haz clic en Agregar IP y puerto de frontend.
  10. Ingresa un Nombre de my-ssl-lb-ipv6-forwarding-rule.
  11. Establece la Versión IP en IPv6.
  12. En Dirección IP selecciona Crear dirección IP.
    1. Ingresa un Nombre de ssl-lb-static-ipv6.
    2. Haz clic en Reservar.
  13. En Certificado selecciona my-ssl-cert.
    1. Para agregar otros recursos de certificado, además del recurso de certificado SSL principal, selecciona un certificado de la lista Certificados o haz clic en Crear un certificado nuevo.
  14. (Opcional) Usa una política de SSL o activa el protocolo PROXY si lo deseas.
  15. Haga clic en Listo.
  16. Verifica que haya una marca de verificación verde junto a Configuración de frontend en Google Cloud Console. De no ser así, vuelve a revisar que hayas completado todos los pasos anteriores.

Revisa y finaliza

  1. Haz clic en Revisar y finalizar.
  2. Vuelve a verificar la configuración.
  3. Haga clic en Crear.

gcloud

  1. Crea una verificación de estado.

    gcloud compute health-checks create ssl my-ssl-health-check --port=443
    
  2. Crea un servicio de backend.

    gcloud compute backend-services create my-ssl-lb \
      --global-health-checks \
      --protocol=SSL \
      --port-name=ssl-lb \
      --health-checks=my-ssl-health-check \
      --timeout=5m \
      --global
    

    También puedes configurar la comunicación sin encriptar del balanceador de cargas a las instancias mediante --protocol=TCP.

  3. Agrega grupos de instancias a tu servicio de backend.

    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig1 \
      --instance-group-zone=us-central1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig2 \
      --instance-group-zone=us-east1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
  4. Configura tu recurso de certificado SSL.

    Si usas certificados autoadministrados, debes tener, al menos, un certificado SSL para subir. Si no lo tienes, consulta Certificados SSL. Cuando usas varios certificados SSL, debes crearlos uno por uno.

    Si usas certificados SSL autoadministrados y no tienes una clave privada ni un certificado firmado, puedes crear y usar un certificado autofirmado a fin de realizar pruebas.

    Si deseas crear un recurso de certificado SSL autoadministrado, haz lo siguiente:

    gcloud compute ssl-certificates create my-ssl-cert \
      --certificate=[CRT_FILE_PATH] \
      --private-key=[KEY_FILE_PATH]
    

    Si deseas crear un recurso de certificado SSL administrado por Google, haz lo siguiente:

      gcloud beta compute ssl-certificates create www-ssl-cert \
        --domains=[DOMAIN_1],[DOMAIN_2]
    
  5. Configura un proxy SSL de destino.

    El balanceo de cargas del proxy SSL externo admite la creación de un proxy SSL de destino que tenga de uno a quince certificados SSL. Antes de que ejecutes este comando, debes crear un recurso de certificado SSL para cada certificado.

    Si quieres activar el encabezado de proxy, configúralo como PROXY_V1 en lugar de none. De manera opcional, puedes adjuntar una política de SSL al proxy de destino. Primero, crea la política.

    gcloud compute ssl-policies create my-ssl-policy \
      --profile=MODERN \
      --min-tls-version=1.0
    

    Luego, adjunta la política al proxy de destino.

    gcloud compute target-ssl-proxies create my-ssl-lb-target-proxy \
      --backend-service=my-ssl-lb \
      --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \
      --ssl-policy=my-ssl-policy \
      --proxy-header=NONE
    
  6. Reserva direcciones IP estáticas globales

    Tus clientes usan estas direcciones IP para acceder a tu servicio de balanceo de cargas.

    gcloud compute addresses create ssl-lb-static-ipv4 \
          --ip-version=IPV4 \
          --global
    
    gcloud compute addresses create ssl-lb-static-ipv6 \
          --ip-version=IPV6 \
          --global
    
  7. Configura reglas de reenvío globales

    Crea reglas de reenvío globales asociadas al proxy de destino. Reemplaza LB_STATIC_IP y LB_STATIC_IPV6 por las direcciones IP que generaste en Reserva direcciones IP estáticas globales.

    gcloud compute forwarding-rules create my-ssl-lb-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IP \
      --ports=443
    
    gcloud compute forwarding-rules create my-ssl-lb-ipv6-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IPV6 \
      --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

En tu navegador web, conéctate a tu dirección IP estática mediante HTTPS. En esta configuración de prueba, las instancias usan certificados autofirmados. Por lo tanto, verás una advertencia en tu navegador la primera vez que accedas a una página. Haz clic en la advertencia para ver la página real. Reemplaza [IP_ADDRESS] por la dirección IPv4 o IPv6 que creaste antes.

https://[IP_ADDRESS]

Deberías ver uno de los hosts de la región más cercana a ti. Vuelve a cargar la página hasta que veas la otra instancia de esa región. Para ver las instancias de la otra región, detén las instancias en la región más cercana.

Como alternativa, puedes usar curl desde la línea de comandos de tu máquina local. Si usas un certificado autofirmado en el proxy SSL, también debes especificar -k. La opción curl -k permite que curl funcione incluso si tienes un certificado autofirmado o no tienes ninguno. Si tienes un certificado normal, puedes quitar ese parámetro. Solo debes usar el parámetro -k para probar tu propio sitio. En circunstancias normales, un certificado válido es una medida de seguridad importante y no se deben ignorar sus advertencias.

Reemplaza [IP_ADDRESS] por la dirección IPv4 o IPv6 que creaste antes.

curl -k https://[IP_ADDRESS]

Si no puedes acceder al balanceador de cargas, prueba los pasos que se describen en Soluciona problemas de configuración.

Opciones de configuración adicionales

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.

Establece el protocolo PROXY para retener la información de conexión del cliente

El balanceo de cargas de Google Cloud con proxy SSL finaliza las conexiones SSL del cliente y crea conexiones nuevas a las instancias. Por lo tanto, la IP de cliente original y la información del puerto no se conservan de manera predeterminada.

Para conservar y enviar la información de conexión original a tus instancias, habilita el protocolo PROXY (versión 1) en el frontend del balanceador de cargas. Como parte de la solicitud, este protocolo le envía a la instancia un encabezado adicional que contiene la dirección IP de origen, la dirección IP de destino y los números de puerto.

También puedes configurar el protocolo PROXY para las verificaciones de estado de TCP y SSL.

Asegúrate de que las instancias de backend del balanceador de cargas del proxy SSL externo ejecuten servidores HTTP(S) que admitan encabezados del protocolo PROXY. Si los servidores HTTP(S) no están configurados para admitir encabezados del protocolo PROXY, las instancias de backend muestran respuestas vacías. Por ejemplo, el protocolo PROXY no funciona con el software del servidor HTTP de Apache. Puedes usar diferentes softwares de servidor web, como Nginx.

Si configuras el protocolo PROXY para el tráfico de los usuarios, también debes configurarlo para las verificaciones de estado. Si verificas el estado y entregas contenido en el mismo puerto, configura el --proxy-header de la verificación de estado para que coincida con la configuración del balanceador de cargas.

Por lo general, el encabezado del protocolo PROXY será una sola línea de texto legible para el usuario con el siguiente formato:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

En este ejemplo la dirección IP de cliente es 192.0.2.1, la dirección IP del balanceo de cargas es 198.51.100.1, el puerto del cliente es 15221 y el puerto de destino es 443:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 443\r\n

Cuando no se sabe la dirección IP de cliente, el balanceador de cargas genera un encabezado de protocolo PROXY con el formato siguiente:

PROXY UNKNOWN\r\n

Actualiza el encabezado del protocolo PROXY para un proxy de destino existente

En el ejemplo de configuración del balanceador de cargas de esta página, se muestra cómo habilitar el encabezado del protocolo PROXY mientras se crea el balanceador de cargas del proxy SSL externo. Sigue estos pasos a fin de cambiar el encabezado del protocolo PROXY para un proxy SSL de destino existente.

Console

  1. Ve a la página Balanceo de cargas en Google Cloud Console.

    Ir a la página Balanceo de cargas

  2. Haz clic en Editar para tu balanceador de cargas.

  3. Haz clic en Configuración de frontend.

  4. Cambia el valor del campo del Protocolo Proxy.

  5. Haz clic en Actualizar para guardar los cambios.

gcloud

gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \
    --proxy-header=[NONE | PROXY_V1]

Configura la afinidad de sesión

En estos procedimientos se muestra cómo actualizar un servicio de backend para el balanceador de cargas del proxy SSL de ejemplo a fin de que el servicio de backend use la afinidad de IP de cliente.

Cuando la afinidad de IP de cliente está habilitada, el balanceador de cargas dirige las solicitudes de un cliente en particular a la misma VM de backend según el hash que se generó en la dirección IP del cliente y la dirección IP del balanceador de cargas (la dirección IP externa de una regla de reenvío externa).

Console

Para habilitar la afinidad de sesión de IP de cliente, sigue estos pasos:

  1. Ve a la página Balanceo de cargas en Google Cloud Console.

    Ir a la página Balanceo de cargas

  2. Haz clic en Backends.

  3. Haz clic en my-ssl-lb (nombre del servicio de backend que creaste para este ejemplo) y, luego, en Editar.

  4. En la página Detalles del servicio de backend, haz clic en Configuración avanzada.

  5. En Afinidad de sesión, selecciona IP de cliente en el menú.

  6. Haz clic en Actualizar.

gcloud

Usa el siguiente comando de gcloud para actualizar el servicio de backend my-ssl-lb y especificar la afinidad de sesión de IP de cliente:

gcloud compute backend-services update my-ssl-lb \
    --global \
    --session-affinity=CLIENT_IP

API

Para establecer la afinidad de sesión de IP de cliente, realiza una solicitud PATCH al método backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
  "sessionAffinity": "CLIENT_IP"
}

Habilita el vaciado de conexiones

Puedes habilitar el desvío de conexiones en servicios de backend a fin de garantizar una interrupción mínima para tus usuarios cuando se finaliza una instancia que entrega tráfico, se quita de forma manual o la quita un escalador automático. Para obtener más información sobre el vaciado de conexiones, consulta la documentación Habilita el vaciado de conexiones.

Soluciona problemas de configuración

Si las páginas no se cargan cuando intentas acceder a la dirección IP del balanceador de cargas, prueba los siguientes pasos para solucionar problemas de configuración.

Verifica el estado de las instancias

Verifica que las instancias tengan el estado HEALTHY.

  gcloud compute backend-services get-health my-ssl-lb
  

Verifica que la regla de firewall permita el tráfico

  • El verificador de estado y el balanceador de cargas requieren estas direcciones IP para permitir el tráfico: 130.211.0.0/2235.191.0.0/16.
  • Si usas SSL entre el balanceador de cargas y las instancias, debes usar las verificaciones de estado de SSL. Asegúrate de que la regla de firewall permita tcp:443 desde los rangos de direcciones IP de origen 130.211.0.0/22 y 35.191.0.0/16.
  • Si usas TCP entre el balanceador de cargas y las instancias, usa las verificaciones de estado de TCP. Asegúrate de que la regla de firewall permita tcp:80 desde los rangos de IP de origen 130.211.0.0/22 y 35.191.0.0/16.
  • Si usas etiquetas de instancia, asegúrate de que la etiqueta aparezca en TARGET_TAGS en la regla de firewall y de que todas tus instancias tengan esa etiqueta. En este ejemplo las instancias tienen la etiqueta ssl-lb.
gcloud compute firewall-rules list
NAME                      NETWORK SRC_RANGES                  RULES                        SRC_TAGS TARGET_TAGS
allow-ssl-lb-and-health  default 130.211.0.0/22,35.191.0.0/16 tcp:443                      ssl-lb

Intenta acceder a instancias individuales

De manera temporal, configura una regla de firewall que te permita acceder a las instancias de forma individual y, luego, intenta cargar una página desde una instancia en particular.

  1. Abre el firewall para permitir el tráfico de cualquier origen a las instancias etiquetadas. A fin de lograrlo, crea un filtro de origen que establezca el rango la IP de origen en 0.0.0.0/0 para el tráfico HTTPS en instancias con la etiqueta ssl-lb.

    gcloud compute firewall-rules create allow-ssl-0-0-0-0 \
        --source-ranges=0.0.0.0/0 \
        --target-tags=ssl-lb \
        --allow=tcp:443
    
  2. Busca la dirección EXTERNAL_IP de una de las instancias.

    gcloud compute instances list
    
    NAME             ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
    ig-us-central1-1 us-central1-b  n1-standard-1             10.240.0.8  EXTERNAL_IP RUNNING
    ig-us-central1-2 us-central1-b  n1-standard-1             10.240.0.11 EXTERNAL_IP RUNNING
    ig-us-east1-1    us-east1-b     n1-standard-1             10.240.0.12 EXTERNAL_IP RUNNING
    ig-us-east1-2    us-east1-b     n1-standard-1             10.240.0.13 EXTERNAL_IP RUNNING
  3. Accede a una o más instancias directamente desde el navegador.

    https://<var>EXTERNAL_IP</var>
    
  4. Si no puedes acceder a tus instancias con este método, revisa si el software funciona de manera correcta. Si es así, asegúrate de que la regla de firewall del balanceador de cargas sea correcta.

    gcloud compute firewall-rules describe allow-ssl-lb-and-health
    
    allowed:
      IPProtocol: tcp
      ports:
      '443'
    creationTimestamp: '2016-02-20T22:27:15.094-08:00'
    description: ''
    id: '5304629236729177644'
    kind: compute#firewall
    name: allow-130-211-0-0-22-ssl
    network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
    selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-lb-and-health
    sourceRanges:
      130.211.0.0/22,35.191.0.0/16
    targetTags:
      ssl-lb
  5. Cuando estés seguro de que las instancias funcionan, quita la regla de firewall que permite el acceso “desde cualquier lugar”.

    gcloud compute firewall-rules delete allow-ssl-0-0-0-0
    

¿Qué sigue?