什么是负载均衡
就是当一台服务器并发量超过自身的承受能力时,服务器就会崩溃,为了避免服务器崩溃,我们通过负载均衡的方式来分担服务器的压力。组成一个服务器集群,当用户给服务器发送请求的时候,请求会先发送给负载均衡服务器,然后负载均衡服务器会选择其中一个压力较小服务器,然后将该访问请求引入给这个服务器。这样每个服务器压力就会比较均衡,压力没那么大。
就好比一个人要一下子吃完一大锅饭,会直接撑死,为了让他死不了,所以找几个人给他分担。
负载均衡策略
使用负载均衡,必须面临的一个重要问题就是Session的丢失的问题。
从用户端来解释,就是当一个用户第一次访问被负载均衡代理到后端服务器A并登录后,服务器A上保留了用户的登录信息;当用户再次发送请求时,根据负载均衡策略可能被代理到后端不同的服务器,例如服务器B,由于这台服务器B没有用户的登录信息,所以导致用户需要重新登录,用户体验极差。
1、轮询(推荐使用,注意:要使用session共享技术解决session丢失的问题)
这种是默认的策略,把每个请求按顺序逐一分配到不同的server(服务器),如果server(服务器)挂掉,能自动剔除。
upstream fengzp.com {
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
2、最少连接
把请求分配到连接数最少的server(服务器)
upstream fengzp.com {
least_conn;
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
3、权重
使用weight来指定server访问比率,weight默认是1。以下配置会是server2访问的比例是server1的两倍。
upstream fengzp.com {
server 192.168.99.100:42000 weight=1;
server 192.168.99.100:42001 weight=2;
}
4、ip_hash(没有session丢失问题,因为同一客户端只会分配到同一的服务器)
每个请求会按照访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一server进行处理,可以解决session的问题。如果server挂掉,能自动剔除。
upstream fengzp.com {
ip_hash;
server 192.168.99.100:42000;
server 192.168.99.100:42001;
}
ip_hash可以和weight结合使用。