ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

从零开发短视频电商 Nginx负载均衡配置总结

2021-12-07 14:33:34  阅读:134  来源: 互联网

标签:负载 max fails server Nginx timeout fail 服务器 电商


负载均衡

nginx默认支持四种调度算法

  • 轮询(rr)-默认策略:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器故障,故障系统自动清除,使用户访问不受影响。
  • 轮询权值(weight):weight值越大,分配到的访问几率越高,主要用于后端每个服务器性能不均的情况。
  • ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器,主要解决动态网站session共享的问题。
  • least_conn: 最少链接数,那个机器连接数少就分发。
  • url_hash-第三方:按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率,nginx本身不支持,如果想使用需要安装nginx的hash软件包。
  • fair-第三方:这个算法可以依据页面大小和加载时间长短智能的进行负载均衡,也就是根据后端服务器的响应时间来分配请求,相应时间短的优先分配,默认不支持,如果想使用需要安装upstream_fail模块。
upstream lakerService#自定义组名 {
    ip_hash; 
    server 192.168.0.1:8080 weight=1 max_fails=3 fail_timeout=15;
    server 192.168.0.1:8081 weight=1 max_fails=3 fail_timeout=15;
    server 192.168.0.1:8082 down;
    server 192.168.0.1:8032 backup;
    server x2.baidu.com;    #可以是域名   
                            #down         不参与负载均衡
                            #weight=5;    权重,越高分配越多,默认为1。  
                            #backup;      预留的备份服务器,其他所有的非backup机器挂了或者忙的时候,才会请求这个backup机器。
                            #max_fails    某台server请求允许失败的次数,默认为1。
										  超过设置次数后,在fail_timeout时间内,新请求不会分配给这机器。
                            #fail_timeout 超过失败次数后,服务暂停时间,默认为10秒。
										  某台server达到max_fails次数后,在fail_timeout时间内,nginx认为这台server不可用,不会转发请求给它。
                            #max_coons    限制分配给某台server最大的接受的连接数,超过设置数量,将不会分配给它新连接,默认为0表示不限制。
                            #根据服务器性能不同,配置适合的参数
    
    #server 106.xx.xx.xxx;        可以是ip
    #server 106.xx.xx.xxx:8080;   可以带端口号
    #server unix:/tmp/xxx;        支出socket方式
}
  • max_fails 允许请求失败的次数,默认是1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。0表示禁止失败尝试,企业场景:2-3次,京东1次,蓝汛10次,根据业务需求去配置。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。京东是3s,蓝汛是3s,根据业务需求配置。常规业务2-3秒合理。

例:如果max_fails是5,他就检测5次,如果五次都是502.那么,他就会根据fail_timeout 的值,等待10秒,再去检测。

整体示例

http {
    # 定义了一个负载均衡池 
    upstream lakerService {
        # 最大失败次数 3 次,超过 3 次失败后,20 秒内不检测。
        server 192.168.10.24:8080 max_fails=1 fail_timeout=5s;
        server 192.168.10.24:8081 max_fails=1 fail_timeout=5s;
    }
    server {
        listen  80;
        location / {
            # 故障转移策略,当后端服务器返回如下错误时,自动负载到后端其余机器
            proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
            proxy_pass http://lakerService;
        }
    }
}

标签:负载,max,fails,server,Nginx,timeout,fail,服务器,电商
来源: https://blog.csdn.net/abu935009066/article/details/121768386

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有