`
ytfei
  • 浏览: 88414 次
社区版块
存档分类
最新评论

Nginx HTTP负载均衡相关参数

阅读更多

集群

 

配置负载均衡各参数的意义,一篇很好的文章:

 

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 ;
}
}

 

 

语法:server name [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。

 

分享到:
评论

相关推荐

    nginx配置 +负载均衡+https协议

    - 对于负载均衡,可以通过在Nginx配置文件中定义多个后端服务器,并使用`proxy_pass`指令来实现。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { ...

    nginx软件负载均衡

    **Nginx负载均衡的实现方式** Nginx支持多种负载均衡策略,常见的有: 1. **轮询(round-robin)**:每个请求按时间顺序逐一分配到不同的服务器,如果服务器临时不可用,将跳过该服务器。 2. **最少连接数(least...

    Nginx+Tomcat 负载均衡 3分钟搞定

    "Nginx+Tomcat 负载均衡 3分钟搞定" 本文将从以下几个方面详细介绍 Nginx+Tomcat 实现负载均衡的知识点: 一、负载均衡的概念和优势 负载均衡(Load Balancing)是指在多台服务器之间分配工作负载,以提高响应...

    nginx负载均衡部署

    【标题】:“Nginx负载均衡部署” 在现代Web服务架构中,负载均衡扮演着至关重要的角色,它能够有效地分发网络流量,提高系统可用性和响应速度,防止单点故障。Nginx作为一款高性能的HTTP和反向代理服务器,常常被...

    nginx负载均衡配置,宕机自动切换方式

    在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...

    利用Nginx实现网站负载均衡_刘振宇

    它的一个非常重要的用途是实现网站的负载均衡,而本文主要介绍的就是如何利用Nginx来实现网站的负载均衡,作者是刘振宇。 负载均衡是一种计算机技术,用于在多个计算资源(例如计算机、CPU、磁盘驱动器、通信连接、...

    NGINX HTTP负载均衡操作及优化手册.docx

    **NGINX HTTP 负载均衡操作及优化手册** HTTP 负载均衡是现代Web服务中的关键组件,用于分散网络流量,提高系统可用性和响应速度,同时降低单个服务器的压力。Nginx作为高性能的HTTP和反向代理服务器,提供了一套...

    Nginx+Apache负载均衡

    ### Nginx+Apache负载均衡知识点详解 #### 一、Nginx简介及特性 **Nginx** 是一种高性能的 HTTP 和反向代理 Web 服务器,同时也支持 IMAP/POP3/SMTP 服务。其核心特点包括: - **高性能**:能够处理大量并发连接...

    nginx实现负载均衡(2个tomcat)

    【Nginx 实现负载均衡】是指通过 Nginx 作为反向代理服务器,将来自客户端的请求分发到多个后端服务器(在这个场景中是两个 Tomcat 应用服务器),以达到均衡负载、提高系统可用性和响应速度的目的。下面我们将详细...

    nginx负载均衡 nginx+tomcat tomcat实现负责均衡

    ### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...

    Nginx + Tomcat 负载均衡配置详解

    **Nginx + Tomcat 负载均衡配置详解** 在现代互联网应用中,服务器的高可用性和性能优化是至关重要的。Nginx 和 Tomcat 的组合常常被用来实现这样的目标,其中Nginx作为反向代理和负载均衡器,而Tomcat作为Java应用...

    nginx负载均衡配置文件demo

    **Nginx负载均衡配置详解** 在高并发的互联网应用环境中,服务器的性能优化和负载分发至关重要。这里我们探讨的是如何使用Nginx作为反向代理和负载均衡器,来提升系统的整体处理能力,特别是在处理静态内容和优化...

    nginx 负载均衡与反向代理资源

    在Win7 64位系统上安装Nginx,可以利用其强大的负载均衡和反向代理功能,优化网站性能并提升可用性。** ### 一、Nginx的安装 1. **下载Nginx安装包**:首先,你需要从Nginx官方网站获取适用于Windows 64位系统的...

    Nginx与Tomcat配置实现负载均衡.zip

    以下是配置Nginx负载均衡的基本步骤: 1. **安装Nginx**:在你的服务器上安装Nginx,确保它能够正常启动和运行。 2. **配置Nginx**:打开Nginx的配置文件(通常为`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf...

    使用nginx做负载均衡的模块解读

    Nginx是一个高性能的HTTP和反向代理服务器,以及一个IMAP/POP3/SMTP服务器。它因为轻量级、高性能和稳定性而被广泛...对于不同业务场景和负载特征,选择合适的调度算法和参数配置,是发挥Nginx负载均衡能力的关键所在。

    Nginx配置负载均衡和缓存详解

    ### Nginx配置负载均衡和缓存详解 #### 负载均衡概念解析 随着互联网技术的迅猛发展,网络服务的访问量与日俱增,单一服务器已经难以满足大规模访问需求。为此,**负载均衡**作为一种高效且经济的解决方案应运而生...

    nginx负载均衡加FastDfs

    【标题】:“nginx负载均衡加FastDfs” 在IT领域,服务器负载均衡是提升系统可用性和性能的关键技术,而Nginx与FastDFS的结合应用则是一个常见的解决方案。Nginx是一款高性能的HTTP和反向代理服务器,常用于实现...

Global site tag (gtag.js) - Google Analytics