Hi Nginxers,I’m writing a new module that syncs upstreams from
conf-servers(consul, etcd…). During the nginx offering service, the
module makes requests to the conf-server(consul, etcd…) to pull
upstreams backend list if upstreams value has changed and update
upstreams peers to make new backend servers working.
The reason I write the module is that: Last the Spring Festival,
the company need extend the backend resources for the festival, need
reload the new configuration of nginx, and find that partly requests
cost much more time during the reloading, suspect it’s caused by
reloading. The last, I think the fact prove it’s true. The
contrast between reloading and using module. Other refer:
the other hand, the module I am writing is mostly different than other
modules I could learn from, and all my knowledge about nginx is from
looking at how other modules is written, I’m wondering and hoping if
anyone could comment on how I designed the module and raise any issues
if I did anything problematic, wrong, weird or even stupid.
Any convenience, the module is here:
As everyone knows every work process has it’s conf, so the module
realizes that every work-process pulls upstreams independently and
updates its own peers. I think that’s easy and more reliable. Every
peers is a array, so every updating need a new array and delete old
peers, but, when delete old peers needing judge if having old requests
use that. It’s a little complicated.What do you think?
work-process flow: startup->pull from conf-servers->pull success->try to
update->work; startup->pull from
conf-servers->failed, parse dump file->try to update->work;I am not sure
I make that clear, but I really want to get you advise. Any comments,
suggestions, warnings are welcome.