Multiple upstream backup directives in stream module
Roman Arutyunyan
arut at nginx.com
Fri Sep 28 15:22:31 UTC 2018
Hi,
On Thu, Sep 27, 2018 at 07:55:40PM +0300, Roman Arutyunyan wrote:
> Hi,
>
> On Thu, Sep 27, 2018 at 02:51:25PM +0200, Marcin Wanat wrote:
> > Hi,
> >
> > i am using latest (1.15.4) nginx with stream module.
> >
> > I am trying to create config with one primary server that will accept no
> > more than 10 connections and multiple backups that will also receive up to
> > 10 connections only when previous backup server is already full.
> >
> > As exact behavior of multiple backup directives is not well explained in
> > documentation i would like to ask if i am doing right.
>
> There's only one level of upstream backup in nginx. Once all primary servers
> fail, the balancer switches to backup servers. All backup servers are equal.
> One of them is chosen based on the balancing algorithm. If it fails, another
> one is chosen and so on, just like it happens with primary servers.
>
> If you want several levels of backup, you still can do it with 'error_page 502'.
> Once all servers in your initial location fail (primary + 1st level backup),
> error 502 is generated. Then you continue in another location specified in
> error_page and repeat proxying with other servers (2nd level backup).
Sorry, that was the answer for HTTP. In the stream module there's nothing
like error_page, so this approach is not possible.
> > My current configuration is:
> > stream {
> > upstream backend {
> > zone upstream_backend 64k;
> > server 10.0.1.1:9306 max_conns=10;
> > server 10.0.1.2:9306 max_conns=10 backup;
> > server 10.0.1.3:9306 max_conns=10 backup;
> > server 10.0.1.4:9306 backup;
> > }
> > server {
> > listen 127.0.0.1:9306;
> > proxy_connect_timeout 1s;
> > proxy_timeout 3s;
> > proxy_pass backend;
> > }
> > }
> >
> >
> > I would like it to work like this:
> >
> > When we have up to 10 concurrent connections, all should go always to
> > primary 10.0.1.1
> >
> > When we have 25 concurrent connections it should work like this:
> > -First 10 connections go to primary 10.0.1.1
> > -Next 10 connections go to backup 10.0.1.2
> > -Next 5 connections go to backup 10.0.1.3
> >
> > When we have 45 concurrent connections it should work like this:
> > -First 10 connections go to primary 10.0.1.1
> > -Next 10 connections go to backup 10.0.1.2
> > -Next 10 connections go to backup 10.0.1.3
> > -Next 15 connections go to backup 10.0.1.4
> >
> >
> > Will multiple backup directives work as i expected or will they just round
> > robin between each of them up to max_conns limit ?
> >
> >
> > Regards,
> > Marcin Wanat
>
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx
>
>
> --
> Roman Arutyunyan
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
--
Roman Arutyunyan
More information about the nginx
mailing list