Tengo una configuración de aplicación web con un equilibrador de carga y un grupo de escala automática para administrar la escala. El código fuente está en un repositorio git, así que no tengo que actualizar las imágenes cuando cambia el código, pero ocasionalmente el entorno cambia, por lo que creamos una nueva imagen. Luego, esa imagen debe ciclarse en el grupo de escalado automático.
¿Hay alguna forma de alternar las imágenes automáticamente? En este momento programo una acción de ampliación y reducción que elimina las instancias anteriores.
amazon-ec2
amazon-web-services
autoscaling
plataformas
fuente
fuente
as-set-instance-health
), de modo que el escalado automático simplemente la reemplaza con una nueva instancia.Respuestas:
Me gustaría sugerir "AWS-HA-Release" para hacer esto, la forma en que funciona AWS-HA-Release:
En este caso, puede enviar un nuevo código o nuevas versiones de AMI sin tiempo de inactividad y tener el beneficio de instancias completamente nuevas. La herramienta AWS-HA-Release está disponible en https://github.com/colinbjohnson/aws-missing-tools .
fuente
La forma más fácil es aumentar el número de instancias mínimas en el Grupo de autoescalado (ASG) al doble de su recuento actual, espere cuando se inicien todas y luego cambie ese número mínimo de instancias a lo que era. ELB matará instancias más antiguas y dejará instancias más nuevas con código. Para lograr esa política de terminación debe establecerse en ' OldestInstance ' para que funcione según lo previsto. La política de terminación predeterminada puede tener efectos secundarios no deseados.
Puede ver los parámetros y ejemplos de AWS CLI aquí: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
fuente
La forma en que administro este escenario es usar la función UpdatePolicy del objeto AWS :: AutoScaling :: AutoScalingGroup en la formación de nubes. cuando se actualiza la pila de formación de nubes, administrará el ciclo de las instancias.
algunas referencias http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html
fuente
También eche un vistazo a la herramienta Netflix Asgard que ahora es de código abierto. No solo puede configurar Grupos de Auto Scaling, sino que también puede realizar lanzamientos continuos de nuevas imágenes AMI para un grupo de instancias.
fuente
En realidad, no hay una forma realmente buena de hacerlo para ser honesto. La mejor manera de hacerlo es poner una versión en el nombre ASG. Cada vez que actualizo el AMI, creo una nueva configuración de inicio ASG + con la nueva versión para que no entre en conflicto con el otro grupo. Luego termino todas las instancias en el grupo anterior.
Si se requiere una implementación más tolerante a fallas, recomiendo agregar otro paso involucrando la creación de un nuevo balanceador de carga también. Esto le permite tener ambos ASG aislados entre sí. También le permite tener un área de "Puesta en escena" para probar sus cambios por última vez antes de actualizar. Luego, cuando esté listo para cambiar, actualice los registros DNS y finalice todas las instancias en el grupo anterior.
fuente
Como publiqué aquí (pregunta similar, solo con Terraform), no está integrado en ASG de ninguna manera, excepto si usa la formación en la nube. Luché con eso también, así que terminé escribiendo un "rodillo" que mira múltiples ASG, verifica su estado y actualizaciones. Siempre feliz de recibir comentarios. http://github.com/deitch/aws-asg-roller
fuente