En este documento, se describe cómo migrar recursos de la infraestructura del balanceador de cargas de aplicaciones clásico a la infraestructura del balanceador de cargas de aplicaciones externo global.
Antes de comenzar
Asegúrate de que tu configuración cumpla con los siguientes requisitos.
Configura un proyecto predeterminado
Console
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID
por el proyecto que usas para esta guía.
Permisos
Para seguir este documento, debes tener permisos para crear instancias de máquina virtual (VM) de Compute Engine, reglas de firewall, direcciones IP reservadas y buckets de Cloud Storage en un proyecto de Google Cloud. Debes ser propietario o editor de un proyecto o tener las siguientes funciones de IAM de Compute Engine:
Tarea | Rol requerido |
---|---|
Crea instancias | Rol de administrador de instancias de Compute (beta) (roles/compute.instanceAdmin )
|
Agregar y quitar reglas de firewall | Rol de administrador de seguridad de Compute (roles/compute.securityAdmin )
|
Crear componentes del balanceador de cargas | Rol Compute Network Admin (roles/compute.networkAdmin )
|
Crear un proyecto (opcional) | Rol de creador del proyecto (roles/resourcemanager.projectCreator )
|
Crea buckets de Cloud Storage | Función de administrador de objetos de almacenamiento (roles/storage.objectAdmin )
|
Si deseas obtener más información, consulta las siguientes guías:
- Administra el control de acceso para Cloud Load Balancing con IAM
- Condiciones de IAM para las reglas de reenvío
Crea recursos del balanceador de cargas de aplicaciones clásico
En este documento, crearás los siguientes recursos del balanceador de cargas de aplicaciones clásico y, luego, los migrarás a la infraestructura del balanceador de cargas de aplicaciones externo global.
- Un grupo de instancias administrado con VMs.
- Un bucket de Cloud Storage
- Un balanceador de cargas de aplicaciones clásico HTTP con el grupo de instancias administrado y el bucket de Cloud Storage como backends
Crea un grupo de instancias administrado
En esta sección, se describe cómo crear un grupo de instancias administrado con las VMs de Linux que ejecutan Apache. Un grupo de instancias administrado crea cada una de sus instancias administradas según las plantillas de instancias que especifiques.
Crea una plantilla de instancias
Console
En la consola de Google Cloud, ve a la página Plantillas de instancia.
Haz clic en Crear plantilla de instancias.
En Nombre, ingresa
lb-backend-template
.En Región, selecciona
REGION
.En la sección Disco de arranque, asegúrate de que la imagen del disco de arranque esté configurada en una imagen de Debian, como Debian GNU/Linux 12 (bookworm). En estas instrucciones, se usan comandos que solo están disponibles en Debian, como
apt-get
.Haz clic en Opciones avanzadas.
Haz clic en Herramientas de redes y, en el campo Etiquetas de red, ingresa
allow-health-check
.Haz clic en Administración y, luego, ingresa 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://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Haz clic en Crear.
gcloud
Ejecuta el comando gcloud compute instance-templates create
para crear la plantilla.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea el grupo de instancias administrado
Console
En la consola de Google Cloud, ve a la página Grupos de instancias.
Haz clic en Crear grupo de instancias.
Selecciona Nuevo grupo de instancias administrado (sin estado).
En Nombre, ingresa
lb-backend-example
.En Plantilla de instancias, selecciona la plantilla de instancias
lb-backend-template
.En Ubicación, selecciona Zona única.
En Región, selecciona
REGION
.En Zona, selecciona
ZONE
.En Modo de ajuste de escala automático, selecciona Activado: agrega y quita instancias del grupo.
Establece Cantidad mínima de instancias y Cantidad máxima de instancias en
2
.En la sección Asignación de puertos, haz clic en Agregar puerto.
En el nombre de puerto, ingresa
http
. En el número de puerto, ingresa80
.Haz clic en Crear.
gcloud
Ejecuta el comando gcloud compute instance-groups managed create
para crear el grupo de instancias administrado en función de la plantilla.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Ejecuta el siguiente comando para agregar un puerto con nombre al grupo de instancias:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Configura una regla de firewall
En esta sección, crearás la regla de firewall fw-allow-health-check
y usarás la etiqueta de destino allow-health-check
para identificar las VMs. Esta es una regla de entrada que permite el tráfico de los sistemas de verificación de estado de Google Cloud (130.211.0.0/22
y 35.191.0.0/16
).
Console
En la consola de Google Cloud, ve a la página Políticas de firewall.
Haz clic en Crear regla de firewall.
En Nombre, ingresa
fw-allow-health-check
.En Red, selecciona default.
En Destinos, selecciona Etiquetas de destino especificadas.
En el campo Etiquetas de destino, ingresa
allow-health-check
.Configura Filtro de fuente como Rangos de IPv4.
Establece Rangos de IPv4 de origen en
130.211.0.0/22
y35.191.0.0/16
.En la sección Protocolos y puertos, selecciona Protocolos y puertos especificados.
Selecciona la casilla de verificación TCP y, luego, escribe
80
para el número de puerto.Haz clic en Crear.
gcloud
Ejecuta el comando gcloud compute firewall-rules create
para crear la regla de firewall.
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Cree un bucket de Cloud Storage
En esta sección, crearás un bucket de Cloud Storage para que el balanceador de cargas acceda. Para implementaciones de producción, te recomendamos que elijas un bucket multirregión, que replica de manera automática los objetos en varias regiones de Google Cloud. Esto puede mejorar la disponibilidad de tu contenido y la tolerancia a errores en tu aplicación.
Console
En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Haz clic en Crear.
En el cuadro Asigna un nombre al bucket, ingresa
storage-backend-bucket
y haz clic en Continuar.Haz clic en Elige dónde almacenar tus datos.
Establece Tipo de ubicación como Región y especifica
REGION
.Haz clic en Crear.
Opcional: Si ves el diálogo Se impedirá el acceso público, desmarca la casilla de verificación Aplicar la prevención de acceso público a este bucket y haz clic en Confirmar.
gcloud
Ejecuta el comando gcloud storage buckets create
para crear el bucket:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Transfiere contenido a tus buckets de Cloud Storage
Para probar el bucket después de crear el balanceador de cargas, copia el siguiente archivo de imagen de un bucket público de Cloud Storage en tu propio bucket de Cloud Storage.
gcloud
Haz clic en
Activate Cloud Shell (Activar Cloud Shell).Ejecute los siguientes comandos en Cloud Shell:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
En la consola de Google Cloud, haz clic en Actualizar en la página de detalles del bucket para verificar que el archivo se haya copiado correctamente.
Haz que tu bucket de Cloud Storage sea legible de forma pública
Cuando haces que un bucket de Cloud Storage sea legible de forma pública, cualquier persona en Internet puede enumerar y ver sus objetos y ver sus metadatos (sin incluir las LCA). No incluyas información sensible en los buckets públicos.
Para reducir la probabilidad de exposición accidental de información sensible, no almacenes objetos públicos y datos sensibles en el mismo bucket.
Console
Si quieres otorgar a todos los usuarios acceso para ver objetos en tus buckets, sigue estos pasos:
En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.
Haz clic en el nombre de
storage-backend-bucket
y, luego, en la pestaña Permisos.Haz clic en Otorgar acceso.
En el cuadro Principales nuevas, ingresa
allUsers
.En el cuadro Selecciona un rol, selecciona Cloud Storage > Visualizador de objetos de Storage.
Haz clic en Guardar.
Haz clic en Permitir acceso público.
gcloud
Ejecuta el comando gcloud storage buckets add-iam-policy-binding
para otorgar a todos los usuarios acceso para ver objetos en tus buckets:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
Reservar una dirección IP externa
Ahora que tus instancias están en funcionamiento, configura una dirección IP externa, estática y global que tus clientes usarán para llegar al balanceador de cargas.
Console
En la consola de Google Cloud, ve a la página Direcciones IP externas.
Para reservar una dirección IPv4, haz clic en Reservar dirección IP estática externa.
En Nombre, ingresa
lb-ipv4-1
.En Nivel de servicio de red, establece Premium.
Configura Versión de IP como IPv4.
Establece Tipo en Global.
Haz clic en Reservar.
gcloud
Para reservar una dirección IP externa, ejecuta el siguiente comando:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Para tomar nota de la dirección IPv4 que se reservó, ejecuta el siguiente comando:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Configura el balanceador de cargas de aplicaciones clásico
En esta sección, usarás HTTP (frontend) entre el cliente y el balanceador de cargas.
Console
Inicia la 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 clásico y haz clic en Siguiente.
- Haz clic en Configurar.
Configuración básica
- En el campo Nombre del balanceador de cargas, ingresa
web-map-http
. - Haz clic en Configuración de frontend, configura los siguientes campos y, luego, haz clic en Listo.
- Protocolo: HTTP.
- Versión de IP: IPv4
- Dirección IP:
lb-ipv4-1
- Puerto:
443
- Haga clic en Configuración de backend.
- En Servicios y buckets de backend, haz clic en Crear un servicio de backend y, luego, haz lo siguiente:
- Configura los siguientes campos:
- Nombre:
web-backend-service
- Protocolo: HTTP
- Puerto con nombre: http
- Nombre:
- En la sección Backends > Nuevo backend, configura los siguientes campos y, luego, haz clic en Listo.
- Grupo de instancias: lb-backend-example
- Números de puerto:
80
- En Verificación de estado, haz clic en Crear una verificación de estado, especifica los siguientes campos y, luego, haz clic en Guardar.
- Nombre:
http-basic-check
- Protocolo: HTTP
- Nombre:
- En la sección Registro, selecciona la casilla de verificación Habilitar registro.
- Haz clic en Crear.
- Configura los siguientes campos:
- Haz clic en Aceptar.
- En Servicios y buckets de backend, haz clic en Crear un bucket de backend, configura los siguientes campos y, luego, haz clic en Crear.
- Nombre del bucket de backend:
cats
- Bucket de Cloud Storage:
storage-backend-bucket
- Nombre del bucket de backend:
- Haz clic en Aceptar.
- Haz clic en Reglas de host y de ruta de acceso.
- En
cats
, ingresa*
en el campo Host 2 y/never-fetch/*
en el campo Ruta 2. - Haga clic en Revisar y finalizar.
- Revisa la configuración del balanceador de cargas.
- Haz clic en Crear.
gcloud
Crea una verificación de estado.
gcloud compute health-checks create http http-basic-check \ --port 80
Crea un servicio de backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --global
Agrega tu grupo de instancias como backend al servicio de backend.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global
Agrega un bucket de backend.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Crea un mapa de URL para enrutar las solicitudes entrantes al servicio de backend y al bucket de backend.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Crea un proxy HTTP de destino para enrutar las solicitudes a los mapas de URL.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
Crea una regla de reenvío global para enrutar las solicitudes entrantes al proxy.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Prueba el tráfico enviado a las instancias
Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico a la regla de reenvío y ver cómo este se dispersa en las diferentes instancias.
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en
web-map-http
.En la sección Frontend, toma nota del puerto IP del balanceador de cargas.
Para probar la instancia de backend, ingresa
http://IP_ADDRESS
en la barra de direcciones del navegador web.Tu navegador renderiza una página con contenido que muestra el nombre de la instancia que entregó la página, junto con su zona (por ejemplo,
Page served from: lb-backend-example-xxxx
).Para probar el bucket de backend, ingresa
http://IP_ADDRESS/never-fetch/three-cats.jpg
en la barra de direcciones del navegador web.Tu navegador renderiza la imagen.
Migra recursos del balanceador de cargas de aplicaciones clásico
En esta sección, migrarás el servicio de backend, el bucket de backend y la regla de reenvío a la infraestructura del balanceador de cargas de aplicaciones externo global.
Migra el servicio de backend
Prepara el servicio de backend para la migración.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Espera un momento (alrededor de seis minutos).
Envía parte del tráfico, por ejemplo, el 10%, al servicio de backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Espera un momento (alrededor de seis minutos).
Una vez que el recurso esté listo, enviará el 10% de las solicitudes a la infraestructura del balanceador de cargas de aplicaciones externo global y el 90% de las solicitudes a la infraestructura del balanceador de cargas de aplicaciones clásico.
Accede al servicio de backend.
Ingresa
http://IP_ADDRESS
en la barra de direcciones del navegador web. Si ves el mensajePage served from: lb-backend-example-xxxx
, ejecuta el siguiente comando para aumentar el porcentaje.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Repite el proceso hasta alcanzar el 100%.
Opcional: Verifica los registros del servicio de backend.
Completa la prueba y envía todo el tráfico al servicio de backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
Opcional: Verifica los registros del servicio de backend.
Cambia el esquema del servicio de backend a
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Espera un tiempo (aproximadamente seis minutos) hasta que el servicio de backend se migre por completo a la infraestructura global externa del balanceador de cargas de aplicaciones.
Opcional: Verifica los registros del servicio de backend. Verás que el esquema de balanceo de cargas es
EXTERNAL_MANAGED
.
Migra el bucket de backend
Prepara el bucket de backend para la migración.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Espera un momento (alrededor de seis minutos).
Envía parte del tráfico, por ejemplo, el 10%, al bucket de backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Espera un momento (alrededor de seis minutos).
Una vez que el recurso esté listo, enviará el 10% de las solicitudes a la infraestructura del balanceador de cargas de aplicaciones externo global y el 90% de las solicitudes a la infraestructura del balanceador de cargas de aplicaciones clásico.
Accede al bucket de backend.
Ingresa
http://IP_ADDRESS/never-fetch/three-cats.jpg
en la barra de direcciones del navegador web. Si ves la imagen de gatos, ejecuta el siguiente comando para aumentar el porcentaje. Repite el proceso hasta que alcances el 100%.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
Opcional: Revisa los registros del bucket de backend.
Completa la prueba y envía todo el tráfico al bucket de backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
Opcional: Revisa los registros del bucket de backend.
Migra la regla de reenvío
Cambia el esquema de la regla de reenvío a
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Espera un tiempo (aproximadamente seis minutos) hasta que la regla de reenvío se migre por completo a la infraestructura del balanceador de cargas de aplicaciones externo global.
Opcional: Revisa los registros de la regla de reenvío. Verás que el esquema de balanceo de cargas es
EXTERNAL_MANAGED
.