在nginx 1.9.0引入的ngx_stream_upstream_module
可以将请求根据规则代理到多个服务器上去,因此这个特性可以被用来做一个简单的负载均衡服务。
一个配置示例:
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server backend2.example.com:12345 max_conns=10;
server unix:/tmp/backend3 max_fails=3;
server backup1.example.com:12345 backup;
server backup2.example.com:12345 backup;
server backup3.example.com:12345 down;
}
server {
listen 12346;
proxy_pass backend;
}
upstream指令说明
用来指定一组后端server,在前端serve中通过proxy_pass upstream_name
调用。
upstream中的server指令说明
upstream中的server指令用来指定一个后端server。server可以指定成ip、域名、或者unix:
指定的sockets,并且这几种可以在一个upstream组中同时出现
以下是可以在server指令后添加的参数:
weight
权重,nginx用一个权重轮询的方法将连接分配到不同的server上,在以上的例子中,每7个连接会先分配5个给第一个server,然后第二个和第三个server各分配一个连接,这里你可能会问,第四、五个server呢?它们被指定城backup
,暂时不会分配连接给他们,请看下面的介绍。
max_conns
指定server的并发连接数,默认为0,表示没有限制。在 1.11.5之前的版本,该参数需要商业版nginx才有。
max_fails=number,fail_timeout=time
在fail_timeout指定的时间(单位:秒)里,如果有max_fails次数的失败连接,nginx将会将该server在接下来的fail_timeout的时间里,设置成不可用状态。max_fails默认为1,如果设置成0,将不统计次数(即不用这两个参数指定的功能)。
backup
该参数将server设置为备份server,当所有的server不可用时,才会访问该server
down
该参数将server设置成不可用,所有的连接都不会分配给它。