En este documento, se describen las opciones para conectarse desde y hacia Internet mediante recursos de Compute Engine que tienen direcciones IP privadas. Esto es útil para los desarrolladores que crean servicios de Google Cloud y los administradores de red de los entornos de Google Cloud.
En este instructivo, suponemos que estás familiarizado con la implementación de VPC, con Compute Engine y con redes de TCP/IP básicas.
Objetivos
- Obtén más información sobre las opciones disponibles para conectarte entre VM privadas por fuera de su VPC.
- Crea una instancia de Identity-Aware Proxy (IAP) de túneles de TCP que sea adecuada para servicios interactivos, como SSH.
- Crea una instancia de Cloud NAT para permitir que las VM realicen conexiones salientes a Internet.
- Configura un balanceador de cargas de HTTP para admitir conexiones entrantes desde Internet a tus VM.
Costos
En este instructivo, se usan componentes facturables de Google Cloud, que incluyen los siguientes:
Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Calculamos que el total para ejecutar este instructivo es inferior a $5 por día.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
Introducción
Las direcciones IP privadas proporcionan una serie de ventajas sobre las direcciones IP públicas (externas), incluidas las que se detallan a continuación:
- Superficie de ataque reducida. Quitar direcciones IP externas de las VM dificulta a los atacantes alcanzar a las VM y explotar posibles vulnerabilidades.
- Mayor flexibilidad. Agregar una capa de abstracción, como un balanceador de cargas o un servicio de NAT, permite una entrega de servicios más confiable y flexible, en comparación con las direcciones IP externas estáticas.
En esta solución, se analizan tres situaciones, como se describe en la tabla siguiente:
Interactivo | Recuperación | Activo |
---|---|---|
Se inicia una conexión SSH desde un host remoto directamente a una VM con IAP para TCP. Ejemplo: administración remota mediante SSH o RDP |
Una VM inicia una conexión a un host externo en Internet mediante Cloud NAT. Ejemplo: actualizaciones del SO y API externas |
Un host remoto inicia una conexión a una VM a través de un balanceador de cargas global de Google Cloud. Ejemplo: frontends de aplicaciones, WordPress |
Algunos entornos pueden implicar solo una de estas situaciones. Sin embargo, muchos entornos requieren todas las situaciones, que es totalmente compatible con Google Cloud.
En las secciones siguientes, se describe un entorno multirregional con un servicio de balanceo de cargas de HTTP respaldado por dos VM en dos regiones. Estas VM usan Cloud NAT para las comunicaciones salientes. Para la administración, se puede acceder a las VM a través de SSH en túnel a través de IAP.
En el diagrama siguiente, se proporciona una descripción general de los tres casos de uso y los componentes relevantes.
Crea instancias de VM
Para comenzar con el instructivo, crearás un total de cuatro instancias de máquina virtual (VM): dos instancias por región en dos regiones diferentes. Se otorga a todas las instancias el mismo rótulo identificador, que luego la regla de firewall usa para permitir que el tráfico entrante llegue a tus instancias.
En el siguiente diagrama, se muestran las instancias de VM y los grupos de instancias que creaste distribuidos en dos zonas.
La secuencia de comandos de inicio que agregas a cada instancia instala Apache y crea una página principal única para cada instancia.
El procedimiento incluye instrucciones para usar la consola de Google Cloud y los comandos de gcloud
. La manera más sencilla de usar los comandos de gcloud
es con Cloud Shell.
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Haz clic en Crear instancia.
Establece el Nombre como
www-1
.Establece la Zona en us-central1-b.
Haz clic en Administración, seguridad, discos, redes, instancia única.
Haz clic en Redes y aplica la siguiente configuración:
- Para el tráfico HTTP, en el cuadro Etiquetas de red, ingresa
http-tag
. - En Interfaces de red, haz clic en edit.
- En IP externa, selecciona Ninguna.
- Para el tráfico HTTP, en el cuadro Etiquetas de red, ingresa
Haz clic en Administración y 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>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
Haz clic en Crear.
Crea
www-2
con la misma configuración, excepto que debes configurar 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>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
Crea
www-3
con la misma configuración, excepto que debes configurar la Zona eneurope-west1-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>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
Crea
www-4
con la misma configuración, excepto que debes configurar la Zona eneurope-west1-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>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
gcloud
Abre Cloud Shell:
Crea una instancia llamada
www-1
enus-central1-b
con una secuencia de comandos de inicio básica:gcloud compute instances create www-1 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea una instancia con el nombre
www-2
enus-central1-b
:gcloud compute instances create www-2 \ --image-family debian-9 \ --image-project debian-cloud \ --zone us-central1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea una instancia con el nombre
www-3
, esta vez eneurope-west1-b
:gcloud compute instances create www-3 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html EOF"
Crea una instancia con el nombre
www-4
, también eneurope-west1-b
:gcloud compute instances create www-4 \ --image-family debian-9 \ --image-project debian-cloud \ --zone europe-west1-b \ --tags http-tag \ --network-interface=no-address \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo service apache2 restart echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html EOF"
Terraform
Abre Cloud Shell:
Clona el repositorio desde GitHub:
git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform
Cambia el directorio de trabajo por el directorio del repositorio:
cd iap
Instala Terraform.
Reemplaza
[YOUR-ORGANIZATION-NAME]
en el archivoscripts/set_env_vars.sh
por el nombre de tu organización de Google Cloud.Establece las variables de entorno:
source scripts/set_env_vars.sh
Aplica la configuración de Terraform:
terraform apply
Configura túneles IAP para interactuar con las instancias
Para acceder a instancias de VM, debes conectarte a las instancias con herramientas como SSH o RDP. En la configuración que crearás en este instructivo, no puedes conectarte directamente a las instancias. Sin embargo, puedes usar el redireccionamiento de TCP en IAP, que permite el acceso remoto a estos patrones interactivos.
Para este instructivo, debes usar SSH.
En esta sección, harás lo siguiente:
- Te conectarás a una instancia de Compute Engine mediante el túnel IAP.
- Agregarás un segundo usuario con permiso de túnel IAP en IAM.
En el diagrama siguiente, se describe la arquitectura que se compila en esta sección. Las zonas grises se analizan en otras secciones de este instructivo.
Limitaciones de IAP
- Ancho de banda: La característica de redireccionamiento de IAP de TCP no se diseñó para la transferencia masiva de datos. IAP se reserva el derecho de limitar la cantidad de usuarios que se consideran que abusan de este servicio.
- Duración de la conexión: IAP no desconectará las sesiones activas, a menos que sea necesario para tareas de mantenimiento.
- Protocolo: IAP de TCP no es compatible con UDP.
Crea reglas de firewall para permitir la creación de túneles
A fin de que puedas conectarte a tus instancias con SSH, debes abrir un puerto adecuado en firewall. Las conexiones IAP provienen de un conjunto específico de direcciones IP (35.235.240.0/20). Por lo tanto, puedes limitar la regla a este rango de CIDR.
Console
En la consola de Google Cloud, ve a la página Políticas de Firewall.
Haz clic en Crear regla de firewall.
Establece el Nombre como
allow-ssh-from-iap
.Deja Red de VPC como
default
.En Destinos, selecciona Rótulos de identificación de destino especificados.
Configura los Rótulos identificadores de destino como
http-tag
.Deja el Filtro de fuente configurado en los Rangos de IP.
Establece los Rangos de IP de origen en
35.235.240.0/20
.Establece los Protocolos y puertos permitidos en
tcp:22
.Haz clic en Crear.
La regla de firewall nueva puede tardar unos minutos en aparecer en la consola.
gcloud
Crea una regla de firewall con el nombre
allow-ssh-from-iap
:gcloud compute firewall-rules create allow-ssh-from-iap \ --source-ranges 35.235.240.0/20 \ --target-tags http-tag \ --allow tcp:22
Terraform
Copia el archivo de Terraform con las reglas de firewall en el directorio actual:
cp iap/vpc_firewall_rules.tf .
Aplica la configuración de Terraform:
terraform apply
Prueba los túneles
En Cloud Shell, conéctate a la instancia
www-1
con IAP:gcloud compute ssh www-1 \ --zone us-central1-b \ --tunnel-through-iap
Si la conexión se establece de forma correcta, acabas de crear una sesión SSH que se conecta a través de un túnel por IAP directo a tu VM privada.
Otorga acceso a usuarios adicionales
IAP usa tus funciones y permisos del proyecto existentes cuando te conectas a instancias de VM. De forma predeterminada, los propietarios de las instancias son los únicos usuarios que tienen la función Usuario de túnel protegido con IAP. Si deseas permitir que otros usuarios tengan acceso a tus VM mediante túneles IAP, debes otorgarles esta función.
En la consola de Google Cloud, ve a Seguridad > Identity-Aware Proxy:
Si ves un mensaje que te indica que necesitas configurar la pantalla de consentimiento de OAuth, ignora el mensaje; no es relevante para IAP de TCP.
Selecciona la pestaña Recursos de SSH y TCP.
Selecciona las VM que creaste:
A la derecha, haz clic en Agregar principal.
Agrega los usuarios a los que deseas otorgar permisos, selecciona la función Usuario de túnel protegido con IAP y haz clic en Guardar.
Resumen
Ahora puedes conectarte a tus instancias mediante SSH para administrarlas o solucionar problemas.
Muchas aplicaciones necesitan realizar conexiones salientes para descargar parches, conectarse con socios o descargar recursos. En la siguiente sección, configurarás Cloud NAT para permitir que tus VM alcancen estos recursos.
Implementa Cloud NAT para la recuperación
El servicio Cloud NAT permite que las instancias de VM de Google Cloud que no tienen direcciones IP externas se conecten a Internet. Cloud NAT implementa NAT de salida junto con una ruta predeterminada para permitir que tus instancias lleguen a Internet. No implementa NAT de entrada. Los hosts fuera de tu red de VPC pueden responder solo a las conexiones establecidas que iniciaron tus instancias; no pueden iniciar sus propias conexiones a tus instancias con Cloud NAT. NAT no se usa para el tráfico dentro de Google Cloud.
Cloud NAT es un recurso regional. Puedes configurarlo para permitir el tráfico de todos los rangos de direcciones IP principales y secundarios de las subredes de una región. También puedes configurarlo para que se aplique solo a algunos de esos rangos.
En esta sección, configurarás una puerta de enlace de Cloud NAT en cada región que usaste con anterioridad. En el diagrama siguiente, se describe la arquitectura que se compila en esta sección. Las zonas grises se analizan en otras secciones de este instructivo.
Crea una configuración de NAT con Cloud Router
Debes crear la instancia de Cloud Router en la misma región que las instancias que necesitan usar Cloud NAT. Cloud NAT solo se usa para colocar información de NAT en las VM; no se usa como parte de la puerta de enlace de Cloud NAT real.
Esta configuración permite a todas las instancias de la región usar Cloud NAT para todos los rangos de IP principales y de IP de alias. También asigna de forma automática las direcciones IP externas de la puerta de enlace NAT. Para obtener más opciones, consulta la documentación de gcloud compute routers.
Console
Ve a la página Cloud NAT:
Haz clic en Comenzar o Crear puerta de enlace de NAT.
Establece el Nombre de puerta de enlace en
nat-config
.Establece la red de VPC en
default
.Establece la Región en
us-central1
.En Cloud Router, selecciona Crear router nuevo y, luego, haz lo siguiente:
- Establece el Nombre como
nat-router-us-central1
. - Haz clic en Crear.
- Establece el Nombre como
Haz clic en Crear.
Repite el procedimiento, pero sustituye estos valores:
- Nombre:
nat-router-europe-west1
- Región::
europe-west1
- Nombre:
gcloud
Crea instancias de Cloud Router en cada región:
gcloud compute routers create nat-router-us-central1 \ --network default \ --region us-central1 gcloud compute routers create nat-router-europe-west1 \ --network default \ --region europe-west1
Configura los routers de Cloud NAT:
gcloud compute routers nats create nat-config \ --router-region us-central1 \ --router nat-router-us-central1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips gcloud compute routers nats create nat-config \ --router-region europe-west1 \ --router nat-router-europe-west1 \ --nat-all-subnet-ip-ranges \ --auto-allocate-nat-external-ips
Terraform
Copia el archivo de configuración de NAT de Terraform en el directorio actual:
cp nat/vpc_nat_gateways.tf .
Aplica la configuración de Terraform:
terraform apply
Prueba la configuración de Cloud NAT
Ahora puedes probar que estás habilitado para realizar solicitudes de salida de tus instancias de VM a Internet.
- Espera hasta 3 minutos para que la configuración de NAT se propague a la VM.
En Cloud Shell, conéctate a tu instancia mediante el túnel que creaste:
gcloud compute ssh www-1 --tunnel-through-iap
Cuando accedas a la instancia, usa el comando de
curl
para realizar una solicitud de salida:curl example.com
Verás el siguiente resultado:
<html> <head> <title>Example Domain</title> ... ... ... </head> <body> <div> <h1>Example Domain</h1> <p>This domain is established to be used for illustrative examples in documents. You may use this domain in examples without prior coordination or asking for permission. </p> <p><a href="http://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>
Si el comando se ejecuta de forma correcta, has validado que tus VM pueden conectarse a Internet mediante Cloud NAT.
Resumen
Ahora, tus instancias pueden realizar conexiones salientes para descargar parches y recursos, o conectarse con socios.
En la siguiente sección, agregarás el balanceo de cargas a la implementación y lo configurarás para que los clientes remotos puedan iniciar solicitudes a tus servidores.
Crea un servicio de balanceo de cargas HTTP para la entrega
Usar Cloud Load Balancing para tu aplicación tiene muchas ventajas. Puede proporcionar balanceo de cargas sin interrupciones y escalable para más de un millón de consultas por segundo. También puede descargar la sobrecarga de SSL de tus VM, enrutar consultas a la mejor región para tus usuarios según la ubicación y disponibilidad, y admitir protocolos modernos, como HTTP/2 y QUIC.
Para este instructivo, puedes aprovechar otra función clave: proxi de conexión IP Anycast global. Esta característica proporciona una dirección IP pública única que finaliza en el perímetro distribuido de forma global de Google. Luego, los clientes pueden conectarse a los recursos alojados en direcciones IP privadas en cualquier parte de Google Cloud. Esta configuración ayuda a proteger las instancias de ataques de DSD y ataques directos. También se habilitan funciones, como Google Cloud Armor, para mayor seguridad.
En esta sección del instructivo, haz lo siguiente:
- Restablece las instancias de VM para instalar el servidor web de Apache.
- Crea una regla de firewall para permitir el acceso desde los balanceadores de cargas.
- Asigna direcciones IPv4 y, también, IPv6 estáticas y globales para el balanceador de cargas.
- Crea un grupo de instancias para tus instancias.
- Puedes empezar a enviar tráfico a tus instancias.
En el diagrama siguiente, se describe la arquitectura que se compila en esta sección. Las zonas grises se analizan en otras secciones de este instructivo.
Restablece instancias de VM
Cuando creaste las instancias de VM antes en este instructivo, no tenían acceso a Internet porque no se asignó ninguna dirección IP externa y no se configuró Cloud NAT. Por lo tanto, la secuencia de comandos de inicio con la que se instala Apache no se pudo completar de manera correcta.
La manera más fácil de volver a ejecutar las secuencias de comandos de inicio es restablecer esas instancias para que el servidor web de Apache se pueda instalar y usar en la siguiente sección.
Console
En la consola de Google Cloud, ve a la página Instancias de VM.
Selecciona
www-1
,www-2
,www-3
ywww-4
.Haz clic en el botón Restablecer en la parte superior de la página.
Si no ves el botón Restablecer, haz clic en Más acciones
y selecciona Restablecer.Para confirmar el restablecimiento de las cuatro instancias, haz clic en Restablecer en el cuadro de diálogo.
gcloud
Restablece las cuatro instancias:
gcloud compute instances reset www-1 \ --zone us-central1-b gcloud compute instances reset www-2 \ --zone us-central1-b gcloud compute instances reset www-3 \ --zone europe-west1-b gcloud compute instances reset www-4 \ --zone europe-west1-b
Abre el firewall
La siguiente tarea es crear una regla de firewall para permitir el tráfico de los balanceadores de cargas a tus instancias de VM. Con esta regla, se habilita el tráfico del rango de direcciones de Google Cloud que usan los balanceadores de cargas y las verificaciones de estado. La regla de firewall usa la etiqueta http-tag
que creaste antes. Además, la regla de firewall permite que el tráfico al puerto designado pueda alcanzar instancias que tienen la etiqueta.
Console
En la consola de Google Cloud, ve a la página Políticas de Firewall.
Haz clic en Crear regla de firewall.
Establece el Nombre como
allow-lb-and-healthcheck
.Deja la red de VPC como
default
.En Destinos, selecciona Rótulos de identificación de destino especificados.
Configura los Rótulos identificadores de destino como
http-tag
.Deja el Filtro de fuente configurado en los Rangos de IP.
Configura Rangos de IP de origen como
130.211.0.0/22
y35.191.0.0/16
.Establece los Protocolos y puertos permitidos en
tcp:80
.Haz clic en Crear.
La regla de firewall nueva puede tardar unos minutos en aparecer en la consola.
gcloud
Crea una regla de firewall con el nombre
allow-lb-and-healthcheck
:gcloud compute firewall-rules create allow-lb-and-healthcheck \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags http-tag \ --allow tcp:80
Terraform
Copia los archivos de configuración del balanceo de cargas de Terraform en el directorio actual:
cp lb/* .
Aplica la configuración de Terraform:
terraform apply
Asigna una dirección IP externa a los balanceadores de cargas
Si entregas tráfico a Internet, debes asignar una dirección externa para el balanceador de cargas. Puedes asignar una dirección IPv4, una dirección IPv6 o ambas. En esta sección, se reservan las direcciones estáticas IPv4 y, también, IPv6 adecuadas para agregar a DNS.
No se aplican cargos adicionales para las direcciones IP públicas, ya que se usan con un balanceador de cargas.
Console
En la consola de Google Cloud, ve a la página Direcciones IP externas.
Haz clic en Reservar dirección estática para reservar una dirección IPv4.
Establece el Nombre como
lb-ip-cr
.Deja Tipo configurado como Global.
Haz clic en Reservar.
Haz clic en Reservar dirección estática de nuevo para reservar una dirección IPv6.
Establece el Nombre como
lb-ipv6-cr
.Configura la Versión de IP como IPv6.
Deja Tipo configurado como Global.
Haz clic en Reservar.
gcloud
Crea una dirección IP estática con el nombre
lb-ip-cr
para IPv4:gcloud compute addresses create lb-ip-cr \ --ip-version=IPV4 \ --global
Crea una dirección IP estática con el nombre
lb-ipv6-cr
para IPv6:gcloud compute addresses create lb-ipv6-cr \ --ip-version=IPV6 \ --global
Crea grupos de instancias y agrega instancias
Los balanceadores de cargas de Google Cloud requieren grupos de instancias que actúan como backends para el tráfico. En este instructivo, se usan grupos de instancias no administrados para que sea más simple. Sin embargo, también podrías usar grupos de instancias administrados para aprovechar ciertas características, como el ajuste de escala automático, la reparación automática, la implementación regional (multizona) y la actualización automática.
En esta sección, crearás un grupo de instancias para cada una de las zonas que usas.
Console
En la consola de Google Cloud, ve a la página Grupos de instancias.
Haz clic en Crear grupo de instancias.
En el lado izquierdo, haz clic en Nuevo grupo de instancias no administrado.
Establece el Nombre como
us-resources-w
.Establece la Región en
us-central1
Establece la Zona en
us-central1-b
.Selecciona Red (predeterminada) y Subred (predeterminada).
En Instancias de VM, haz lo siguiente:
- Haz clic en Agregar una instancia y, luego, selecciona www-1.
- Vuelve a hacer clic en Agregar una instancia y, luego, selecciona www-2.
- Haz clic en Crear.
Repite este procedimiento para crear un segundo grupo de instancias, pero usa los valores siguientes:
- Nombre:
europe-resources-w
- Zona:
europe-west1-b
- Instancias:
www-3
ywww-4
- Nombre:
En la página Grupo de instancias, confirma que tienes dos grupos de instancias, cada uno con dos instancias.
gcloud
Crea el grupo de instancias
us-resources-w
:gcloud compute instance-groups unmanaged create us-resources-w \ --zone us-central1-b
Agrega las instancias
www-1
ywww-2
:gcloud compute instance-groups unmanaged add-instances us-resources-w \ --instances www-1,www-2 \ --zone us-central1-b
Crea el grupo de instancias
europe-resources-w
:gcloud compute instance-groups unmanaged create europe-resources-w \ --zone europe-west1-b
Agrega las instancias
www-3
ywww-4
:gcloud compute instance-groups unmanaged add-instances europe-resources-w \ --instances www-3,www-4 \ --zone europe-west1-b
Configura el servicio del balanceo de cargas
La funcionalidad del balanceador de cargas implica varios servicios conectados. En esta sección, configurarás y conectarás los servicios. Los servicios que crearás son los siguientes:
- Puertos con nombre, que el balanceador de cargas usa para dirigir el tráfico a grupos de instancias.
- Una verificación de estado, que consulta tus instancias para ver si están en buen estado. El balanceador de cargas envía tráfico solo a instancias en buen estado.
- Servicios de backend, que supervisan el uso y el estado de la instancia. Los servicios de backend saben si las instancias del grupo de instancias pueden recibir tráfico. Si las instancias no pueden recibir tráfico, el balanceador de cargas redirecciona el tráfico, siempre que las instancias en otros lugares tengan capacidad suficiente. Un backend define la capacidad de los grupos de instancias que contiene (uso máximo de CPU o consultas por segundo máximas).
- Un Mapa de URL, que analiza la URL de la solicitud y puede reenviar solicitudes a servicios de backend específicos en función del host y la ruta de la solicitud URL. En este instructivo, debido a que no se usan reenvíos basados en el contenido, el mapa de URL solo contiene la asignación predeterminada.
- Un proxy de destino, que recibe la solicitud del usuario y la reenvía al mapa de URL.
- Dos reglas de reenvío global, una para IPv4 y, también, una destinada a IPv6, que contienen los recursos de la dirección IP externa global. Las reglas de reenvío global reenvían la solicitud entrante al proxy de destino.
Crea el balanceador de cargas
En esta sección, crearás el balanceador de cargas y configurarás un servicio de backend predeterminado para controlar tu tráfico. También crearás una verificación de estado.
Console
Inicia tu configuración
En la consola de Google Cloud, ve a la página Balanceo de cargas.
- Haz clic en Crear balanceador de cargas.
- En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
- En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
- En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
- En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones externo global y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- Establece el Nombre del balanceador de cargas como
web-map
.
Configura el balanceador de cargas
- En el panel izquierdo de la página Crear balanceador de cargas de aplicaciones externo global, haz clic en Configuración de backend.
- En la lista Crear o seleccionar servicios y depósitos de backend, selecciona Servicios de backend y, a continuación, Crear un servicio de backend. Verás el cuadro de diálogo Crear servicio de backend.
- Establece el Nombre como
web-map-backend-service
. - Configura el Protocolo. En el protocolo HTTP, deja los valores configurados como predeterminados.
- En Tipo de backend, selecciona Grupos de instancias.
- En Backends, configura el Grupo de instancias como
us-resources-w
. - Haz clic en Agregar backend.
- Selecciona el grupo de instancias europe-resources-w y, luego, haz lo siguiente:
- Para el tráfico HTTP entre el balanceador de cargas y las instancias, asegúrate de que los Números de puerto estén establecidos en
80
. - Deja los valores predeterminados para el resto de los campos.
- Para el tráfico HTTP entre el balanceador de cargas y las instancias, asegúrate de que los Números de puerto estén establecidos en
- Haz clic en Listo.
- En Verificación de estado, selecciona Crear una verificación de estado o Crear otra verificación de estado.
- Configura los parámetros de verificación de estado siguientes:
- Nombre:
http-basic-check
- Protocolo:
HTTP
- Puerto:
80
- Nombre:
- Haz clic en Crear.
gcloud
Para cada grupo de instancias, define un servicio HTTP y asigna un nombre de puerto al puerto relevante:
gcloud compute instance-groups unmanaged set-named-ports us-resources-w \ --named-ports http:80 \ --zone us-central1-b gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \ --named-ports http:80 \ --zone europe-west1-b
Crea una verificación de estado mediante el siguiente comando:
gcloud compute health-checks create http http-basic-check \ --port 80
Crea un servicio de backend mediante el siguiente comando:
gcloud compute backend-services create web-map-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
Configura la marca
--protocol
comoHTTP
, ya que usas HTTP para ir a las instancias. Para la verificación de estado, usa la verificación de estadohttp-basic-check
que creaste antes.Agrega tus grupos de instancias como backends a los servicios de backend:
gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group us-resources-w \ --instance-group-zone us-central1-b \ --global gcloud compute backend-services add-backend web-map-backend-service \ --balancing-mode UTILIZATION \ --max-utilization 0.8 \ --capacity-scaler 1 \ --instance-group europe-resources-w \ --instance-group-zone europe-west1-b \ --global
Configura reglas de host y ruta
Console
En el panel izquierdo de la página Crear balanceador de cargas de aplicaciones externo global, haz clic en Reglas de host y ruta.
Para este instructivo, no necesitas configurar ninguna la regla de host ni las rutas, ya que todo el tráfico irá a la regla predeterminada. Por lo tanto, puedes aceptar los valores predeterminados propagados previamente.
gcloud
Crea un mapa de URL predeterminado que dirija todas las solicitudes entrantes a todas tus instancias:
gcloud compute url-maps create web-map \ --default-service web-map-backend-service
Crea un proxy HTTP de destino para enrutar las solicitudes al mapa de URL:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map
Configura el frontend y finaliza tu configuración
Console
- En el panel izquierdo de la página Crear balanceador de cargas de aplicaciones externo global, haz clic en Configuración de frontend.
- Establece el Nombre como
http-cr-rule
. - Establece el Protocolo en
HTTP
. - Establece la Versión IP en
IPv4
. - En la lista Dirección IP, selecciona
lb-ip-cr
, la dirección que creaste antes. - Confirma que el Puerto esté establecido en
80
. - Haz clic en Listo.
- Haz clic en Agregar IP y puerto de frontend.
- Establece el Nombrecomo
http-cr-ipv6-rule
. - En Protocolo, selecciona HTTP.
- Establece la Versión IP en
IPv6
. - En la lista Dirección IP, selecciona
lb-ipv6-cr
, la otra dirección que creaste antes. - Confirma que el Puerto esté establecido en
80
. - Haz clic en Crear.
- Haz clic en Listo.
- En el panel izquierdo de la página Crear balanceador de cargas de aplicaciones externo global, haz clic en Revisar y finalizar.
- Compara tu configuración con lo que pretendías crear.
Si la configuración es correcta, haz clic en Crear.
Volverás a las páginas del balanceo de cargas. Después de crear el balanceador de cargas, aparecerá una marca de verificación verde junto a este, lo que indica que está en ejecución.
gcloud
Obtén las direcciones IP estáticas que creaste para tu balanceador de cargas. Toma nota de ellos, ya que los usarás en el paso siguiente.
gcloud compute addresses list
Crea dos reglas de reenvío globales a fin de enrutar las solicitudes entrantes al proxy, una para IPv4 y otra destinada a IPv6. Reemplaza lb_ip_address en el comando por la dirección IPv4 estática que creaste y reemplaza lb_ipv6_address por la dirección IPv6 también que creaste.
gcloud compute forwarding-rules create http-cr-rule \ --address lb_ip_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80 gcloud compute forwarding-rules create http-cr-ipv6-rule \ --address lb_ipv6_address \ --global \ --target-http-proxy http-lb-proxy \ --ports 80
Una vez que creas las reglas de reenvío globales, la configuración puede tardar varios minutos en propagarse.
Prueba la configuración
En esta sección, enviarás una solicitud HTTP a tu instancia para verificar que la configuración del balanceo de cargas funcione.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Selecciona el balanceador de cargas con el nombre
web-map
para ver los detalles del balanceador de cargas que acabas de crear.En la sección Backend de la página, confirma que las instancias estén en buen estado. Para esto, mira la columna Buen estado.
La información sobre el estado de las instancias puede tardar unos minutos en aparecer en la pantalla.
Una vez que puedas ver que las instancias están en buen estado, copia el valor IP:Port de la sección Frontend y pégalo en tu navegador.
Allí, verás tu página de contenido predeterminada.
gcloud
Obtén las direcciones IP de tus reglas de reenvío globales y toma nota para el paso siguiente:
gcloud compute forwarding-rules list
Usa el comando
curl
para probar la respuesta de varias URL de tus servicios. Prueba tanto IPv4 como IPv6 En IPv6, debes encerrar la dirección entre[]
, comohttp://[2001:DB8::]/
.curl http://ipv4-address curl -g -6 "http://[ipv6-address]/"
Resumen
Tus VM pueden entregar tráfico a Internet y puedes obtener datos de Internet. También puedes acceder a ellas mediante SSH a fin de realizar tareas de administración. Toda esta funcionalidad solo se logra mediante direcciones IP privadas, lo que ayuda a protegerlas de ataques directos, ya que no expone las direcciones IP a las que se puede acceder desde Internet.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
Borra el proyecto
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
¿Qué sigue?
- En Crea Cloud Load Balancing, se muestra cómo crear balanceadores de cargas de HTTPS y HTTP2.
- En Crea un clúster privado, se muestra cómo configurar un clúster privado de Google Kubernetes Engine.
- En Usa IAP para el redireccionamiento de TCP, se describen otros usos de IAP de TCP, como RDP o la ejecución remota de comandos.
- En Usa Cloud NAT, se proporcionan ejemplos de Google Kubernetes Engine y se describe cómo modificar los detalles de los parámetros.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.