Hello,
I’m proud to present a module, already mentioned on the list a few days
ago
by Grzegorz N., that provides nginx with API to communicate with
supervisord.
Initial release adds the ability to START and STOP backends (or any
programs) on demand. If supervisord’s [program:backend0] entry is
configured
with “startsecs” parameter, then supervisord (and ngx_supervisord) will
wait
that time before returning successful or failed status. This is of
course
done in asynchronous way, so it doesn’t halt nginx for a moment.
This simple feature, combined with load-aware load balancers (like
Grzegorz
Nosek’s nginx-upstream-fair) can offer very powerful features (starting
first backend when the first request arrives, starting/stopping backends
on
demand, depending on the load, etc, etc). Patch for nginx-upstream-fair
is
included in the release and it shows how easy all of this can be
achieved.
Current version allows only one module to “register” its monitors with
ngx_supervisord, but as soon as there will be need for more (read: other
modules will start using ngx_supervisord), this will be changed without
any
changes in the API.
Changes:
2010-04-29 VERSION 1.4
* Send shutdown command to supervisord on backend failure
and try to bring back first backend after all backends fail.
This is default and non-configurable behavior.
Requested by Grzegorz N…
Changes:
2009-11-19 VERSION 1.2
* Don’t run “monitors” on “cache manager” and “cache loader”
processes (this could lead to crash of either of them
when ngx_supervisord-enable load balancer tried to access
data available only on “worker” processes).
NOTE: This modification uses undocumented nginx's "feature"
to distinguish mentioned processes and starting from this
release "worker_connections" cannot be set to 512 (it can be
set to either lower or higher number, just not equal to 512).