Linux_327_Nginx负载均衡之upstream语法
Nginx的负载均衡功能是来自于ngx_http_upstream_module,该模块支持的代理形式有如下
proxy_pass 转发http请求
fastcgi_pass
uwsgi_pass 和python后台结合
memcached_pass
该模块作用是允许nginx定义一组,或者多组的服务器节点,在nginx接收到请求的时候,可以通过proxy_pass代理方式,把用户的请求发送到预先定义好的upstream地址池当中
nginx负载进行地址池的语法定义,通过upstream关键词定义负载均衡池的名字,例如my_web,然后再地址池中通过server关键词定义服务器节点的信息,可以填入ip,域名,以及负载均衡算法的定义
upstream my_web{
server 192.168.178.125;
server 192.168.178.126;
}
proxy_pass http://my_web;
更多的upstream写法
upstream参数解释
基本写法如下
upstream my_web{
server 192.168.178.125 weight=1 max_fails=1 fail_timeout=10s;
server www.yuweijie.cn:8000;
}
常见参数解释
server 是一个固定的关键词,后面跟着服务器ip或者是主机名,域名地址,默认是80端口,也可以指定端口转发
weight 表示定义服务器的权重,权重的数字越大,权重的地位越高,nginx就会优先给与分发请求,注意结尾写分号(;)
max_fails nginx尝试连接该节点的失败的次数,根据企业情况调整
backup 当其他非backup的机器挂掉,或者繁忙的时候,请求才会转发给backup机器,因此它是备份机器的效果
fail_timeout 表示在max_fails参数定义好的连接失败数之后,距离下次检查的时间
down 剔除,暂停当前节点的请求解析,不参与负载均衡
注意的是 upstream关键词应该写在nginx.conf中的http{}标签内,并且默认的算法是轮询算法
完整的upstream案例
upstream www_pools{
server 192.168.178.160;
server 192.168.178.161:88 weight=1 max_fails=1 fail_timeout=10s;
server 192.168.178.162:90 weight=2 max_fails=2 fail_timeout=20s backup;
server 192.168.178.162:99 weight=3 max_fails=3 fail_timeout=30s backup;
}
使用域名形式,或者unix套接字形式
nginx请求转发的目的地有两类
(1)网络中的机器,因此可以填写该机器的ip,域名,端口
(2)本地的进程,可以使用socekt套接字进程通信文件去转发请求
upstream my_back{
server backup1.example.com
server backup2.example.com:8080 weight=9;
server unix:/tmp/backend3.sock;
}