软件方式的负载均衡一般有两种方法
1、Nginx、Haproxy分布式服务器网关的负载均衡;
2、Ribbon&Feign 结合Nacos本地消费者客户端进程内的负载均衡(即不用先去访问nginx这类的服务器网关),用于Spring Cloud;
那么先复习下Nginx负载均衡的算法和配置。
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)
比如权重,这个weight也很好理解,权重大的被访问的概率就大,上面这个例子的话,访问2次server1,访问一次server2
upstream webname {
server192.168.0.1:8080 weight 2;
server192.168.0.2:8080 weight 1;
}
IP hash,ip_hash的配置也很简单,直接加一行就可以了,这样只要是同一个ip过来的都会到同一台server上
upstream webname {
ip_hash;
server192.168.0.1:8080;
server192.168.0.2:8080;server 192.168.0.10:8090 max_fails=2fail_timeout=1;
}
关于nginx负载均衡配置的几个状态参数讲解。
down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了max_fails次失败后,暂停