• nginx负载均衡的策略


    1、轮询(默认) 应用程序轮流来响应请求
    2、最少连接(least-conn)    请求被分配到活动连接最少的服务器上
    3、ip-hash    通过一个hash函数决定哪个服务器来响应用户的请求(依据客户端的请求ip)
    4、权重配置(weight)
    5、手动宕机与备份主机(down,backup)
    6、fair(第三方) 响应时间方式
    7、url_hash(第三方) 依据URL分配方式
    注意:backup不能和ip_hash一起使用
    1、默认的负载均衡方式是轮询,所用的请求通过反向代理给了myapp1组,nginx通过负载均衡来分发这些请求到三个服务上;在nginx中HTTP, HTTPS, FastCGI, uwsgi, SCGI, and memcached 的负载均衡都是通过反向代理实现的。
    A.要配置https的负载均衡只需要将http协议改https就可以了,其他位置不变;
    B.要实现FastCGI, uwsgi, SCGI, memcached的负载均衡可以分别使用 fastcgi_pass, uwsgi_pass,
    scgi_pass, and memcached_pass指令;
    2、在“请求需要更长的时间来完成”的场景下采用“最少连接”方式可以更公平的将负载分配到多个机器上面。使用“最少连接”后,nginx不会将请求分发到繁忙的机器上面,而且将请求分发的较清闲的机器上面。
    “最少连接”的配置:在upstream{}中添加least-conn;
    3、“轮询”和“最少连接”这两种负载均衡方式会将新的请求分发到不同的机器上,很难保证每个客户端会固定访问某一个服务器。如果需要某个客户端只访问访问固定的一个服务器可以通过ip-hash负载均衡方式实现。
    ip-hash实现原理: 使用ip-hash时,客户端的ip作为一个散列的Key来决定服务器组中哪个服务器来响应请求,这种方式可以保证每个客户端每次访问的都是同一个服务器。
    "ip-hash"的配置:在upstream{}中添加ip_hash;
    4、服务器权重值越大,nginx将把更多的请求发送给该服务器。
    "权重"的配置:在upstream{}中添加weight;
    5、配置手动的宕机、备份主机
    down:表示该主机不参与服务;
    backup:表示该主机正常访问中不使用,如果所有的主机性能都不够的时候自动启动该配置项;
    “手动宕机、备份主机”的配置:在upstream{}中添加down、backup;
    6、按照服务器端的响应时间来分配请求,响应时间短的优先分配。
    7、按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
    服务器的健康检查:max_fails 与 fail_timeout
    如果某个请求被分配到了一个服务器上,服务器无法响应,那么nginx会标记它失败了,在短时间内,nginx是不会将之后的请求分配给标记失败的服务器。
    max_fails指令可以设置最大失败次数,默认是1。
    fail_timeout指定响应时间超过多少秒就将服务器标记为失败。
  • 相关阅读:
    Java中对话框的弹出
    数据格式化和ModelAttribute注解的介绍
    SpringMVC的环境搭建
    Js基础之数组
    Js基础之函数
    POJ-3208 Apocalypse Someday (数位DP)
    HDU-6148 Valley Number (数位DP)
    [SCOI2009] [BZOJ1026] windy数
    POJ-2411 Mondriann's Dream (状压DP)
    「SCOI2005」互不侵犯 (状压DP)
  • 原文地址:https://www.cnblogs.com/rinack/p/9717603.html
Copyright © 2020-2023  润新知