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 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 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 Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un 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

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

  1. En Google Cloud Console, 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 Google Cloud Console, 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 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 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.

  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. En Google Cloud Console, 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. 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 Ajustar escala automáticamente.
    2. Establece la Política de ajuste de escala automático para usar el uso de CPU como una métrica. Para obtener más información sobre la política de ajuste de escala automático, consulta Política de ajuste de escala automático.
    3. Establece el Uso de CPU objetivo en 60%.
    4. Establece el Período de inactividad en 120 segundos.

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

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

  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.

      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 de tu grupo de instancias, utiliza 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. Puedes supervisar el ajuste de escala automático desde el gráfico Tamaño del grupo. En el grafo, se muestran Instancias, que representan la cantidad de instancias de VM en el 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 el número de instancias cuando 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 Google Cloud Console, abre Cloud Shell.

    Abra 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, la pestaña Supervisión mostrará que aumentó el Uso de CPU, lo que activa el ajuste de escala automático para aumentar 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 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 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.

Realiza una limpieza

Una vez que termines el instructivo de ajuste de escala automático, puedes realizar una limpieza de los recursos que creaste en Google Cloud a fin de que no consuman tu cuota y no se te cobre 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 Cloud Console, 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 Cloud Console, ve a la página Grupos de instancias.

    Ir a Grupos de instancias

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

Borra la plantilla de instancias

  1. En Google Cloud Console, 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 Google Cloud Console, 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