Nginx负载均衡实现的基本过程
先利用ngx_http_upstream_module模块定义一个后端服务器组
然后再用其他代理相关模块进行负载均衡
ngx_http_upstream_module模块
ngx_http_upstream_module模块用于定义可由proxy_pass、fastcgi_pass、uwsgi_pass、scgi_pass和memcached_pass指令引用的服务器组
常见配置项
1、upstream name { … }
定义后端服务器组,会引入一个新的上下文;Context: http
示例:
upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com backup;
}
2、server address [parameters];
在upstream上下文中server成员,以及相关的参数;
parameters:
weight=number:权重,默认为1;
max_fails=number:失败尝试最大次数;超出此处指定的次数时,server将被标记为不可用;
fail_timeout=time:设置将服务器标记为不可用状态的超时时长;
max_conns:当前的服务器的最大并发连接数;
backup:将服务器标记为“备用”,即所有服务器均不可用时此服务器才启用;
down:标记为“不可用”;
3、least_conn;
最少连接调度算法,当server拥有不同的权重时其为wlc;
4、 ip_hash;
源地址hash调度方法;
示例:
upstream backend {
ip_hash; #设置调度算法
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
5、keepalive connections;
为每个worker进程保留的空闲的长连接数量;