¿Cómo mantener todas las instancias de AWS Auto-escalado Grupo actualizados después de implementar el nuevo código?

votos
0

Estoy tratando de construir un sistema más dinámico / escalable en AWS . He lanzado 2 instancias en un grupo AutoScaling donde el número mínimo de instancias es 2 y el máximo es 5 con un equilibrador de carga en frente de ellos. He habilitado Protección Terminación en los dos primeros casos, ya que van a ser los que yo uso para el despliegue de mi Rails aplicación a través de Capistrano .

El problema es que no estoy seguro de cuál es la mejor manera de mantener todas las instancias de mi grupo autoscaling hasta al día de manera que corran la misma versión de la aplicación.

He buscado muchas técnicas, a continuación son las que encuentro aplicable, pero todavía no sabemos lo que sería la mejor.

1- AWS CodeDeploy: se ve muy bien, usando azul / verde despliegue parece que sería hacer el trabajo bastante sólido con cero tiempo de inactividad. No sé si hay una regla de oro para esto, pero en mi opinión, el tiempo de implementación es un poco largo , estoy no está seguro de si sería aplicable cuando necesito para liberar una revisión .

2- través de script: no estoy seguro de cómo implementar esta usando AWS tampoco, pero, la idea es cuando un nuevo código se carga en mi 2 maestro (?) Instancias,

  1. Voy a crear una nueva configuración de lanzamiento con el nuevo IAM
  2. Actualizar el grupo autoscaling usar esa nueva configuración de lanzamiento
  3. De bajar mi grupo autoscaling a poner fin a los casos que están ejecutando la configuración antigua
  4. Con suerte, las políticas se AutoScaling crear nuevas instancias utilizando el nuevo configuración de lanzamiento

El problema con este enfoque es que se requiere alguna operación manual , que no quiero que confiar en gran parte.

3- Uso de Datos de Usuario: Ejecución de nuevos casos con datos de usuario que tira de la nueva versión del código. No creo que esto es una buena manera ya que probablemente habrá otros casos que ya están ejecutando el código antiguo.

Así que estas son las soluciones que he visto hasta ahora, ¿cuál sería la mejor solución?

¡Aclamaciones!

Publicado el 19/09/2018 a las 13:36
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Terminé usando una joya de extensión (mi aplicación está escrito en Ruby on Rails) para el despliegue. Yo ya estaba usando Capistranopara su despliegue, luego me enteré de la gema elbas, que internamente realiza lo siguiente:

  • Despliegue su código a cada instancia de ejecución conectado a un grupo determinado AutoScale
  • Después del despliegue, crear un IAM de una de las instancias en ejecución
  • Una el IAM con el nuevo código para una nueva configuración de lanzamiento de AWS
  • Actualizar su grupo AutoScale a utilizar la nueva configuración de lanzamiento
  • Eliminar cualquier IAM antiguas creadas por ELBAS
  • Eliminar cualquier configuración de lanzamiento antiguas creadas por ELBAS

Esta es básicamente la segunda opción (a través de la opción de secuencias de comandos), y la búsqueda de una joya que hace esto por mí, elimina el reto de manejar manualmente las cosas.

Esperamos que esto ayude, saludos!

Respondida el 23/09/2018 a las 07:30
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more