nginx 负载均衡
一、七层负载均衡
在反向代理的基础上,把用户请求根据指定算法分发到一组 upstream虚拟服务池
后台启动两个网站 5000 6001
upstream 后的名字 www.test.com 是随便起的,最好是见名知意
weigth 表示访问到该网址的权重,数字越大访问到的几率越大
配置后重启
upstream www.test.com{
server 127.0.0.1:5000 weight=1;
server 127.0.0.1:6001 weight=1;
}
location /{
proxy_pass http://www.test.com;
}
负载状态
#down标记永久不可用 server 127.0.0.1:5000 down; #backup 标记为备份服务器,主服务器不可用时,启用 server 127.0.0.1:6001 backup; #max_fails=3 设置允许请求代理失败的次数,默认为1 #fail_timeout=15 设置经过max_fails失败后,服务暂停的时间,默认10秒 server 127.0.0.1:7001 max_fails=3 fail_timeout=15;
负载均衡策略
1 轮询 默认方式
2 weight 权重
不设置,默认为1
server 127.0.0.1:5000 weight=2;
server 127.0.0.1:6001 weight=5;
3 ip_hash 依据ip分配方式
把同一个ip分配到同一个后端服务器,可以解决session问题等
upstream xx{ ip_hash; server 127.0.0.1:5000; server 127.0.0.1:6001; }
缺点是负载均衡能力会下降,所以session一般用redis
4 least_conn 依据最少连接方式
upstream xx{ least_conn; server 127.0.0.1:5000; server 127.0.0.1:6001; }
适合请求时间长短不一造成服务器过载的情况
5 url_hash 依据url分配方式
需要配合缓存命中
upstream xx{ hash &request_uri; server 127.0.0.1:5000; server 127.0.0.1:6001; }
6 fair 依据响应时间方式
可以根据页面大小,加载时间长短只能进行负载
需要添加upstream-fair模块
二、四层负载均衡
四层比七层效率高,四层不识别域名
LVS HAProxy F5 nginx
添加模块 --with-stream
stream{ upstream xxx{ server 192.168.200.1:6001; server 192.168.200.1:6002; } server{ listen 81; proxy_pass xxx; } }
其他负载均衡
二层负载均衡
基于mac地址
三层负载均衡
网络层采用虚拟ip