nginx实现http负载均衡的几种调度算法具体补充

首先知道一点:

upstream 支持的状态参数

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:      

  • down,表示当前的server暂时不参与负载均衡。

  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。


1.轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下

vim balance-http.conf

upstream balance{

        server 127.0.0.1:81 weight=1 ;

server 172.16.8.100:81 weight=1 ;

server 127.0.0.1:81 backup;

}

在backup主机上定义默认页,echo "this is backup" > backup.html

当前两台机器出现故障无法访问时,我们可以定义backup主机来供用户访问,这样可以提高用户体验。

2.ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

vim balance-http.conf

upstream balance{

ip_hash;

        server 127.0.0.1:81 weight=1max_fails=2 fail_timeout=2;

server 172.16.8.100:81 weight=1max_fails=2 fail_timeout=2;

}

不断刷新页面后,会一直停留在某一页面。





你可能感兴趣的:(Web)