GUI / nginx-upstream-dynamic-servers

An nginx module to resolve domain names inside upstreams and keep them up to date.
MIT License
311 stars 74 forks source link

The 'resolve' operation keeps timing-out even after DNS service recovers #24

Open eranshpiner opened 7 years ago

eranshpiner commented 7 years ago

Hi,

I've been using this module within nginx 1.11.2.2 and it's working great! Thanks!

The one thing I've encountered and can't seem to overcome, it that whenever the DNS service "hiccups" for some reason - e.g. it becomes temporarily unavailable for a short while, then the resolve operation starts timing-out continuously, and no longer succeeds, even after the DNS service recovers. It's like the (udp?) connection to the DNS service becomes futile, and is not getting re-established.

Here are the log lines which I'm seeing repeatedly (the IP address of the DNS service / name server is 10.0.220.2, in this example):

[error] 16#0: upstream-dynamic-servers: 'member_host' could not be resolved (110: Operation timed out)
[error] 16#0: recv() failed (111: Connection refused) while resolving, resolver: 10.0.220.2:53

Taken from my nginx configuration:

resolver 10.0.220.2 valid=10s;
upstream members_tier {
        server member_host:8080 resolve;
        keepalive 16;
}

What would you think is the reason for this pattern of behavior? Is there a way to solve this?

Thanks, Eran.