Usar el ajuste de escala automático para aplicaciones altamente escalables


En este instructivo, se explica cómo usar el ajuste de escala automático para ajustar de forma automática el número de instancias de VM que alojan tu aplicación, lo que permite que esta se adapte a cantidades variables de tráfico.

Para usar el ajuste de escala automático, aloja tu aplicación en un grupo de instancias administrado. Un grupo de instancias administrado es una colección de instancias que ejecutan la misma aplicación y se pueden administrar como una sola entidad. Cuando un grupo de instancias administrado tiene habilitado el ajuste de escala automático, la cantidad de VM en el grupo de instancias aumenta (escala horizontalmente) o disminuye (disminución de la escala) de forma automática según el valor objetivo que especificas en tu política de ajuste de escala automático.

En este instructivo, se incluyen pasos detallados para iniciar una aplicación web en un grupo de instancias administrado, establecer el ajuste de escala automático, configurar el acceso a la red y observar el ajuste de escala automático mediante la simulación de aumentos y disminuciones en la carga. Según la experiencia que tengas con estas funciones, te llevará unos 20 minutos completar este instructivo.

Objetivos

  • Iniciar una aplicación web de demostración en un grupo de instancias administrado
  • Observar los efectos del ajuste de escala automático mediante la simulación de aumentos y disminuciones en el tráfico

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Compute Engine

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

  1. 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.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

Arquitectura de aplicaciones

En la aplicación se incluyen los siguientes componentes de Compute Engine:

Inicia la aplicación web

En este instructivo, se usa una aplicación web almacenada en GitHub. Si deseas obtener más información sobre cómo se implementó la aplicación, consulta el repositorio GoogleCloudPlatform/python-docs-samples en GitHub.

Inicia la aplicación web en cada VM de un grupo de instancias administrado mediante la inclusión de una secuencia de comandos de inicio en una plantilla de instancias. Para permitir el tráfico HTTP a la aplicación web, crea una regla de firewall.

Crea una regla de firewall

Crea una regla de firewall para permitir el tráfico HTTP a la aplicación web:

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

    Ir a Firewalls

  2. Haz clic en Crear regla de firewall.

  3. En Nombre, ingresa default-allow-http.

  4. Configura Red como default.

  5. Configura Objetivos para seleccionar Specified target tags.

  6. En Etiquetas de destino, ingresa http-server.

  7. Establece Filtro fuente como IP ranges.

  8. En Rangos de IP de origen, ingresa 0.0.0.0/0

    para permitir el acceso a todas las direcciones IP

  9. En Puertos y protocolos, selecciona Protocolos y puertos especificados. Elige tcp y, luego, ingresa 80 para permitir el acceso al tráfico HTTP.

  10. Haz clic en Crear.

Crea una plantilla de instancias

Crea una plantilla de instancias que inicie la aplicación web de demostración durante el inicio:

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

    Ir a Plantillas de instancia

  2. Haga clic en Crear plantilla de instancias.

  3. En Nombre, ingresa autoscaling-web-app-template.

  4. En Configuración de máquina, establece el Tipo de máquina en e2-standard-2.

  5. En Firewall, selecciona la casilla de verificación Permitir tráfico HTTP. Con esto se aplica la etiqueta de herramientas de redes http-server a cada instancia creada a partir de esta plantilla.

  6. Haz clic en Herramientas de redes, discos, seguridad, administración, usuario único para ver la configuración avanzada.

  7. En la pestaña Administración, busca Automatización y, luego, ingresa la siguiente Secuencia de comandos de inicio:

    sudo apt update && sudo apt -y install git gunicorn3 python3-pip
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/compute/managed-instances/demo
    sudo pip3 install -r requirements.txt
    sudo gunicorn3 --bind 0.0.0.0:80 app:app --daemon
    

    Esta secuencia de comandos hace que cada instancia ejecute la aplicación web durante el inicio.

  8. Haz clic en Crear.

Crea un grupo de instancias administrado

Crea un grupo de instancias regional para comenzar a ejecutar la aplicación web:

  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 para crear un grupo de instancias nuevo.

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

  4. En Nombre, ingresa autoscaling-web-app-group.

  5. En Plantilla de instancias, selecciona autoscaling-web-app-template.

  6. En Ubicación, selecciona Varias zonas.

  7. En Región, seleccione us-central1.

  8. En Zonas, selecciona las siguientes zonas de la lista desplegable:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  9. Configura el ajuste de escala automático para el grupo de instancias:

    1. En Modo de ajuste de escala automático, selecciona Activar: agregar y quitar instancias al grupo.
    2. Establece la Cantidad mínima de instancias en 3.

    3. Establece la Cantidad máxima de instancias en 6.

    4. Establece el Período de inicialización en 120 segundos.

    5. En Métricas de ajuste de escala automático, selecciona Uso de CPU como el tipo de métrica. Para obtener más información sobre las métricas de ajuste de escala automático, consulta Política de ajuste de escala automático.

    6. Establece el Uso de CPU objetivo en 60.

    7. Haga clic en Listo.

  10. En Reparación automática, selecciona Sin verificación de estado en la lista desplegable Verificación de estado.

  11. Haga clic en Crear. Esto te redirecciona a la página de Grupos de instancias.

  12. Para verificar que tus instancias estén en ejecución, haz lo siguiente:

    1. En la página Grupos de instancias en la consola de Google Cloud, haz clic en autoscaling-web-app-group para ver las instancias de ese grupo.
    2. En IP externa haz clic en una dirección IP para conectar esa instancia. Se abrirá una nueva pestaña del navegador que muestra la aplicación web de demostración.

      Aplicación web de demostración, que muestra detalles sobre la instancia y tiene botones de acción.

      Cuando termines, cierra la pestaña del navegador correspondiente a la aplicación web de demostración.

Observa el ajuste de escala automático

Para obtener más información sobre el comportamiento del ajuste de escala automático, consulta cómo comprender las decisiones sobre el ajuste de escala automático.

Supervisa el ajuste de escala automático

El grupo de instancias que creaste usa una política de ajuste de escala automático basada en el uso de CPU. Esto significa que el ajuste de escala automático aumenta o disminuye la escala del grupo según sea necesario para mantener el uso de CPU objetivo de 60%.

Para supervisar el tamaño y el uso de CPU promedio de tu grupo de instancias, usa los gráficos de ajuste de escala automático en la consola de Google Cloud:

  1. En la página Grupos de instancias del grupo de instancias autoscaling-web-app-group, haz clic en la pestaña Supervisión.
  2. Puedes supervisar el ajuste de escala automático desde el gráfico Tamaño del grupo. En el gráfico, se muestran las instancias, que representa la cantidad de instancias de VM del grupo a lo largo del tiempo.
  3. Opcional: Para supervisar la capacidad de ajuste de escala automático en comparación con el uso, consulta el gráfico Uso del escalador automático (CPU). El gráfico muestra la Utilización, que es el uso total de CPU de las instancias de VM en el grupo, y laCapacidad, que es el uso de CPU objetivo acumulativo del grupo (uso de CPU objetivo multiplicado por la cantidad de instancias de VM).

    El ajuste de escala automático intenta hacer que la Capacidad coincida con el Uso mediante cambios en la cantidad de Instancias, siempre que sea posible.

Mantén abierta esta ventana.

Simula el escalamiento horizontal

El escalamiento horizontal se produce cuando el uso de CPU promedio del grupo de instancias es bastante mayor que el valor objetivo. Durante el escalamiento horizontal, el escalador automático aumenta el tamaño del grupo de instancias de forma gradual hasta que el uso de CPU disminuye al valor de uso de CPU objetivo o hasta que el tamaño del grupo de instancias sea igual a la cantidad máxima de instancias, que se estableció en 6.

Para activar el escalamiento horizontal, aumenta el uso de CPU de tus instancias mediante estos pasos:

  1. En la consola de Google Cloud, abre Cloud Shell.

    Abra Cloud Shell

    Cloud Shell se abre en la parte inferior de la consola de Google Cloud. La sesión puede tardar unos segundos en inicializarse.

  2. Crea una variable Bash local para el ID del proyecto:

    export PROJECT_ID=[PROJECT_ID]
    

    donde PROJECT_ID es el ID del proyecto actual, que se muestra en cada nueva línea en Cloud Shell:

    user@cloudshell:~ ([PROJECT_ID])$
    
  3. Ejecuta la siguiente secuencia de comandos Bash. Esta secuencia de comandos hace que las instancias de la aplicación web de demostración tengan una carga mayor, lo que aumenta el uso de CPU. Después de unos minutos, el uso de CPU superará el valor objetivo, lo que provocará que el ajuste de escala automático aumente el tamaño del grupo de instancias.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating high load for instance $NAME"
      curl -q -s "http://$IP/startLoad" >/dev/null --retry 2
    done
    
  4. Abre la pestaña Supervisión en la consola de Google Cloud.

    Después de unos minutos, en la pestaña Monitoring se mostrará que aumentó el Uso de CPU, lo que activa el ajuste de escala automático para incrementar la Capacidad mediante el aumento de la cantidad de Instancias.

    También puedes notar que ahora hay 6 instancias en la pestaña Descripción general.

Mantén abiertas ambas ventanas.

Simula la disminución del escalamiento

La disminución del escalamiento se produce cuando el uso de CPU promedio del grupo de instancias es bastante menor que el valor objetivo. Durante la disminución del escalamiento, el escalador automático disminuye de forma gradual el tamaño del grupo de instancias hasta que el uso de CPU aumenta hasta el uso de CPU objetivo o hasta que el tamaño del grupo de instancias sea igual a la cantidad mínima de instancias, que se estableció en 3.

Para activar la disminución de la escala, disminuye el uso de CPU de tus instancias:

  1. Ejecuta la siguiente secuencia de comandos Bash. Esta secuencia de comandos hace que las instancias de la aplicación web de demostración tengan una carga menor, lo que disminuye el uso de CPU. Después de unos minutos, el uso de CPU caerá por debajo del valor objetivo, lo que provocará que el escalador automático disminuya el tamaño del grupo de instancias.

    export MACHINES=$(gcloud --project=$PROJECT_ID compute instances list --format="csv(name,networkInterfaces[0].accessConfigs[0].natIP)" | grep "autoscaling-web-app-group")
    for i in $MACHINES;
    do
      NAME=$(echo "$i" | cut -f1 -d,)
      IP=$(echo "$i" | cut -f2 -d,)
      echo "Simulating low load for instance $NAME"
      curl -q -s "http://$IP/stopLoad" >/dev/null --retry 2
    done
    
  2. Abre la pestaña Supervisión en la consola de Google Cloud.

    Después de unos minutos, la pestaña Supervisión mostrará que el Uso de CPU disminuyó. Después del período de estabilización, que verifica que la carga siempre sea menor, el ajuste de escala automático disminuye la Capacidad mediante una disminución de la cantidad de Instancias.

    Es posible que notes que solo se muestran 3 instancias en la pestaña Miembros.

Cierra ambas ventanas cuando termines.

Limpia

Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Si creaste un proyecto aparte para este instructivo, borra todo el proyecto. De lo contrario, si el proyecto tiene recursos que deseas conservar, borra solo los recursos creados en este instructivo.

Borra el proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra recursos específicos

Borra el grupo de instancias

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

    Ir a Grupos de instancias

  2. Selecciona la casilla de verificación de tu grupo de instancias de autoscaling-web-app-group.
  3. Para borrar el grupo de instancias, haz clic en Borrar.

Borra la plantilla de instancias

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

    Ir a Plantillas de instancia

  2. Haz clic en la casilla de verificación junto a autoscaling-web-app-template.

  3. Haz clic en  Borrar, en la parte superior de la página. En la ventana nueva, haz clic en Borrar para confirmar la eliminación.

Borra la regla de firewall

  1. En la consola de Google Cloud, ve a la página Reglas de firewall.

    Ir a Reglas de firewall

  2. Haz clic en la casilla de verificación junto a la regla de firewall denominada default-allow-http.

  3. Haz clic en  Borrar, en la parte superior de la página. En la ventana nueva, haz clic en Borrar para confirmar la eliminación.

Próximos pasos