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íticaEn 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:
| Funciones de una arquitectura de alta disponibilidadEn 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:
|
Cómo evolucionar hacia una arquitectura de alta disponibilidad
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.
-
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.
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.
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.
Crear un grupo de escalado para gestionar el clúster de servicios. Utilizará este grupo de escalado para replicar instancias rápidamente (escalado horizontal).
Configurar un punto de acceso unificado para el clúster. Asocie un load balancer para crear un punto de acceso unificado.
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.
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.
Vaya a la consola de ECS y cambie a la región donde preparó la instancia en el Paso 1.
Busque la instancia ECS preparada en el Paso 1. En la columna Actions de la derecha, elija .
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 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:
-
Vaya a la página Scaling Groups.
-
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.
En el panel de navegación izquierdo, haga clic en Scaling Groups.
En la barra de navegación superior, seleccione la región donde activó Auto Scaling.
-
-
Cree un grupo de escalado.
En la página Scaling Groups, haga clic en Create para abrir la página Create.
-
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.
ImportanteSe 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.
Seleccione para habilitar esta función. Después de habilitarla, puede escalar horizontalmente o reducir automáticamente estableciendo el número esperado de instancias.
Introduzca 0 para crear inicialmente un grupo de escalado vacío.
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.
Haga clic en Create y espere a que se cree el grupo de escalado.
-
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 .
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.
En la pestaña , busque la única configuración de escalado y haga clic en Edit Image en la columna Actions.
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.
-
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
Inicie sesión en la consola de ALB.
En la página Instance, haga clic en Create Application Load Balancer.
-
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.
En la consola de Application Load Balancer (ALB), seleccione una región.
-
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.
En la consola de Application Load Balancer (ALB), seleccione una región.
-
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
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.
-
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.
ImportanteEl 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.
-
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:
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.
En la pestaña Basic Information, busque Instance Scaling Overview y haga clic en
. 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.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.
-
Acceda a la dirección del load balancer para verificar que esté dirigiendo las solicitudes a las nuevas instancias.
Vaya a la consola de Application Load Balancer (ALB).
Busque el load balancer creado en el Paso 4.1. En DNS Name, busque la URL de acceso.
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.
Libere el load balancer creado en el Paso 4.1. Para obtener más información, consulte Release an ALB instance.
Elimine el grupo de escalado creado en el Paso 3. Para obtener más información, consulte Delete a scaling group.
Elimine el grupo de servidores creado en el Paso 4.2. Para obtener más información, consulte Create and manage server groups.
Elimine la imagen personalizada creada en el Paso 2. Para obtener más información, consulte Delete a custom image.
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.
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
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.