Todos los productos
Search
Centro de documentos

Auto Scaling:Evolve a web service to an elastic and highly available architecture

Última actualización: Sep 02, 2026

A medida que su negocio crece, la carga sobre su servicio web monolítico aumenta, lo cual puede reducir la estabilidad del sistema. Para solucionar esto, evolucione su arquitectura monolítica hacia una elástica y de alta disponibilidad mediante un grupo de escalado que amplíe los servidores y distribuya la carga. Este enfoque mejora la estabilidad del sistema y la velocidad de respuesta.

¿Por qué utilizar una arquitectura elástica y de alta disponibilidad?

Problemas de una arquitectura monolítica

En una arquitectura monolítica típica, todos los recursos se despliegan en una sola instancia ECS. Los usuarios acceden al servicio en este único servidor directamente mediante un nombre de dominio o una dirección IP. Esta arquitectura presenta dos problemas principales:

  • Punto único de falla: Si el servicio falla, todo el negocio se interrumpe. Esto afecta gravemente la experiencia del usuario y puede provocar la pérdida de clientes.

  • Cuellos de botella de rendimiento: A medida que aumenta el tráfico, una arquitectura monolítica puede alcanzar sus límites de rendimiento, lo que dificulta la expansión del negocio. Los picos repentinos de tráfico pueden ralentizar fácilmente los tiempos de respuesta del servicio.

image

Funciones de una arquitectura de alta disponibilidad

En una arquitectura elástica y de alta disponibilidad, un load balancer dirige las solicitudes de los usuarios a los servicios empresariales que se ejecutan en instancias dentro del clúster. Esta arquitectura cuenta con las siguientes funciones clave:

  • Sin punto único de falla (alta disponibilidad): Utiliza varios servidores para distribuir la carga, lo que aumenta la capacidad del servicio y evita interrupciones por fallas en un solo servidor.

  • Escalado elástico: Puede utilizar un grupo de escalado para gestionar el clúster de servicios y cambiar el número de servidores con un solo clic para un escalado horizontal rápido. También puede configurar directivas de escalado automático para ajustar los recursos según la carga de la aplicación.

image

Cómo evolucionar hacia una arquitectura de alta disponibilidad

image

Como se muestra en la figura, la evolución desde la arquitectura monolítica de la izquierda hacia una arquitectura elástica y de alta disponibilidad implica dos fases.

  • Fase 1: Separar el almacenamiento de datos de la lógica de negocio

    Una arquitectura elástica y de alta disponibilidad replica instancias ECS completas. Por lo tanto, debe separar el almacenamiento de datos y la lógica de negocio de sus instancias ECS (y de los servicios dentro de ellas). Esto también se conoce como hacerlas sin estado, y previene problemas de consistencia de datos cuando escala horizontalmente agregando más instancias.

    Por ejemplo, al replicar una instancia ECS, asegúrese de que la base de datos no se copie, evitando así que el clúster utilice múltiples fuentes de datos diferentes. Al separar el almacenamiento de datos de la instancia ECS, garantiza que todas las instancias compartan la misma fuente de datos, manteniendo la consistencia.

    Si encuentra alguna de las siguientes situaciones comunes, evalúe el impacto potencial en su negocio y ajuste su arquitectura en consecuencia.

    Situaciones comunes a considerar

    Situación 1: Servicios con estado en la instancia

    Si su instancia ECS contiene servicios con estado como una base de datos, replicar esta instancia para escalar horizontalmente resultará en múltiples fuentes de datos en su clúster, lo que provocará inconsistencia de datos. Separe los servicios con estado como MySQL o Redis en sus propios despliegues.

    También puede migrar sus bases de datos MySQL o Redis autogestionadas directamente a ApsaraDB RDS. En comparación con las bases de datos autogestionadas, ApsaraDB RDS es más seguro, confiable y fácil de mantener. Para obtener información sobre cómo migrar una base de datos autogestionada a la nube, consulte Migrate a self-managed database to a cloud database .

    Situación 2: Servicios basados en sesiones

    Si su servicio empresarial utiliza sesiones para mantener el estado de inicio de sesión del usuario, escalar el servicio provocará que la información de inicio de sesión (información de sesión) sea inconsistente entre las réplicas del servicio. Esto puede resultar en que los usuarios cierren sesión frecuentemente. Para resolver esto, despliegue una instancia de Redis independiente para la gestión compartida de sesiones.

    Situación 3: Tareas programadas no concurrentes

    Si su negocio tiene una tarea programada que debe ejecutarse solo una vez al día, el escalado horizontal provocará que varios servidores ejecuten la tarea al mismo tiempo. Es posible que deba ajustar la lógica de procesamiento de tareas para manejar esta situación.

  • Fase 2: Evolucionar hacia una arquitectura de alta disponibilidad

    Después de separar el almacenamiento de datos y la lógica de negocio en la instancia ECS, puede escalar horizontalmente creando réplicas de la instancia y su servicio empresarial.

    Migre el clúster de servicios a un grupo de escalado para aprovechar su elasticidad y lograr una replicación rápida. Utilice un load balancer como punto de acceso para el clúster de servicios con el fin de distribuir la carga, garantizando la estabilidad y eficiencia del sistema.

Migración rápida a una arquitectura de alta disponibilidad

Descripción general de la solución

Si ya ha separado su almacenamiento de datos de su lógica de negocio (haciéndola sin estado), siga estos pasos para migrar rápidamente su servicio desde una arquitectura monolítica hacia una elástica y de alta disponibilidad mediante un grupo de escalado.

  1. Desplegar un sitio web de demostración (preparar una instancia). Esta solución simula una instancia de servicio web de demostración sin estado para mostrar el proceso de migración. También puede utilizar una instancia existente.

  2. Crear una imagen de instancia que contenga el servicio empresarial. Esta imagen se utilizará para lanzar instancias en su clúster, iniciando automáticamente el servicio empresarial al arrancar.

  3. Crear un grupo de escalado para gestionar el clúster de servicios. Utilizará este grupo de escalado para replicar instancias rápidamente (escalado horizontal).

  4. Configurar un punto de acceso unificado para el clúster. Asocie un load balancer para crear un punto de acceso unificado.

  5. Escalar horizontalmente las instancias (verificación). Replice instancias rápidamente y acceda al load balancer para verificar que el clúster funcione correctamente.

1. Desplegar un sitio web de demostración

Primero, necesita una instancia de aplicación que represente su entorno de producción. Esta instancia se utilizará para la replicación y el despliegue automatizado.

Este tutorial proporciona un servicio de sitio web de demostración que puede utilizar para experimentar el proceso de migración. Haga clic en Deploy Demo Service para configurar el servicio de demostración.

Este servicio de sitio web de demostración incluye un paquete de servicio web , su entorno de ejecución y un script de inicio . La instancia ya se ha convertido en sin estado al separar su almacenamiento de datos de su lógica de negocio.
Si la instancia de su servicio empresarial ya es sin estado y cuenta con los componentes necesarios (paquete de software, entorno, script de inicio), puede utilizar su instancia de servicio real para los siguientes pasos de migración.

Despliegue del servicio de demostración

Como se muestra en la figura de la derecha, la instancia ECS en esta arquitectura de demostración contiene un servicio web que se conecta a una base de datos. Al acceder a la dirección del servicio, se muestra la IP del servidor actual y una cadena consultada desde la base de datos. Se ha configurado un comando de inicio para este servicio, por lo que se ejecuta automáticamente cuando arranca la instancia ECS.

La función Deploy Demo Service utiliza Resource Orchestration Service (ROS). El uso de esta función crea una Virtual Private Cloud (VPC) y un vSwitch, una instancia ECS con el servicio de demostración y una instancia de ApsaraDB RDS for MySQL en su cuenta de Alibaba Cloud.
image

Siga estos pasos para desplegar la instancia del servicio de demostración:

  1. Haga clic en el botón Deploy Demo Service para ir a la página One-click Deployment.

  2. Siga las instrucciones en pantalla para seleccionar una Region y una Zone.

  3. En la sección de configuración de instancias, seleccione un Instance Type y establezca la Instance Password.

    Puede seleccionar la configuración más baja, como una instancia burstable, para ahorrar costos en este tutorial. Los tipos de instancia disponibles varían según la región y la zona de disponibilidad. Consulte las opciones mostradas en la página.
  4. Seleccione un RDS Instance Type y establezca la RDS Database Password.

  5. Después de confirmar el costo, haga clic en Deploy Now y espere a que se creen los recursos.

    Puede supervisar el progreso en la pestaña Specific Resources . Los recursos a observar, en orden de creación, son el security group, VPC, vSwitch, instancia ECS e instancia de ApsaraDB RDS.
  6. En la pestaña View Outputs, busque el enlace de WebUrl.

    Puede visitar este enlace en su navegador varias veces. Cada vez verá la misma dirección IP, lo que confirma que está accediendo a la misma instancia ECS.

2. Crear una imagen de instancia

Para garantizar que las nuevas instancias tengan el servicio empresarial y el script de inicio, cree una imagen personalizada a partir de la instancia preparada. Las instancias posteriores utilizarán esta como imagen base, por lo que su servicio empresarial se iniciará automáticamente cuando se lancen las instancias.

  1. Vaya a la consola de ECS y cambie a la región donde preparó la instancia en el Paso 1.

  2. Busque la instancia ECS preparada en el Paso 1. En la columna Actions de la derecha, elija Disks and Images > Create Custom Image.

  3. En el cuadro de diálogo Create Custom Image, introduzca un nombre de imagen para facilitar su identificación y luego haga clic en OK. Espere a que finalice la creación de la imagen. Puede comprobar el progreso haciendo clic en Instances & Images > Image en el panel de navegación izquierdo de la consola de ECS.

3. Crear un grupo de escalado

Utilizar un grupo de escalado para gestionar su clúster de servicios es el núcleo de una arquitectura elástica y de alta disponibilidad. Puede usar un grupo de escalado para replicar instancias rápidamente. Siga estos pasos para crear y habilitar un grupo de escalado:

  1. Vaya a la página Scaling Groups.

    1. Inicie sesión en la consola de Auto Scaling.

      Si es la primera vez que utiliza Auto Scaling, siga las instrucciones en pantalla para otorgar los permisos necesarios. Para obtener más información, consulte Service-linked roles.

    2. En el panel de navegación izquierdo, haga clic en Scaling Groups.

    3. En la barra de navegación superior, seleccione la región donde activó Auto Scaling.

  2. Cree un grupo de escalado.

    1. En la página Scaling Groups, haga clic en Create para abrir la página Create.

    2. Complete las siguientes configuraciones en la página. Puede conservar los valores predeterminados para cualquier configuración no mencionada en la tabla.

      Parámetro

      Descripción

      Scaling Group Name

      Introduzca un nombre según se le solicite. En este ejemplo, el nombre es ess-demo.

      Type

      Seleccione ECS.

      Instance Configuration Source

      Seleccione Select Existing Instance.

      Select Existing Instance

      Seleccione la instancia ECS preparada en el Paso 1.

      Minimum Number of Instances

      Número mínimo de instancias en el grupo de escalado. Si el número de instancias cae por debajo de este valor, se activa un evento de escalado horizontal automático. En este ejemplo, el mínimo es 0.

      Maximum Number of Instances

      Número máximo de instancias en el grupo de escalado. Si el número de instancias supera este valor, se activa un evento de reducción automática. En este ejemplo, el máximo es 10.

      VPC y vSwitch

      Estas configuraciones se rellenan automáticamente según la instancia ECS que seleccione.

      Importante

      Se recomienda crear y seleccionar vSwitches en múltiples zonas de disponibilidad. Esto ayuda a prevenir fallas de escalado causadas por inventario insuficiente de instancias en una sola zona de disponibilidad. Para crear un vSwitch, consulte Create a vSwitch.

      Show Advanced Settings > Enable Expected Number of Instances

      Seleccione para habilitar esta función. Después de habilitarla, puede escalar horizontalmente o reducir automáticamente estableciendo el número esperado de instancias.

      Show Advanced Settings > Expected Number of Instances

      Introduzca 0 para crear inicialmente un grupo de escalado vacío.

      Show Advanced Settings > Instance Health Check

      Seleccione Instance Status Check y Load Balancer Health Check. Cuando están habilitados, el sistema utiliza los resultados de las comprobaciones de estado para garantizar que todas las instancias del grupo de escalado y sus servicios empresariales funcionen correctamente. Si un servicio deja de estar sano, se reemplaza rápidamente con una nueva instancia.

    3. Haga clic en Create y espere a que se cree el grupo de escalado.

  3. Modifique la imagen de instancia en la configuración de escalado.

    Cuando crea un grupo de escalado seleccionando una instancia existente, se crea una configuración de escalado basada en la imagen original de la instancia. La imagen original de la instancia creada en el Paso 1 no incluye el paquete de aplicación desplegado posteriormente. Por lo tanto, debe actualizar la imagen base en la configuración de escalado a la nueva imagen creada en el Paso 2 .
    1. En la página Scaling Groups, busque el grupo de escalado que acaba de crear. En la columna Actions, haga clic en View Details para ir a la página de detalles del grupo de escalado.

    2. En la pestaña Instance Configuration Source > Scaling Configurations, busque la única configuración de escalado y haga clic en Edit Image en la columna Actions.

    3. En el cuadro de diálogo Edit Image, seleccione User-Defined Image. Siga las indicaciones para seleccionar la imagen que creó en el Paso 2. Haga clic en OK para completar la modificación.

  4. Habilite el grupo de escalado.

    En la página Scaling Groups, haga clic en el botón Enable en la esquina superior derecha para activar el grupo de escalado.

4. Configurar un punto de acceso unificado

Al escalar de una instancia a muchas, necesita un punto de acceso unificado para el clúster. Para lograrlo, cree y asocie un load balancer con su grupo de escalado. Esto permite que las solicitudes de los usuarios se distribuyan automáticamente entre las instancias ECS del clúster, equilibrando la carga y maximizando la utilización de recursos. Este ejemplo utiliza un Application Load Balancer (ALB). Siga estos pasos:

4.1 Crear un load balancer

  1. Inicie sesión en la consola de ALB.

  2. En la página Instance, haga clic en Create Application Load Balancer.

  3. En la página de compra de Application Load Balancer (Pay-As-You-Go), siga las instrucciones en pantalla para crear el ALB.

    Este ejemplo utiliza las siguientes configuraciones. Puede conservar los valores predeterminados para cualquier configuración no mencionada.

    Parámetro

    Descripción

    Region

    Seleccione la misma región que la instancia del Paso 1.

    Network Type

    Seleccione Internet.

    VPC

    Seleccione la VPC de la instancia preparada en el Paso 1.

    Zone

    Seleccione como mínimo dos. Si una zona de disponibilidad seleccionada no tiene un vSwitch, siga las instrucciones en pantalla para crear uno. Para obtener instrucciones sobre cómo crear un vSwitch, consulte Create a vSwitch.

4.2 Crear un grupo de servidores

Este grupo de servidores se asociará con el grupo de escalado. Las instancias creadas por el grupo de escalado se agregarán automáticamente a este grupo de servidores para proporcionar servicios a través del load balancer.

  1. En la consola de Application Load Balancer (ALB), seleccione una región.

  2. En el panel de navegación izquierdo, haga clic en Server Group para ir a la página Server Groups. Haga clic en Create Server Group y siga las instrucciones en pantalla para crear el grupo de servidores.

    Este ejemplo utiliza las siguientes configuraciones. Puede conservar los valores predeterminados para cualquier configuración no mencionada.

    Parámetro

    Descripción

    Server Group Type

    Seleccione Server Type.

    Server group name

    Introduzca un nombre según se le solicite. Este ejemplo utiliza ess-test-server-group.

    VPC

    Seleccione la VPC de la instancia preparada en el Paso 1.

4.3 Configurar un listener

Cree un listener HTTP para reenviar solicitudes desde el protocolo HTTP. Cuando la instancia del load balancer recibe una solicitud HTTP, puede reenviar la solicitud a las instancias ECS en el grupo de servidores.

  1. En la consola de Application Load Balancer (ALB), seleccione una región.

  2. En el panel de navegación izquierdo, haga clic en Instance. Busque el load balancer creado en el Paso 4.1 y haga clic en Create Listener en la columna Actions. Siga las instrucciones en pantalla para crear el listener.

    Este ejemplo utiliza las siguientes configuraciones. Puede conservar los valores predeterminados para cualquier configuración no mencionada.

    Parámetro

    Descripción

    Select listener protocol

    Seleccione HTTP.

    Listener port

    El puerto en el que el load balancer proporciona servicios. El servicio de demostración utiliza el puerto 80, lo que significa que el listener manejará las solicitudes al puerto 80 del load balancer.

    Select server group

    Seleccione el grupo de servidores creado en el Paso 4.2.

4.4 Asociar el load balancer

  1. En la página Scaling Groups, busque el grupo de escalado que creó en el Paso 3. En la columna Actions, haga clic en View Details para ir a la página de detalles del grupo de escalado.

  2. En la pestaña Basic Information, busque Associated ALB/NLB Server Groups. Haga clic en Add Associated ALB/NLB Server Group. En el cuadro de diálogo que aparece, haga clic en Add Server Group y siga las indicaciones para asociar el grupo de servidores creado en el Paso 4.2. Después de configurar, haga clic en OK para completar la asociación.

    Importante

    El número de puerto en esta configuración debe ser el puerto en el que su servicio empresarial proporciona servicios. El servicio de demostración en este ejemplo utiliza el puerto 80.

5. Escalar horizontalmente y verificar

Después de configurar el grupo de escalado y asociarlo con un load balancer, puede escalar horizontalmente las instancias para verificar que el clúster funcione correctamente.

  1. Active un evento de escalado horizontal para el grupo de escalado, y el grupo de escalado creará instancias automáticamente.

    Puede activar un evento de escalado horizontal modificando la Desired Capacity del grupo de escalado. Siga estos pasos:

    1. En la página Scaling Groups, busque el grupo de escalado que acaba de crear. En la columna Actions, haga clic en View Details para ir a la página de detalles del grupo de escalado.

    2. En la pestaña Basic Information, busque Instance Scaling Overview y haga clic en image. En el cuadro de diálogo Edit Instance Scaling Overview, cambie el Expected Number of Instances de 0 a 3 (lo que significa que el clúster necesita 3 instancias ECS para proporcionar servicios). Haga clic en OK para aplicar el cambio.

    3. Espere a que se creen las instancias. Se crearán tres instancias ECS en el grupo de escalado. Puede comprobar el estado de creación en la pestaña Instances.

  2. Acceda a la dirección del load balancer para verificar que esté dirigiendo las solicitudes a las nuevas instancias.

    1. Vaya a la consola de Application Load Balancer (ALB).

    2. Busque el load balancer creado en el Paso 4.1. En DNS Name, busque la URL de acceso.

    3. Visite esta URL varias veces. Debería ver diferentes direcciones IP, lo que confirma que puede acceder a diferentes servidores a través del load balancer.

6. (Opcional) Limpiar recursos

Si ya no necesita el clúster, puede seguir este proceso para limpiar los recursos.

  1. Libere el load balancer creado en el Paso 4.1. Para obtener más información, consulte Release an ALB instance.

  2. Elimine el grupo de escalado creado en el Paso 3. Para obtener más información, consulte Delete a scaling group.

  3. Elimine el grupo de servidores creado en el Paso 4.2. Para obtener más información, consulte Create and manage server groups.

  4. Elimine la imagen personalizada creada en el Paso 2. Para obtener más información, consulte Delete a custom image.

  5. Elimine los vSwitches que creó en el Paso 3 y en el Paso 4.1. Para obtener más información, consulte Create and manage a VPC y Delete a vSwitch.

  6. Limpie el servicio de demostración desplegado en el Paso 1. Si desplegó el servicio de demostración desde el Paso 1, puede eliminar su pila de ROS. Al eliminar la pila, seleccione Release Resources como Deletion Method para limpiar los recursos creados por el servicio de demostración. Para obtener más información, consulte Delete a stack.

Siguientes pasos

Antes de entrar en producción

Para garantizar que esta solución elástica y de alta disponibilidad funcione de manera estable en un entorno de producción, se recomienda completar las siguientes acciones antes de la puesta en marcha:

  • Ajustar la configuración del grupo de escalado

    • Implementar recuperación ante desastres multizona: Configure vSwitches en varias zonas de disponibilidad para su grupo de escalado y establezca una Multi-zone Scaling Policy. Esto permite que el grupo cree instancias en distintas zonas de disponibilidad y distribuya las instancias de servicio de forma equilibrada entre ellas, lo cual mejora la tasa de éxito del escalado y la capacidad de recuperación ante desastres del clúster. Para obtener más información, consulte Scaling policies.

    • Seleccionar varios tipos de instancia: Un evento de escalado horizontal puede fallar si un solo tipo de instancia no tiene stock disponible. Seleccione varios tipos de instancia para mejorar la tasa de éxito del escalado. Para obtener más información, consulte Create a scaling configuration (ECS instances).

  • Realizar pruebas exhaustivas

    Si planea utilizar esta solución elástica y de alta disponibilidad en un entorno de producción, se recomienda ejecutar pruebas después de configurar el clúster. De este modo se asegura que el servicio funcione correctamente al replicarse y le permite llevar a cabo pruebas de estrés en el clúster para estimar sus necesidades de recursos.

Utilizar un nombre de dominio para el acceso

Actualizar registros DNS

Si anteriormente utilizaba un nombre de dominio para acceder a su instancia ECS, actualice los registros DNS del dominio para que apunten a su load balancer. Así, cuando los usuarios accedan al dominio, sus solicitudes se enrutarán a través del load balancer hacia su clúster de servicios. Para obtener más información, consulte Configure CNAME resolution for an ALB instance.

Importante

Después de actualizar el DNS, la propagación toma tiempo. No cambie la dirección IP original del servicio ni detenga la instancia original de inmediato. Mantenga la instancia ECS original en ejecución durante un tiempo. Supervise su tráfico entrante y deténgala solo después de que el tráfico baje a cero.

Esto evita interrupciones del servicio para los usuarios cuya caché DNS local aún apunta a la dirección IP original.

Compatibilidad con el protocolo HTTPS

Este ejemplo utiliza HTTP. Para habilitar HTTPS en el dominio de su clúster, configure un listener HTTPS en el load balancer. Para obtener más información, consulte Add an HTTPS listener.

Utilizar funciones de Auto Scaling

  • Diseñar una estrategia de escalado: Este tutorial no abarca el diseño de estrategias de escalado automático. Puede configurar el escalado automático para su grupo de escalado posteriormente con el fin de optimizar costos. Para aprender a diseñar una estrategia de escalado, consulte Supported scaling strategies.

  • Funciones avanzadas: Si tiene requisitos más avanzados para su grupo de escalado, como mejorar las tasas de éxito del escalado o reducir aún más los costos, consulte Advanced features.