美文网首页
Linux_328_Nginx负载均衡之调度算法

Linux_328_Nginx负载均衡之调度算法

作者: 为宇绸缪 | 来源:发表于2022-12-06 20:23 被阅读0次

    upstream模块调度算法

    调度算法一般分几类:

    • 第一类是静态调度算法:负载均衡器根据自身设定的规则进行分配,不需要考虑后端节点的健康情况。例如轮询、加权轮询、哈希类型调度算法。
    • 第二类是动态调度算法,负载均衡器会判断后端节点的当前状态,来决定是否分发请求。例如链接数最少的优先分发,响应时间短的优先分发,如least_conn、fail等都是动态调度。

    rr轮询(round-robin)

    按照请求顺序逐一分配给不同的后端节点服务器,如果后端节点宕机,宕机的服务器会被自动从地址池中剔除,新的请求会发给正常的服务器。

    wrr(权重轮询)

    给后端节点服务器增加权重,数值越大,优先获得客户端请求,可以以服务器配置来决定比例大小,从而解决新旧服务器的性能不均衡问题等。

    upstream backend {
        server 192.168.178.122 weight=1;
        server 192.168.178.121 weight=5;
    }
    

    默认是rr轮询机制。使用systemctl stop network,但是只能在虚拟机上使用

    ip_hash
    每个请求按客户端IP的hash结果分配,当新的请求到达,将其客户端IP通过哈希算法得到一个唯一值,在随后的客户端请求中,如果客户端的IP哈希值相等,该请求就会固定发给一台服务器。
    该调度算法可以解决动态网页中的session共享问题。
    注意了使用ip_hash不得再使用weight、backup两个参数,造成冲突了,即使写了也不生效。

    upstream chaoge_backend {
        ip_hash;
        server 192.168.178.121;
        server 192.168.178.122;
    }
    

    fail
    该算法根据后端服务器节点的响应时间来分配,响应时间短的优先分配,该算法根据页面大小和加载时间长短进行负载均衡,nginx本身不支持fail形式,如果要支持该算法,必须下载nginx的upstream_fail模块
    用的比较少

    upstream chaoge_backend {
    fail;
    server 192.168.178.121;
    server 192.168.178.122;
    }
    

    least_conn
    该算法根据后端节点的链接数决定分配请求,哪个机器链接数少,就发给谁。一般给闲置的机器加上这个参数

    url_hash
    和ip_hash类似,该算法根据客户端请求的URL信息进行hash得到唯一值,让每个URL固定的发给同一个后端服务器,后端服务器为缓存服务器效果最佳。
    Nginx本身是不支持url_hash的,需要单独安装hash模块
    url_hash(web缓存节点)和ip_hash(会话保持)功能类似。
    用的比较少

    upstream chaoge_backend {
    server squid1:3128;
    server squid:3128;
    hash $request_uri; # 针对当前的请求得到唯一值
    hash_method crc32; # hash的算法
    }
    

    相关文章

      网友评论

          本文标题:Linux_328_Nginx负载均衡之调度算法

          本文链接:https://www.haomeiwen.com/subject/amdgfdtx.html