nginx负载均衡设置
在nginx的配置文件【./conf/nginx.conf】中加入:
upstream test.balance123.com {
server 192.168.1.223:80;
server 192.168.1.101:8888;
}
server {
listen 80;
location /{
proxy_pass http://test.balance123.com;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
proxy_read_timeout 200;//用于代理超时控制
}
}
默认轮循。
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、加权轮询
根据请求按一定比例访问后端服务器,主要用于服务资源分配不均的情况。
upstream test.balance123.com {
server 192.168.1.223:80 weight=10;
server 192.168.1.101:8888 weight=5;
}
eg:上面的配置使得223的请求量是101的2倍
3、ip_hash
根据请求ip的hash结果分配后端服务器,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:
upstream resinserver{
ip_hash;
server 192.168.1.223:80;
server 192.168.1.101:8888;
}
4,least_conn
我们知道轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同。
这有个前提,就是每个请求所占用的后端时间要差不多,如果有些请求占用的时间很长,会导致其所在的后端
负载较高。在这种场景下,把请求转发给连接数较少的后端,能够达到更好的负载均衡效果,这就是least_conn算法。
least_conn算法很简单,首选遍历后端集群,比较每个后端的conns/weight,选取该值最小的后端。
如果有多个后端的conns/weight值同为最小的,那么对它们采用加权轮询算法。
upstream resinserver{
least_conn;
server 192.168.1.223:80;
server 192.168.1.101:8888;
}
Note:Nginx的反向代理在配置上与负载均衡一致;只不过当后端服务器为一台时称为反向代理,有多台时称为负载均衡。