Nginx-调度算法

十二、ngx_http_upstream_module

用于将多个服务器定义成服务器组,而由proxy_pass, fastcgi_pass等指令
进行引用

1、upstream name { ... }

定义后端服务器组,会引入一个新的上下文
默认调度算法是wrr
Context: http
upstream httpdsrvs {
server ...
server...
...
}

2、server address [parameters];

在upstream上下文中server成员,以及相关的参数;Context:upstream
address的表示格式:
unix:/PATH/TO/SOME_SOCK_FILE
IP[:PORT]
HOSTNAME[:PORT]
parameters:
weight=number 权重,默认为1
max_conns 连接后端报务器最大并发活动连接数,1.11.5后支持
max_fails=number 失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用,默认为1
fail_timeout=time 后端服务器标记为不可用状态的连接超时时长,默认10s
backup 将服务器标记为“备用”,即所有服务器均不可用时才启用
down 标记为“不可用”,配合ip_hash使用,实现灰度发布

3、ip_hash 源地址hash调度方法

(第一次调度到那,下次还是在那,只要源地址不变)
upstream backend {
ip_hash;
server 192.168.43.67:80 weight=2;
server 192.168.43.57:80 weight=10
}

4、least_conn 最少连接调度算法,

当server拥有不同的权重时其为wlc,
当所有后端主机连接数相同时,则使用wrr,适用于长连接

5、hash key [consistent]

基于指定的key的hash表来实现对请求的调度,
此处的key可以直接文本、变量或二者组合
作用:将请求分类,同一类请求将发往同一个upstream server,使用
consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器
(如varnish)时使用
(uri固定了,后端服务器就固定了)
hash $request_uri consistent;
hash $remote_addr;

6、keepalive 连接数N;

为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连
接管理的消耗

举例:nginx充当lvs-调度算法

1、在主配置文件中设置(http中)
vim /etc/nginx/nginx.conf
http {
。。。
        upstream backend {
                server 192.168.43.67:80;
                server 192.168.43.57:80;
        }
。。。
}
2、编辑虚拟主机配置文件
vim /etc/nginx/conf.d/vhosts.conf
location / {
                proxy_pass http://backend;
                }
3、重启测试
备注:自动支持健康检查
举例:nginx当调度器-加权重
vim /etc/nginx/nginx.conf
upstream backend {
server 192.168.43.67:80 weight=2;
server 192.168.43.57:80 weight=10;
server 172.0.0.1:8080 backup(后端服务器全宕机用显示本机的web'界面)
重启测试
}

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注