Estoy usando nginx como equilibrador de carga frente a las instancias de mi servidor web. Ejecuto 4 instancias del servidor web y distribuyo el tráfico por igual a través de ellas usando nginx. Cuando estoy implementando una nueva versión, cambio el nginx.conf y marco el primer 2 de los 4 servidores, luego reinicio nginx. Actualizo el código del servidor y reinicio los primeros 2 servidores. Luego edito nginx.conf para indicar que los primeros 2 servidores están activos y marcar los otros 2 inactivos, nuevamente reiniciar nginx. Luego actualizo y reinicio otras dos instancias. Nuevamente actualice el nginx.conf marcando todos los servidores y el reinicio final de nginx.
Tengo que hacer este proceso varias veces en algunos días. La realización manual de los pasos anteriores cada vez resulta propensa a errores.
¿Existe un acceso programático a nginx / nginx.conf para poder automatizar este proceso?
[La única forma en que me imagino ahora es escribir los pasos anteriores en el script de shell]
fail_timeout
5 en cada uno de sus backends, elimine dos de ellos y NGINX lo recogerá y redirigirá todo el tráfico a los dos segundos nodos. Actualice su código, espere 5 segundos (o sea cual sea su valor de tiempo de espera) y NGINX comenzará a usar los dos primeros servidores, luego retire los segundos dos y repita. NGINX juega muy bien con ese tipo de configuraciónRespuestas:
No, nginx no tiene una API de configuración.
Aunque hay casos en los que es posible que deba marcar manualmente los servidores como inactivos, la configuración general de proxy_next_upstream + fail_timeout funcionará.
fuente
Ahora hay nginx-conf , un módulo NPM que proporciona acceso programático a configuraciones nginx.
fuente