🥇 Auto Scaling.

Una habilidad de desplegar aplicaciones en la nube es el uso y la habilidad de poder montar servidores en proporción a las cargas de trabajo. Provisionar servidores en demanda (instancias de ec2) y despues liberarlos cuando no esten siendo utilizados puede proveer una reducción de costo significativo para aplicaciones que no tienen cargas de trabajo constante.

🍿 Planes de auto scaling.

Existen diferentes tipos de esquemas de Auto Escaling que se pueden usar para controlar el performance.

🥤 Numero de Instancias Fijo (Maintain Current Instance Levels).

Se puede configurar Auto Scaling para mantener un numero minimo o especificado de instancias ejecutandose al mismo tiempo. Para mantener este numero, Auto Scaling realiza checks periodicos en instancias ejecutandose dentro de un Auto Scaling Group. Cuando encuentra alguna que no este en buenas condiciones, la termina y crea una nueva.

🥤 Escalamiento Manual (Manual Scaling).

Es la forma mas basica de escalar los recuross, solo es necesario especificar el cambio en el numero máximo, mínimo o desado de capacidad de su Auto Scaling Group. Auto Scaling maneja el proceso de crear o terminar instancias para mantener la capacidad actualizada.

El escalamiento manual puede ser muy útil para incrementar los recursos de un evento infrecuente (pe una noticia muy vista o el release de un nuevo producto). Para eventos extremos incluso el load balancer puede estar preparado para trabajar con cargas de trabajo enormes.

🥤 Escalamiento Calendarizado (Scheduled Scaling).

Algunas veces es necesario incrementar o decrementar el numero de instancias en el grupo en un momento específico. El escalamiento calendarizado (scheduled scaling) permite realizar estas operaciones de forma automática en función de la hora y fecha.

🥤 Dynamic SCaling.

Le permite definir parametros que controlan el proceso de auto escalamiento mediante politicas. Es posible por ejemplo añadir mas instancias a la capa web cuando el ancho de banda medido por CloudWatch alcance determinado punto.

🍿 Componentes del AutoScaling.

🥤 Configuración de Despliegue (Launch Configuracion).

Es una plantilla (template) que Auto Scaling utiliza para crear neuvas instancias y esta compuesta de:

Cada Auto Scaling Group puede tener unicamente una configuración de despliegue a la vez.

Ejemplo:

$ aws autoscaling create-launch-configuration –laun-configuration-name miLC –image-id ami-0242a99b –instance-type m3.medium –security-groups sg-a32cda4d –key-name miLlave

🍿 Escalado Dinámico (Dynamic Scaling).

Permite definir parámetros que controlan el proceso de AutoScaling en una politica de escalado. Por ejemplo, se pueden agregar mas instancias.

Los Secutiry Groups para instancias EC2-Classic pueden ser referenciados como “SSH” o “Web” o “sg-659584”.

Los Security Groups para instancias en VPC utilizan el Security Group ID para recenciar cuando se desean asociar con instancias en el Launch Configuration.

El límite este tipo de configuraciones es de 100 por región. Si se excede este valor, la llamada a create-launch-configuration fallará. Se puede ver y actualizar este limite mediante $ aws autoscaling describew-account-limits.

AutoScaling puede propiciar que se alcancen los límited de algunos de los servicios, como el numero máximo de instancias EC2 que se pueden utilizar dentro de una región (20). Cuando sea el caso, es importante tener en cuenta el límite en el uso de los servicios de Amazon.

Es posible incrementar los límites de los servicios dirigiendose a la Guida de Referencia de Amazon, dentro de AWS Service Limits. Despues creando un ticket de soporte en el AWS Support Center solicitando el servicio y el numero limite.

🥤 Grupo de Autoescalamiento (AutoScaling Group).

Es una colección de instancias manejadas por el servicio AutoScaling. Cada grupo contiene opciones de configuración que controlan cuando el AutoScaling debe crear nuevas instancias y terminar las existentes. Un grupo de autoescalamiento debe contener un nombre, asi como un numero mínimo y maximo de instancias que pueden existir en el grupo. De manera opcional la capacidad deseada,que es el numero de instancias que el grupo debe tener a todas horas. Si no se especifíca una capacidad deseada, la capacidad por default es el mínimo numero de instancias que usted especifíque.

Ejemplo:

$ aws autoscaling create-auto-scaling-group --auto-scaling-group-name miASG --launch-configuration-name miLC --availability-zones us-east-1a, us-east-1c --min-size 1 --max-size 10 --desired-capacity 3 --load-balancer-names miELB

Un autoscaling group puede utilizar instancias en demanda o spot instances. Para poder utilizar spot instances hay que definir un precio ofertado en la configuracion de despliege (-spot-price "0.15") asociada con un Auto Scaling Group. Las Spot Instances como se menciono requieren que los procesos ejecutados sean tolerantes a los fallos por si estas son terminadas. Pueden ser definidas Spot Instances u On-Demand Instances pero no ambas.

Las Spot Instances pueden realizar un equilibro de precio en los grupos de Auto Scaling, especialmente cuando se utilizan para servicios premium ofrecidos a los usuarios, en los cuales pagan una subscripción para agregar funcionalidad adicional.

🥤 Politica de Escalamiento (Scaling Policy).

Usted puede asociar las alarmas CloudWatch y las scaling policies con un AutoScaling Group para ajustar Auto Scaling dinamicamente. Cuando un umbral es cruzado, CloudWatch enviará una alarma para modificar el numero de instancias recibiendo tráfico mediante un load balancer. Despues de que la alarma es enviada, Auto Scaling ejecutar la policy aosciada paa escalar el grupo. La politica es una serie de instrucciones que le indica a AutoScaling si escalar hacia arriba o hacia abajo el numero de instancias.

Hay varias formas de configurar una scaling policy:

Se puede asociar mas de una politica a un AutoScaling Group. Por ejemplo, se puede crear una política que mantenga en un nivel el uso del CPU llamada CPULoad y otra que mida la utilización del CPU llamada CPUUtilization.

Una practica recomendada es escalar hacia arriba rapidamente y escalar hacia abajo lentamente, de manera que se puede respnder a los picos pero no terminar de manera inadvertida instancias muy rapidamente. Auto Scaling tambien soporta cooldown period, que es una característica configurable que determina cuando suspender actividades de scaling por un corto tiempo para un AutoScaling group.

Si inicia instancias de EC2, un cargo se realizará por una hora completa de ejecución. La ejecución parcial de instancias equivale al uso completo de una hora. Esto significa que si existe una policy permisiva que dispare, termine y reinicie muchas instancias dentro de una hora, un cobro por la hora completa de cada instancia incluso si se terminaron algunas de ellas en menos de una hora.

Es importante considerar que el bootstraping toma algo de tiempo para disparar las nuevas instancias. Las instancias que se inician y estan disponibles para despliegue mas rapido pueden aumentar la capacidad mas rapidamente. Por otra parte, las instancias mas stateless que stateful entran y salen de forma mas sencilla del AutoScaling Group.

La configuración del AutoScaling group puede ser modificada para referenciar una nueva AMI, e incluso una nueva instancia si es necesario. Despues cuando se desregistren o terminen las otras instancias, la nueva instancia sera la referencia (esta puede incluir por ejemplo parches de seguridad y actualizaciones del software).

CloudWatch. AWS Identity and Access Management (IAM).
comments powered by Disqus