Quiero configurar el autoescalado en AWS. No quiero usar Elastic Load Balancer.
La llamada automática en Amazon crea instancias de EC2 sin problemas durante los picos de demanda para mantener el rendimiento, y disminuye automáticamente durante las pausas de la demanda para minimizar los costos.
Dado que estas instancias EC2 se crean automáticamente, sus nombres de host son desconocidos para NGINX.
Lo sé y ya tengo una configuración ascendente en nginx a 10 instancias EC2.
Quiero poder agregar / actualizar / eliminar automáticamente nombres de servidor a mi configuración de nginx ascendente, cuando el escalado automático agrega / actualiza / elimina instancias EC2.
nginx
amazon-ec2
amazon-web-services
autoscaling
Luis Lobo Borobia
fuente
fuente
Respuestas:
Esto se puede lograr utilizando Amazon SDK (ya casi termino, lo pondré en github), utilizando el servicio SNS, EC2 y Autoscaling.
He seguido los siguientes pasos para lograr esto:
Encuentre el script aquí https://github.com/singhupendra/aws-autoscale
fuente
Gracias @talonx, he investigado un poco, Amazon Autoscale tiene una API para consultar el estado actual del grupo de escalado automático y enumera a sus miembros. Devuelve el ID de instancia ( http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/api_requests.html#query-example ), luego puede usar las herramientas de descripción para obtener el nombre del servidor ( http: // docs .aws.amazon.com / AWSEC2 / latest / CommandLineReference / ApiReference-cmd-DescribeInstances.html ) y finalmente recrea el archivo de inclusión ascendente. Pude sentir las notificaciones de Autoescalado para iniciar un proceso que realiza estas tareas.
Todavía no lo implementé, pero es un camino a seguir.
También se puede usar Autocaling con SNS http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html
fuente
Todavía no lo he implementado, pero estoy buscando usar la Reconfiguración sobre la marcha de NGiNX Plus . Estoy pensando que la AMI o la administración de la configuración (Puppet, Salt o similar) que configura una instancia de Auto Scaling Group podría llegar a la API de reconfiguración de NGiNX (tal vez, a través de un nombre de dominio interno de Route53, por lo que ninguna IP fija debe usarse) y agregarse al clúster ascendente para el proxy inverso. Después de eso, la comprobación de estado incorporada de NGiNX se haría cargo de esa instancia [agregada] y la abandonaría en caso de que no esté disponible. Esta parece ser la solución más limpia y no hay demora en agregar la instancia, y casi ninguna demora en descartarla ya que NGiNX Plus presenta un control de estado fuera de banda.
Este enfoque evita la necesidad de configurar un sistema de autodescubrimiento (Cónsul, Serf o similar) que para configuraciones más pequeñas a menudo parece una sobrecarga tanto en términos de configuración / administración como en instancias EC2 requeridas. El cónsul, por ejemplo, requiere un mínimo de tres instancias para ser estable. Quizás Serf podría ejecutarse en las instancias de ASG, pero aún queda la sobrecarga de mantenerlo, y si el ASG se reduce a una o dos instancias, perdería el quórum.
Finalmente, esto podría combinarse con una notificación automática de los cambios de Auto Scaling Group, tal vez en los servidores NGiNX que se usan para el equilibrio de carga. Un oyente activado por dicha notificación (esto puede ser a lo que Upendra también se refirió) podría agregar instantáneamente la nueva instancia a NGiNX a través de la API de modificación sobre la marcha. Además del costo de NGiNX Plus, esto hace que uno se pregunte por qué alguien usaría Elastic Load Balancer con sus numerosos problemas en primer lugar.
Editar 12.07.2015: ngx_openresty 's equilibrador-por-lua ( ver este hilo GitHub ) ofrece una otra posible solución de código abierto para hot-añadir / eliminar servidores del grupo aguas arriba Nginx. Todavía no he experimentado con esto, pero quería agregar una mención aquí para cualquiera que se encuentre con esta publicación.
fuente