设为首页 收藏本站
查看: 700|回复: 0

[经验分享] Nginx HTTP负载均衡相关参数

[复制链接]

尚未签到

发表于 2016-12-26 12:09:59 | 显示全部楼层 |阅读模式
  集群
  配置负载均衡各参数的意义,一篇很好的文章:
  http://salogs.com/2010/05/nginx-http%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E7%9A%84%E7%9B%B8%E5%85%B3%E5%8F%82%E6%95%B0%E6%B5%8B%E8%AF%95/
  upstream test {
server 192.168.108.163 ;
server 192.168.108.164:80;
}

server {
listen          80;
server_name     .test.com;
index           index.php index.html index.htm;

location /{
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;

proxy_connect_timeout       10s;
proxy_read_timeout          2s;
#proxy_send_timeout          10s;
proxy_pass http://test;
}
}
  语法:servername[parameters]
  parameters包含:
  ·weight= NUMBER - 设置服务器权重,默认为1。
  ·max_fails= NUMBER - 在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以关闭检查,这些错误在proxy_next_upstream或fastcgi_next_upstream(404错误不会使max_fails增加)中定义。
  ·fail_timeout= TIME - 在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和 proxy_read_timeout来控制。
  ·down - 标记服务器处于离线状态,通常和ip_hash一起使用。
  ·backup- (0.6.7或更高)只用于本服务器,如果所有的非备份服务器都宕机或繁忙。
  关于max_fails参数的理解根据上面的解释,max_fails默认为1,fail_timeout默认为10秒,也就是说,默认情况下后端服务器在10秒钟之内可以容许有一次的失败,如果超过1次则视为该服务器有问题,将该服务器标记为不可用。等待10秒后再将请求发给该服务器,以此类推进行后端服务器的健康检查。但如果我将max_fails设置为0,则代表不对后端服务器进行健康检查,这样一来fail_timeout参数也就没什么意义了。那若后端服务器真的出现问题怎么办呢?上文也说了,可以借助proxy_connect_timeout和proxy_read_timeout进行控制。
  下面介绍http proxy模块中的相关指令:
  proxy_next_upstream
语法: proxy_next_upstream [error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off]
确定在何种情况下请求将转发到下一个服务器。转发请求只发生在没有数据传递到客户端的过程中。
  proxy_connect_timeout
后端服务器连接的超时时间_发起握手等候响应超时时间
  proxy_read_timeout
连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
  proxy_send_timeout
后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
  proxy_pass
这个指令设置被代理服务器的地址和被映射的URI
  总结:
  1.是否超时,是由 proxy_read_timeout 决定的。
  2.后端服务器正常但执行超时的情况下nginx根据proxy_read_timeout和proxy_next_upstream的值来选择下一个服务器,
  3.如果后端服务器直接报错的情况,如果报错信息在proxy_next_upstream 中有定义的话nginx还会跳到下一台服务器。否则直接将保存信息返回给nginx从而最终呈献给用户
  
4.如果后端没有设置健康检查, 则每次请求都会最多等待 proxy_read_timeout 时间,如果超过该时间没有响应,则尝试下一个服务器。 周而复始。
  5.如果后端有设置了健康检查。则每次请求时,最多等待 proxy_read_timeout,超过该时间,且尝试次数超过 max_fails则标记该服务器不可用。下次请求时,请求将不再发送给该服务器,一直等到 标记为不可用的时间-fail_timeout过后,才会再将请求转发给刚才标记为不可用的那台服务器。 如此周而复始。
  我采用的配置
  server 1.1.1.1:8180 weight=1 max_fails=1 fail_timeout=40s;
server 1.1.1.2:8080 weight=1 max_fails=1 fail_timeout=40s;
  proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
proxy_read_timeout 15s;
  假设其中一台服务器处理超时,15秒后,转到另外一台,如果还是15秒超时,则两台服务器都被标记为不可用。因此后续有10秒钟的时间(40-15-15),用户每次访问网站会报服务器未响应错误。 如果不想有这10秒的时间都是报错,则fail_timeout设置为30s。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-319732-1-1.html 上篇帖子: (转)配置 Nginx 子域名的泛解析 下篇帖子: apache和nginx的一些配置资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表