Configura el balanceo de cargas de HTTP(S) interno con una VPC compartida

En este documento, se proporcionan instrucciones para configurar el balanceo de cargas de HTTP(S) interno en una red de VPC compartida.

Si no deseas usar una red de VPC compartida, consulta Configura el balanceo de cargas de HTTP(S) interno.

Antes de comenzar

  1. Lee la Descripción general de la VPC compartida.
  2. Lee la Descripción general del balanceo de cargas de HTTP(S) interno, incluidas las secciones Arquitectura de VPC compartida y Limitaciones.

Permisos

La configuración del balanceador de cargas de HTTP(S) interno para la VPC compartida requiere cierta configuración y aprovisionamiento por parte de un administrador. Una vez hecho esto, el propietario de un proyecto de servicio puede implementar el balanceador de cargas y los backends mediante los recursos aprovisionados por el administrador.

En esta sección, se resumen los permisos necesarios para seguir esta guía a fin de configurar un balanceador de cargas de HTTP(S) interno en una red de VPC compartida.

Configura la VPC compartida

Se requieren las siguientes funciones para llevar a cabo estas acciones:

  1. Realizar tareas administrativas únicas, como configurar la VPC compartida y habilitar un proyecto host.
  2. Realizar tareas administrativas que se deben repetir cada vez que desees incorporar un proyecto de servicio nuevo. Esto incluye conectar el proyecto de servicio, aprovisionar y configurar recursos de red, y otorgar acceso al administrador del proyecto de servicio.

Estas tareas deben realizarse en el proyecto host de la VPC compartida. Recomendamos que el administrador de la VPC compartida también sea el propietario del proyecto host de la VPC compartida. Esto otorga de forma automática las funciones de administrador de red y administrador de seguridad.

Tarea Función requerida
Configurar la VPC compartida, habilitar el proyecto host y otorgar acceso a los administradores del proyecto de servicio Administrador de VPC compartida
Crear subredes en la VPC compartida y otorgar acceso a los administradores del proyecto de servicio Administrador de redes
Agregar y quitar reglas de firewall Administrador de seguridad

Una vez que se aprovisionan las subredes, el propietario del proyecto host debe otorgar la función de usuario de red en el proyecto host a cualquier persona (generalmente desarrolladores o administradores del proyecto de servicio) que necesite usar estos recursos.

Tarea Función requerida
Usar VPC y subredes que pertenezcan al proyecto host Usuario de red

Esta función se puede otorgar a nivel de proyecto o para subredes individuales. Se recomienda que otorgues la función en subredes individuales. Otorgar la función en el proyecto proporciona acceso a todas las subredes actuales y futuras en la VPC del proyecto host.

Implementa y actualiza backends y balanceadores de cargas de HTTP(S) internos

Los administradores de proyectos de servicio necesitan las siguientes funciones en el proyecto de servicio para crear recursos y backends de balanceo de cargas. Los permisos otorgados por estas funciones se otorgan de forma automática si eres propietario o editor de un proyecto de servicio.

Funciones otorgadas en el proyecto de servicio
Tarea Función requerida
Crear componentes del balanceador de cargas Administrador de redes
Crea instancias Administrador de instancias
Crear y modificar certificados SSL Administrador de seguridad

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

Descripción general de la configuración

Como se muestra en el diagrama, en este ejemplo se crea un balanceador de cargas de HTTP(S) interno en una implementación de red de VPC compartida.

Balanceo de cargas de HTTP(S) interno en una VPC compartida
Balanceo de cargas de HTTP(S) interno en una VPC compartida

Los recursos de herramientas de redes del balanceador de cargas de HTTP(S) interno, como la subred de solo proxy y la subred para las instancias de backend, se crean en el proyecto host. Las reglas de firewall para las instancias de backend también se crean en el proyecto host.

La regla de reenvío del balanceador de cargas, el proxy de destino, el mapa de URL, el servicio de backend y las instancias de backend se crean en el proyecto de servicio.

Requisitos

No es necesario realizar los pasos de esta sección cada vez que quieras crear un balanceador de cargas de HTTP(S) interno. Sin embargo, debes asegurarte de tener acceso a los recursos descritos aquí antes de continuar con la creación del balanceador de cargas.

Configura una VPC compartida con un proyecto host y de servicio

  1. Configura la VPC compartida.
  2. Habilita un proyecto host.
  3. Conecta un proyecto de servicio.

En el resto de estas instrucciones, se supone que ya configuraste una VPC compartida. Esto implica configurar políticas de IAM para tu organización y designar los proyectos host y de servicio.

No continúes hasta que hayas configurado la VPC compartida y habilitado los proyectos host y de servicio.

Configura la red y las subredes en el proyecto host

Necesitas una red de VPC compartida con dos subredes: una para el frontend y los backends del balanceador de cargas, y la otra para los proxies del balanceador de cargas.

En este ejemplo, se usan las siguientes subredes, red y región:

  • Red. La red se llama lb-network.

  • Subred para frontend y backends del balanceador de cargas. Una subred llamada lb-frontend-and-backend-subnet en la región us-west1 usa 10.1.2.0/24 para su rango de IP principal.

  • Subred para proxies. Una subred llamada proxy-only-subnet en la región us-west1 usa 10.129.0.0/23 en su rango de IP principal.

Configura la subred para el frontend y los backends del balanceador de cargas

No es necesario realizar este paso cada vez que quieras crear un balanceador de cargas de HTTP(S) interno. Solo debes asegurarte de que el proyecto de servicio tenga acceso a una subred en la red de VPC compartida (además de la subred de solo proxy).

Cloud Console

  1. En Google Cloud Console, ve a la página Redes de VPC.
    Ir a la página Redes de VPC
  2. Haz clic en Crear red de VPC
  3. En Nombre, ingresa lb-network.
  4. En la sección Subredes, haz lo siguiente:
    • Establece Modo de creación de subred en Personalizado.
    • En la sección Nueva subred, ingresa la siguiente información:
      • Nombre: lb-frontend-and-backend-subnet
      • Región:: us-west1
      • Rangos de direcciones IP: 10.1.2.0/24
    • Haz clic en Listo.
  5. Haz clic en Crear.

gcloud

  1. Crea una red de VPC con el comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crea una subred en la red lb-network en la región us-west1:

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

Configura la subred de solo proxy

Todos los balanceadores de cargas HTTP(S) internos de la región us-west1 usan la subred de solo proxy de la red de VPC lb-network. Solo puede haber una subred de solo proxy activa por región y por red.

No realices este paso si ya hay una subred de solo proxy reservada para balanceadores de cargas de HTTP(S) internos en la región us-west1 de esta red.

Cloud Console

  1. En Cloud Console, ve a la página Redes de VPC.
    Ir a la página Redes de VPC
  2. Haz clic en el nombre de la red de VPC compartida: lb-network.
  3. Haz clic en Agregar subred.
  4. En Nombre, ingresa proxy-only-subnet.
  5. En Región, selecciona us-west1.
  6. Configura Reservar para el balanceo de cargas HTTP(S) interno como Activado.
  7. En el Rango de direcciones IP, ingresa 10.129.0.0/23.
  8. Haga clic en Add.

gcloud

Crea la subred de solo proxy con el comando gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
  --purpose=INTERNAL_HTTPS_LOAD_BALANCER \
  --role=ACTIVE \
  --region=us-west1 \
  --network=lb-network \
  --range=10.129.0.0/23

Otorga a los administradores de proyectos de servicio acceso a la subred de backend

Los administradores de proyectos de servicio requieren acceso a la subred lb-frontend-and-backend-subnet a fin de poder elegir una dirección IP de frontend para el balanceador de cargas y aprovisionar los backends del balanceador de cargas.

Un administrador de VPC compartida debe otorgar acceso a la subred de backend a los administradores del proyecto de servicio (o desarrolladores que implementarán recursos y backends que usan la subred). Si deseas obtener instrucciones, consulta Administradores de proyectos de servicio para algunas subredes.

Configura reglas de firewall en el proyecto host

No es necesario realizar este paso cada vez que quieras crear un balanceador de cargas de HTTP(S) interno. Este es un paso único que debe realizar el administrador del proyecto host en el proyecto host.

En este ejemplo, se usan las siguientes reglas de firewall:

  • fw-allow-ssh. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, y que permite la conectividad SSH entrante en el puerto TCP 22 desde cualquier dirección. Puedes elegir un rango de IP de origen más restrictivo para esta regla; por ejemplo, puedes especificar solo los rangos de IP del sistema desde el que inicias sesiones SSH. En este ejemplo, se usa la etiqueta de destino allow-ssh para identificar las máquinas virtuales (VM) a las que se aplica la regla de firewall.

  • fw-allow-health-check: Es una regla de entrada, aplicable a las instancias con balanceo de cargas, que permite el tráfico de TCP de los sistemas de verificación de estado de Google Cloud (en 130.211.0.0/2235.191.0.0/16). En este ejemplo, se usa la etiqueta de destino load-balanced-backend para identificar las instancias a las que debe aplicarse.

  • fw-allow-proxies. Es una regla de entrada, aplicable a las instancias con balanceo de cargas, que permite el tráfico de TCP en los puertos 804438080, y desde los proxies administrados del balanceador de cargas de HTTP(S) interno. En este ejemplo, se usa la etiqueta de destino load-balanced-backend para identificar las instancias a las que se debe aplicar.

Sin estas reglas de firewall, la regla de entrada predeterminada denegada bloquea el tráfico entrante a las instancias de backend.

Cloud Console

  1. En Cloud Console, ve a la página Reglas de firewall.
    Ir a la página Reglas de firewall
  2. Haz clic en Crear regla de firewall para crear la regla que permite conexiones SSH entrantes:
    • Nombre: fw-allow-ssh
    • Red: lb-network
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de destino: allow-ssh
    • Filtro de fuente: IP ranges
    • Rangos de IP de origen: 0.0.0.0/0
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Marca tcp y escribe 22 para el número de puerto.
  3. Haz clic en Crear.
  4. Haz clic en Crear regla de firewall por segunda vez para crear la regla que permita las verificaciones de estado de Google Cloud:
    • Nombre: fw-allow-health-check
    • Red: lb-network
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de destino: load-balanced-backend
    • Filtro de fuente: IP ranges
    • Rangos de IP de origen: 130.211.0.0/22 y 35.191.0.0/16
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Marca tcp e ingresa 80.
        Como práctica recomendada, limita esta regla solo a los protocolos y puertos que coincidan con los que usa tu verificación de estado. Si usas tcp:80 en el protocolo y el puerto, Google Cloud puede usar HTTP en el puerto 80 a fin de contactar las VM, pero no puede usar HTTPS en el puerto 443 para comunicarse con ellas.
  5. Haz clic en Crear.
  6. Haz clic en Crear regla de firewall por tercera vez para crear la regla a fin de permitir que los servidores proxy del balanceador de cargas conecten los backends:
    • Nombre: fw-allow-proxies
    • Red: lb-network
    • Dirección del tráfico: entrada
    • Acción si hay coincidencia: permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de destino: load-balanced-backend
    • Filtro de fuente: IP ranges
    • Rangos de IP de origen: 10.129.0.0/23
    • Protocolos y puertos:
      • Elige Protocolos y puertos especificados.
      • Marca tcp y escribe 80, 443, 8080 para los números de puerto.
  7. Haz clic en Crear.

gcloud

  1. Crea la regla de firewall fw-allow-ssh para permitir la conectividad SSH a las VM con la etiqueta de red allow-ssh. Cuando omites source-ranges, Google Cloud interpreta que la regla significa cualquier fuente.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  2. Crea la regla fw-allow-health-check para permitir las verificaciones de estado de Google Cloud. Este ejemplo permite todo el tráfico de TCP proveniente de la verificación de estado. Sin embargo, puedes configurar un conjunto más limitado de puertos según tus necesidades.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=load-balanced-backend \
        --rules=tcp
    
  3. Crea la regla fw-allow-proxies para permitir que los proxies del balanceador de cargas de HTTP(S) interno se conecten con los backends.

    gcloud compute firewall-rules create fw-allow-proxies \
      --network=lb-network \
      --action=allow \
      --direction=ingress \
      --source-ranges=10.129.0.0/23 \
      --target-tags=load-balanced-backend \
      --rules=tcp:80,tcp:443,tcp:8080
    

Configura el balanceador de cargas de HTTP(S) interno en el proyecto de servicio

En esta sección, se muestra cómo configurar el balanceador de cargas y los backends. Estos pasos debe realizarlos el administrador del proyecto de servicio (o un desarrollador que opera dentro del proyecto de servicio) y no requieren participación del administrador del proyecto host. Los pasos de esta sección son muy similares a los pasos estándar para configurar el balanceo de cargas de HTTP(S) interno.

En esta sección, se muestra la configuración necesaria para el balanceo de cargas de los servicios que se ejecutan en las VM de Compute Engine o en los pods de un clúster de Google Kubernetes Engine. Los clientes se conectan a la dirección IP y al puerto que configuras en la regla de reenvío del balanceador de cargas. Cuando los clientes envían tráfico a esta dirección IP y puerto, sus solicitudes se reenvían a las instancias de backend (VM de Compute Engine o pods de GKE) según el mapa de URL del balanceador de cargas de HTTP(S) interno.

En el ejemplo de esta página, se configura de manera explícita una dirección IP interna reservada para la regla de reenvío del balanceador de cargas de HTTP(S) interno, en lugar de permitir que se asigne una dirección IP interna efímera. Recomendamos reservar direcciones IP para las reglas de reenvío.

Crea un grupo de instancias administrado

En esta sección, se muestra cómo crear una plantilla y un grupo de instancias administrado. El grupo de instancias administrado proporciona instancias de VM que ejecutan los servidores de backend de un balanceador de cargas HTTP(S) interno de ejemplo. Las cargas del tráfico de los clientes se balancean a estos servidores de backend. A modo de demostración, los backends entregan sus propios nombres de host.

Cloud Console

  1. En Cloud Console, ve a la página Grupos de instancias.
    Ir a la página Grupos de instancias
  2. Haga clic en Crear grupo de instancias.
  3. Selecciona Nuevo grupo de instancias administrado a la izquierda.
  4. En Nombre, ingresa l7-ilb-backend-example.
  5. En Ubicación, selecciona Zona única.
  6. En Región, selecciona us-west1.
  7. En Zona, selecciona us-west1-a.
  8. En Plantilla de instancias, selecciona Crear una nueva plantilla de instancias.

    1. En Nombre, ingresa l7-ilb-backend-template.
    2. Asegúrate de que el disco de arranque esté configurado como una imagen de Debian, como Debian GNU/Linux 9 (stretch). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como apt-get. Si necesitas cambiar el Disco de arranque, haz clic en Cambiar.
      1. En Sistema operativo, selecciona Debian.
      2. En Versión, selecciona una de las imágenes de Debian disponibles, como Debian GNU/Linux 9 (Stretch).
      3. Haga clic en Seleccionar.
    3. En Administración, seguridad, discos, redes, usuario único, en la pestaña Administración, inserta la siguiente secuencia de comandos en el campo Secuencia de comandos de inicio.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'
      
    4. En Herramientas de redes, selecciona Redes compartidas conmigo (del proyecto host: HOST_PROJECT_ID).

    5. Selecciona lb-network como Red y selecciona lb-frontend-and-backend-subnet para la Subred.

    6. Agrega las siguientes etiquetas de red: allow-ssh y load-balanced-backend.

    7. Haz clic en Guardar y continuar.

  9. Especifica la cantidad de instancias que deseas crear en el grupo.

    Para este ejemplo, en Modo de ajuste de escala automático, puedes seleccionar las siguientes opciones:

    • Sin ajuste de escala automático
    • En Cantidad de instancias, ingresa 2.

    De manera opcional, en la sección de Ajuste de escala automático de la IU, puedes configurar el grupo de instancias para que agregue o quite instancias de forma automática en función del uso de CPU de la instancia.

  10. Haz clic en Crear para crear el grupo de instancias nuevo.

gcloud

En las instrucciones de gcloud que se incluyen en esta guía, se supone que usas Cloud Shell o algún otro entorno con bash instalado.

  1. Crea una plantilla de instancias de VM con el servidor de HTTP con el comando gcloud compute instance-templates create.

    gcloud compute instance-templates create l7-ilb-backend-template \
    --region=us-west1 \
    --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --tags=allow-ssh,load-balanced-backend \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2' \
    --project SERVICE_PROJECT_ID
    
  2. Crea un grupo de instancias administrado en la zona con el comando gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create l7-ilb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-ilb-backend-template \
        --project SERVICE_PROJECT_ID
    

Configura el balanceador de cargas

En este ejemplo, se muestra cómo crear los siguientes recursos del balanceador de cargas de HTTP(S) interno:

  • Verificación de estado de HTTP
  • Servicio de backend con un grupo de instancias administrado como backend
  • Un mapa de URL
  • Certificado SSL (obligatorio solo para HTTPS)
  • Proxy de destino
  • Regla de reenvío

Disponibilidad del proxy

Según la cantidad de proyectos de servicio que usen la misma red de VPC compartida, podrías alcanzar cuotas o límites más rápido que en el modelo de implementación de redes en el que cada proyecto de Google Cloud aloja su propia red.

Por ejemplo, a veces las regiones de Google Cloud no tienen suficiente capacidad de proxy para un balanceador de cargas de HTTP(S) interno nuevo. Si esto sucede, Cloud Console muestra un mensaje de advertencia de disponibilidad del proxy cuando creas tu balanceador de cargas. Para resolver este problema, puedes realizar una de las siguientes acciones:

  • Esperar a que se resuelva el problema de capacidad
  • Comunicarte con tu equipo de ventas de Google Cloud para aumentar estos límites

Cloud Console

Selecciona un tipo de balanceador de cargas

  1. En Cloud Console, ve a la página Balanceo de cargas.
    Ir a la página Balanceo de cargas
  2. En Balanceo de cargas de HTTP(S), haz clic en Iniciar configuración.
  3. Selecciona Solo entre mis VM. Esta configuración indica que el balanceador de cargas es interno.
  4. Haz clic en Continuar.

Prepara el balanceador de cargas

  1. Para el Nombre del balanceador de cargas, ingresa l7-ilb-shared-vpc.
  2. En Región, selecciona us-west1.
  3. En Red, selecciona Redes compartidas conmigo (del proyecto host: HOST_PROJECT_ID).
    1. En el menú desplegable, seleccione lb-network.
      Si ves una advertencia sobre la subred de solo proxy que se requiere en la red de VPC compartida, confirma que el administrador del proyecto host haya creado proxy-only-subnet en la región us-west1 en la red de VPC compartida lb-network. La creación del balanceador de cargas tendrá éxito incluso si no tienes permiso para ver la subred de solo proxy en esta página.
  4. Mantén la ventana abierta para continuar.

Configura el servicio de backend

  1. Haga clic en Configuración de backend.
  2. En el menú Crear o seleccionar servicios de backend, selecciona Crear un servicio de backend.
  3. Otorga el Nombre l7-ilb-backend-service para el servicio de backend.
  4. Configura el Tipo de backend como grupos de instancias.
  5. En la sección Nuevo backend, sigue estos pasos:
    1. Establece el Grupo de instancias en l7-ilb-backend-example.
    2. Establece el campo Números de puerto en 80.
    3. Establece el campo Modo de balanceo en Uso.
    4. Haz clic en Listo.
  6. En la sección Verificación de estado, elige Crear una verificación de estado con los parámetros siguientes:
    1. Name: l7-ilb-basic-check
    2. Protocolo: HTTP
    3. Puerto: 80
  7. Haz clic en Guardar y continuar.
  8. Haz clic en Crear.

Configura el mapa de URL

Haga clic en Reglas de enrutamiento. Asegúrate de que l7-ilb-backend-service sea el único servicio de backend para los hosts y rutas de acceso no coincidentes.

Para obtener información sobre la administración del tráfico, consulta Configura la administración del tráfico.

Configura el frontend

Para HTTP:

  1. Haz clic en Configuración de frontend.
  2. Haz clic en Agregar IP y puerto de frontend.
  3. Establece el campo Nombre como l7-ilb-forwarding-rule.
  4. Configura el Protocolo en HTTP.
  5. Establece Subred en lb-frontend-and-backend-subnet.
    No selecciones la subred de solo proxy para el frontend, incluso si es una opción en la lista desplegable.
  6. En IP interna, selecciona Reservar una dirección IP interna y estática.
  7. En el panel que aparece, proporciona los siguientes detalles:
    1. Name: l7-ilb-ip
    2. En la sección Dirección IP estática, selecciona Permitirme elegir.
    3. En la sección Dirección IP personalizada, ingresa 10.1.2.99.
    4. Haz clic en Reservar.
  8. Establece el Puerto en 80.
  9. Haz clic en Listo.

Para HTTPS:

Si usas HTTPS entre el cliente y el balanceador de cargas, necesitas uno o más recursos de certificado SSL para configurar el proxy. Para obtener información sobre cómo crear recursos de certificados SSL, consulta Certificados SSL. Por el momento, los certificados administrados por Google no son compatibles con los balanceadores de cargas de HTTP(S) internos.

  1. Haz clic en Configuración de frontend.
  2. Haz clic en Agregar IP y puerto de frontend.
  3. En el campo Nombre, ingresa l7-ilb-forwarding-rule.
  4. En el campo Protocolo, selecciona HTTPS (includes HTTP/2).
  5. Establece Subred en lb-frontend-and-backend-subnet.
    No selecciones la subred de solo proxy para el frontend, incluso si es una opción en la lista desplegable.
  6. En IP interna, selecciona Reservar una dirección IP interna y estática.
  7. En el panel que aparece, proporciona los siguientes detalles:
    1. Name: l7-ilb-ip
    2. En la sección Dirección IP estática, selecciona Permitirme elegir.
    3. En la sección Dirección IP personalizada, ingresa 10.1.2.99.
    4. Haz clic en Reservar.
  8. Asegúrate de que el Puerto esté establecido en 443 para permitir el tráfico HTTPS.
  9. Haz clic en la lista desplegable Certificado.
    1. Si ya tienes un recurso de certificado SSL autoadministrado que deseas usar como certificado SSL principal, selecciónalo en el menú desplegable.
    2. De lo contrario, selecciona Crear un nuevo certificado.
      1. En Nombre, ingresa l7-ilb-cert.
      2. En los campos correspondientes, sube los archivos con formato PEM:
        • Certificado de clave pública
        • Cadena de certificado
        • Clave privada
      3. Haz clic en Crear.
  10. Para agregar otros recursos de certificado, además del recurso de certificado SSL principal, haz lo siguiente:
    1. Haz clic en Agregar certificado.
    2. Selecciona un certificado de la lista Certificados o haz clic en Crear un certificado nuevo y sigue las instrucciones anteriores.
  11. Haga clic en Listo.

Revise y finalice la configuración

Haga clic en Crear.

gcloud

  1. Define la verificación de estado de HTTP con el comando gcloud compute health-checks create http.

    gcloud compute health-checks create http l7-ilb-basic-check \
       --region=us-west1 \
       --use-serving-port \
       --project SERVICE_PROJECT_ID
    
  2. Define el servicio de backend con el comando gcloud compute backend-services create.

    gcloud compute backend-services create l7-ilb-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-ilb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  3. Agrega backends al servicio de backend con el comando gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend l7-ilb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-ilb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  4. Crea el mapa de URL con el comando gcloud compute url-maps create.

    gcloud compute url-maps create l7-ilb-map \
      --default-service=l7-ilb-backend-service \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  5. Crea el proxy de destino.

    Para HTTP:

    Para un balanceador de cargas de HTTP interno, crea el proxy de destino con el comando gcloud compute target-http-proxies create.

    gcloud compute target-http-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-map \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    

    Para HTTPS:

    Para obtener información sobre cómo crear recursos de certificados SSL, consulta Certificados SSL. Por el momento, los certificados administrados por Google no son compatibles con los balanceadores de cargas de HTTP(S) internos.

    Asigna tus rutas de archivos a nombres de variables.

    export LB_CERT=path to PEM-formatted file
    
    export LB_PRIVATE_KEY=path to PEM-formatted file
    

    Crea un certificado SSL regional con el comando gcloud compute ssl-certificates create.

    gcloud compute ssl-certificates create l7-ilb-cert \
      --certificate=$LB_CERT \
      --private-key=$LB_PRIVATE_KEY \
      --region=us-west1
    

    Usa el certificado SSL regional para crear un proxy de destino con el comando gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-map \
      --region=us-west1 \
      --ssl-certificates=l7-ilb-cert \
      --project SERVICE_PROJECT_ID
    
  6. Crea la regla de reenvío.

    Para redes personalizadas, debes hacer referencia a la subred en la regla de reenvío.

    Para la dirección IP de la regla de reenvío, usa lb-frontend-and-backend-subnet. Si intentas usar la subred de solo proxy, la creación de la regla de reenvío fallará.

    Para HTTP:

    Usa el comando gcloud compute forwarding-rules create con las marcas correctas.

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-west1 \
      --project SERVICE_PROJECT_ID
    

    Para HTTPS:

    Crea la regla de reenvío con el comando gcloud compute forwarding-rules create con las marcas correctas.

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-ilb-proxy \
      --target-https-proxy-region=us-west1 \
      --project SERVICE_PROJECT_ID
    

Realiza pruebas

Crea una instancia de VM para probar la conectividad

Los clientes pueden estar ubicados en el proyecto host o en cualquier proyecto de servicio conectado. En este ejemplo, probarás que el balanceador de cargas funcione mediante la implementación de una VM de cliente en un proyecto de servicio. El cliente debe usar la misma red de VPC compartida y estar en la misma región que el balanceador de cargas.

gcloud compute instances create l7-ilb-client-us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --zone=us-west1-a \
    --tags=allow-ssh \
    --project SERVICE_PROJECT_ID

Prueba el balanceador de cargas

Accede a la instancia que acabas de crear y prueba que los servicios HTTP(S) en los backends sean accesibles a través de la dirección IP de la regla de reenvío del balanceador de cargas HTTP(S) interno y que las cargas del tráfico se balanceen en las instancias de backend.

Conecta mediante SSH a cada instancia de cliente

gcloud compute ssh l7-ilb-client-us-west1-a \
    --zone=us-west1-a

Verifica que la IP entregue su nombre de host

curl 10.1.2.99

Para la prueba de HTTPS, reemplaza curl por lo siguiente:

curl -k -s 'https//:10.1.2.99:443'

La marca -k hace que curl omita la validación del certificado.

Ejecuta 100 solicitudes y confirma que sus cargas estén balanceadas

Para HTTP:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl --silent 10.1.2.99)"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

Para HTTPS:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl -k -s 'https://:10.1.2.99:443')"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

¿Qué sigue?