0.1概述
随着业务量的增大,一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,那么如何将用户的请求分发到集群中不同的机器上,这就是负载均衡要做的事情。
负载均衡:将请求分摊到集群中多个服务器节点上执行。
负载均衡实现方式:
硬件负载均衡:F5、深信服、Array等
优点:有厂商专业的技术服务团队提供支持,性能稳定
缺点:费用昂贵,对于规模较小的网络应用成本太高
软件负载均衡:Nginx、LVS、HAProxy等
优点:免费开源,成本低廉
0.2.Nginx负载均衡
upstream www.myweb.com{ <!--myserver就是下面自定义的-->
server 192.168.12.128:8080;
server 192.168.12.128:8081;
}
location /myweb{
proxy_pass http://www.myweb.com; <!--www.myweb.com这部分自定义-->
}
这时访问192.168.12.128/myweb,默认Nginx负载均衡是轮询策略。
0.3负载均衡策略
1.轮询(默认):这里的轮询并不是每个请求被分配到不同的后端服务器,与ip hash类似,但是是按照访问url的hash结果来分配请求,使得每一个url定向到同一个后端服务器。如果后端服务器down掉,能自动剔除。
2.weight:weight代表权重,默认为1,权重越高被分配的客户端越多。
upstream myserver{
server 192.168.12.128:8080 weight=10;
server 192.168.12.128:8081 weight=10;
}
3.最少连接:web请求会被转发到连接数最少的服务器上
upstream myserver{
least conn;
server 192.168.12.128:8080;
server 192.168.12.128:8081;
}
4.fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{
server 192.168.12.128:8080;
server 192.168.12.128:8081;
fair;
}
5.ip hash:也叫ip绑定,每个请求按访问ip的hash值分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream myserver{
ip_hash;
server 192.168.12.128:8080;
server 192.168.12.128:8081;
}
0.4其他配置
backup:其他所有机器宕机的时候,才请求backup机器
upstream myserver{
server 192.168.12.128:8080;
server 192.168.12.128:8081 backup;
}
down:表示当前是宕机状态,不参与负载均衡
upstream myserver{
server 192.168.12.128:8080;
server 192.168.12.128:8081 down;
}