Usa el ajuste de escala automático para aplicaciones con alta escalabilidad

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, el número de VM en el grupo de instancias aumenta (escala verticalmente) o disminuye (reduce la escala) de forma automática según el valor objetivo que especifiques para 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 instructivo, se usan componentes facturables de Google Cloud, incluidos los siguientes:

  • Compute Engine

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Los usuarios nuevos de Google Cloud pueden ser elegibles para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En GCP Console, en la página de selección de proyecto, selecciona o crea un proyecto de GCP.

    Ir a la página de selección de proyecto

  3. Asegúrate de tener habilitada la facturación para tu proyecto de Google Cloud Platform. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

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 de Google Cloud 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

A fin de crear una regla de firewall para permitir el tráfico HTTP a la aplicación web, sigue estos pasos:

  1. Ve a la página Firewalls en Cloud Console.
    Ir a la página 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 el 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.
    Selecciona 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. Ve a la página Plantillas de instancias en Cloud Console.
    Ir a la página Plantillas de instancias
  2. Haz 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 n1-standard-1.
  5. En Disco de arranque, configura la Imagen como Debian GNU/Linux 9 (stretch).
  6. 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.
  7. Haz clic en Administración, seguridad, discos, redes, instancia única para mostrar la configuración avanzada. Deberías ver varias pestañas.
  8. En la pestaña Administración, busca Automatización y, luego, ingresa la siguiente Secuencia de comandos de inicio:

    sudo apt-get update && sudo apt-get install git gunicorn3 python3-pip -y
    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.

  9. 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. Ve a la página Grupos de instancias en Cloud Console.
    Ir a la página Grupos de instancias
  2. Haz clic en Crear grupo de instancias para crear un grupo de instancias nuevo.
  3. En Nombre, ingresa autoscaling-web-app-group.
  4. En Ubicación, selecciona Varias zonas.

  5. En Región, selecciona us-central1.

  6. Haz clic en el menú desplegable Configurar zonas para mostrar las Zonas. Selecciona las siguientes zonas:

    • us-central1-b
    • us-central1-c
    • us-central1-f
  7. En Plantilla de instancias, selecciona autoscaling-web-app-template.

  8. Configura el ajuste de escala automático para el grupo de instancias:

    1. En Ajuste de escala automático, selecciona Activado.
    2. Establece la Política de ajuste de escala automático en Uso de CPU. Para obtener más información sobre otras políticas de ajuste de escala automático, consulta el uso de políticas de ajuste de escala automático y objetivos.

    3. Establece el Uso de CPU objetivo en 60%.

    4. Establece la Cantidad mínima de instancias en 3.

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

    6. Establece el Período de inactividad en 120 segundos.

  9. En Verificación de estado, selecciona Sin verificación de estado.

  10. Haz clic en Crear. Esto te redirecciona a la página de Grupos de instancias.

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

    1. En la página Grupos de instancias en Cloud Console, 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.

      Captura de pantalla de la aplicación web de demostración, que muestra información 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 Cloud Console:

  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. Para supervisar el uso de CPU y el ajuste de escala automático, selecciona Tamaño con ajuste de escala automático en el menú desplegable de la izquierda y selecciona cpu en el menú desplegable de la derecha.

    Esto muestra dos grafos:

    • En el grafo superior, se muestra el Tamaño, que es la cantidad de instancias en el grupo.
    • En el grafo inferior se muestra el Uso, que es el uso promedio de CPU del grupo de instancias, y la Capacidad, que es el uso de CPU objetivo acumulativo del grupo de instancias.

    El ajuste de escala automático intenta hacer que la Capacidad coincida con el Uso mediante cambios en el Tamaño, cuando sea posible.

Mantén abierta esta ventana.

Simula el escalamiento vertical (escalamiento horizontal)

El escalamiento vertical se produce cuando el uso de CPU promedio del grupo de instancias es bastante mayor que el valor objetivo. Durante el escalamiento vertical, el ajuste de escala automático aumenta de forma gradual el tamaño del grupo de instancias hasta que el uso de CPU alcance el 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 vertical, aumenta el uso de CPU de tus instancias mediante estos pasos:

  1. Abre una terminal con Cloud Shell desde Cloud Console.

    Abrir Cloud Shell

    Cloud Shell se abre en la parte inferior de Cloud Console. 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 Cloud Console.

    Después de unos minutos, en la pestaña Supervisión, se mostrará que aumentó el Uso de CPU, lo que activa el ajuste de escala automático para incrementar la Capacidad mediante el aumento del Tamaño del grupo de instancias:

    El monitor muestra que el uso de CPU aumentó. Poco después, el tamaño del grupo aumenta de 3 instancias a 6.

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

Mantén abiertas ambas ventanas.

Simula la disminución de la escala (escala hacia adentro)

La disminución de la escala se produce cuando el uso de CPU promedio del grupo de instancias es bastante menor que el valor objetivo. Durante la disminución de la escala, el ajuste de escala automático disminuye el tamaño del grupo de instancias hasta que el uso de CPU alcanza el uso de CPU objetivo o hasta que el tamaño del grupo de instancias iguala la Cantidad mínima de instancias, que se estableció en 3.

A fin de activar la disminución de la escala, disminuye el uso de CPU para 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 ajuste de escala 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 Cloud Console.

    Después de unos minutos, la pestaña Supervisión mostrará que el Uso de CPU disminuyó. Después de un período de estabilización de diez minutos, durante el cual se verifica que la carga sea siempre menor, el ajuste de escala automático disminuye la Capacidad mediante una disminución del Tamaño del grupo de instancias:

    El monitor muestra que el uso de CPU disminuyó. Alrededor de 10 minutos después, el tamaño del grupo disminuye de 6 instancias a 3.

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

Cierra ambas ventanas cuando termines.

Realiza una limpieza

Una vez que hayas terminado el instructivo sobre el ajuste de escala automático, puedes limpiar los recursos que creaste en GCP para que no consuman tu cuota y no se te facture por ellos en el futuro. 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 GCP Console, dirígete a la página Administrar recursos.

    Ir a la página Administración de recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de 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 GCP Console, ve a la página Grupos de instancias.

    Ir a la página Grupos de instancias

  2. Click the checkbox for autoscaling-web-app-group instance group.
  3. Haz clic en Borrar para eliminar el grupo de instancias.

Borra la plantilla de instancias

  1. Ve a la página Plantillas de instancias en Cloud Console.

    Ir a la página Plantillas de instancias

  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. Ve a la página Reglas de Firewall en Cloud Console.

    Ir a la página 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