Nginx反向代理实现均衡负载及调度方法(面)

一、Nginx反向代理实现均衡负载及调度方法

1、ngx_http_upstream_module模块

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

2、upstream name { ... }

定义后端服务器组,会引入一个新的上下文

默认调度算法是wrr

Context: http

upstream httpdsrvs {

server ...

server...

}

3、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 标记为“不可用”,实现灰度发布

4、ip_hash 源地址hash调度方法

5、least_conn 最少连接调度算法,当server拥有不同的权重时其为wlc,当所有后端主机连接数相同时,则使用wrr,适用于长连接

6、hash key [consistent] 基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合

作用:将请求分类,同一类请求将发往同一个upstream server,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用

hash $request_uri consistent;

hash $remote_addr;

hash $cookie_name; #key为name的cookie

7、keepalive 连接数N;

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

案例:实现调度

vim /apps/nginx/conf/nginx.conf

http {
    upstream httpdsrvs{
        server 192.168.43.104;
        server 192.168.43.105;
}
vim /apps/nginx/conf.d/test.conf 

server {
     server_name www.x.com ;
     root /data/test ;
     location / {
         proxy_pass  http://httpdsrvs;
     }
}
[root@centos6 ~]# while true ; do curl www.x.com; sleep 0.5; done
192.168.43.105
192.168.43.104
192.168.43.105
192.168.43.104
192.168.43.105
192.168.43.104

你可能感兴趣的:(Nginx反向代理实现均衡负载及调度方法(面))