Migra recursos del balanceador de cargas de aplicaciones clásico al balanceador de cargas de aplicaciones externo global

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. 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:

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

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

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

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

  4. En Región, selecciona REGION.

  5. 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.

  6. Haz clic en Opciones avanzadas.

  7. Haz clic en Herramientas de redes y, en el campo Etiquetas de red, ingresa allow-health-check.

  8. 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
    
  9. 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

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

    Ir a Grupos de instancias

  2. Haz clic en Crear grupo de instancias.

  3. Selecciona Nuevo grupo de instancias administrado (sin estado).

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

  5. En Plantilla de instancias, selecciona la plantilla de instancias lb-backend-template.

  6. En Ubicación, selecciona Zona única.

  7. En Región, selecciona REGION.

  8. En Zona, selecciona ZONE.

  9. 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.

  10. En la sección Asignación de puertos, haz clic en Agregar puerto.

  11. En el nombre de puerto, ingresa http. En el número de puerto, ingresa 80.

  12. 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

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

    Ir a Políticas de firewall

  2. Haz clic en Crear regla de firewall.

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

  4. En Red, selecciona default.

  5. En Destinos, selecciona Etiquetas de destino especificadas.

  6. En el campo Etiquetas de destino, ingresa allow-health-check.

  7. Configura Filtro de fuente como Rangos de IPv4.

  8. Establece Rangos de IPv4 de origen en 130.211.0.0/2235.191.0.0/16.

  9. En la sección Protocolos y puertos, selecciona Protocolos y puertos especificados.

  10. Selecciona la casilla de verificación TCP y, luego, escribe 80 para el número de puerto.

  11. 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

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets de Cloud Storage

  2. Haz clic en Crear.

  3. En el cuadro Asigna un nombre al bucket, ingresa storage-backend-bucket y haz clic en Continuar.

  4. Haz clic en Elige dónde almacenar tus datos.

  5. Establece Tipo de ubicación como Región y especifica REGION.

  6. Haz clic en Crear.

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

  1. Haz clic en Activate Cloud Shell (Activar Cloud Shell).

  2. 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:

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets de Cloud Storage

  2. Haz clic en el nombre de storage-backend-bucket y, luego, en la pestaña Permisos.

  3. Haz clic en Otorgar acceso.

  4. En el cuadro Principales nuevas, ingresa allUsers.

  5. En el cuadro Selecciona un rol, selecciona Cloud Storage > Visualizador de objetos de Storage.

  6. Haz clic en Guardar.

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

  1. En la consola de Google Cloud, ve a la página Direcciones IP externas.

    Ir a Direcciones IP externas

  2. Para reservar una dirección IPv4, haz clic en Reservar dirección IP estática externa.

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

  4. En Nivel de servicio de red, establece Premium.

  5. Configura Versión de IP como IPv4.

  6. Establece Tipo en Global.

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

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

    Ir a Balanceo de cargas

  2. Haz clic en Crear balanceador de cargas.
  3. En Tipo de balanceador de cargas, selecciona Balanceador de cargas de aplicaciones (HTTP/HTTPS) y haz clic en Siguiente.
  4. En Orientado al público o interno, selecciona Orientado al público (externo) y haz clic en Siguiente.
  5. En Implementación global o de una sola región, selecciona Mejor para cargas de trabajo globales y haz clic en Siguiente.
  6. En Generación de balanceadores de cargas, selecciona Balanceador de cargas de aplicaciones clásico y haz clic en Siguiente.
  7. Haz clic en Configurar.

Configuración básica

  1. En el campo Nombre del balanceador de cargas, ingresa web-map-http.
  2. 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
  3. Haga clic en Configuración de backend.
  4. En Servicios y buckets de backend, haz clic en Crear un servicio de backend y, luego, haz lo siguiente:
    1. Configura los siguientes campos:
      • Nombre: web-backend-service
      • Protocolo: HTTP
      • Puerto con nombre: http
    2. 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
    3. 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
    4. En la sección Registro, selecciona la casilla de verificación Habilitar registro.
    5. Haz clic en Crear.
  5. Haz clic en Aceptar.
  6. 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
  7. Haz clic en Aceptar.
  8. Haz clic en Reglas de host y de ruta de acceso.
  9. En cats, ingresa * en el campo Host 2 y /never-fetch/* en el campo Ruta 2.
  10. Haga clic en Revisar y finalizar.
  11. Revisa la configuración del balanceador de cargas.
  12. Haz clic en Crear.

gcloud

  1. Crea una verificación de estado.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. Crea un servicio de backend.

    gcloud compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --enable-logging \
        --logging-sample-rate=1.0 \
        --enable-cdn \
        --global
    
  3. 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
    
  4. Agrega un bucket de backend.

    gcloud compute backend-buckets create cats \
        --gcs-bucket-name=storage-backend-bucket
    
  5. 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"
    
  6. 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
    
  7. 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

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

    Ir a Balanceo de cargas

  2. Haz clic en web-map-http.

  3. En la sección Frontend, toma nota del puerto IP del balanceador de cargas.

  4. 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).

  5. 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

  1. 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).

  2. 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.

  3. Accede al servicio de backend.

    Ingresa http://IP_ADDRESS en la barra de direcciones del navegador web. Si ves el mensaje Page 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%.

  4. Opcional: Verifica los registros del servicio de backend.

  5. 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
    
  6. Opcional: Verifica los registros del servicio de backend.

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

  8. 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

  1. 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).

  2. 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.

  3. 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
    
  4. Opcional: Revisa los registros del bucket de backend.

  5. 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
    
  6. Opcional: Revisa los registros del bucket de backend.

Migra la regla de reenvío

  1. 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.

  2. Opcional: Revisa los registros de la regla de reenvío. Verás que el esquema de balanceo de cargas es EXTERNAL_MANAGED.

¿Qué sigue?