HttpUpstreamModule: Need more detailed Information

Hello all,

i’m new to nginx and first of all i have to say it’s a great piece of
software.

I need some more detailed Information about nginx behaviour regarding
HttpUpstreamModule and I hope you can give me some hints and links where
i can learn more about it.
I set up nginx/1.2.2 as reverse proxy in front of a bunch of apache
server(*) which are located in different housing locations.

Now I have some questions and I can’t find any docs or wiki pages with
detailed answers.

  • how does nginx detect if one ore more upstream servers has diappeared?

    • what kind of mechanism does nginx use? icmp or something else?
    • how often does nginx request the status of upstream servers?
  • how can I monitor the status of upstream server seen by nginx (I
    monitor the status of running apache prcesses on the upstream server
    separately)

It’s a is really simple setup atm and I have not activated any other
module:

upstream frontend {
server frontend1:80 weight=100 max_fails=2 fail_timeout=10s;
server frontend2:80 weight=100 max_fails=2 fail_timeout=10s;
server frontend3:80 weight=100 max_fails=2 fail_timeout=10s;
server frontend4:80 weight=100 max_fails=2 fail_timeout=10s;
server frontend5:80 weight=100 max_fails=2 fail_timeout=10s;
}

location / {
proxy_next_upstream http_502 http_503 error;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://frontend/;
proxy_redirect default;
}

I googled around and found this thread
Querying backend/upstream server status but got no answer.

Any help is appreciated

Regards, Axel

Hello!

On Fri, Aug 10, 2012 at 01:36:46PM +0200, Axel wrote:

Now I have some questions and I can’t find any docs or wiki pages
with detailed answers.

  • how does nginx detect if one ore more upstream servers has diappeared?
    • what kind of mechanism does nginx use? icmp or something else?

It detects based on status of requests to upstream servers. If
requests fail - the server is considered down and additional
requests aren’t routed to it for some time.

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

  • how often does nginx request the status of upstream servers?

For alive servers - as often as normal requests are routed to the
servers. For servers already considered down - once per
fail_timeout (per worker, see below).

  • how can I monitor the status of upstream server seen by nginx (I
    monitor the status of running apache prcesses on the upstream server
    separately)

Currently, there is no way. Moreover, each nginx worker process
has it’s own idea about status of upstream servers.

Maxim D.

2012/8/10 Axel [email protected]:

Now I have some questions and I can’t find any docs or wiki pages with
detailed answers.

  • how does nginx detect if one ore more upstream servers has diappeared?

    • what kind of mechanism does nginx use? icmp or something else?
    • how often does nginx request the status of upstream servers?
  • how can I monitor the status of upstream server seen by nginx (I monitor
    the status of running apache prcesses on the upstream server separately)

You may try the Tengine (http://tengine.taobao.org/), a forked nginx
version. We added proactive health check for the upstream servers.

This module
(http://tengine.taobao.org/document/http_upstream_check.html)
can check the upstream servers periodically. If the upstream is marked
down, the request will not be sent to this server. If it’s up, the
request will be sent to it again.

If you don’t like this forked Nginx, you also can use the single
ngx_http_upstream_check module
(GitHub - yaoweibin/nginx_upstream_check_module: Health checks upstreams for nginx). It can
supply the same feature as Tengine.

Thanks. Good luck.

Hi,

thanks for your answers. I will have a look on nginx development and
take a look as suggested in the other answer.

Regards,
Axel

Am 10.08.2012 15:45, schrieb Maxim D.:

  • how does nginx detect if one ore more upstream servers has diappeared?
    • what kind of mechanism does nginx use? icmp or something else?

It detects based on status of requests to upstream servers. If
requests fail - the server is considered down and additional
requests aren’t routed to it for some time.