集群
配置负载均衡各参数的意义,一篇很好的文章:
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配置文件中定义多个后端服务器,并使用`proxy_pass`指令来实现。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { ...
**Nginx负载均衡的实现方式** Nginx支持多种负载均衡策略,常见的有: 1. **轮询(round-robin)**:每个请求按时间顺序逐一分配到不同的服务器,如果服务器临时不可用,将跳过该服务器。 2. **最少连接数(least...
"Nginx+Tomcat 负载均衡 3分钟搞定" 本文将从以下几个方面详细介绍 Nginx+Tomcat 实现负载均衡的知识点: 一、负载均衡的概念和优势 负载均衡(Load Balancing)是指在多台服务器之间分配工作负载,以提高响应...
在传统的nginx负载均衡配置中,并未直接提供后端服务器健康检查的功能,但nginx提供了几个重要的指令来帮助我们设置超时和重试机制,来间接保障服务的可用性。例如,proxy_connect_timeout指令用于设置nginx尝试连接...
【标题】:“Nginx负载均衡部署” 在现代Web服务架构中,负载均衡扮演着至关重要的角色,它能够有效地分发网络流量,提高系统可用性和响应速度,防止单点故障。Nginx作为一款高性能的HTTP和反向代理服务器,常常被...
它的一个非常重要的用途是实现网站的负载均衡,而本文主要介绍的就是如何利用Nginx来实现网站的负载均衡,作者是刘振宇。 负载均衡是一种计算机技术,用于在多个计算资源(例如计算机、CPU、磁盘驱动器、通信连接、...
**NGINX HTTP 负载均衡操作及优化手册** HTTP 负载均衡是现代Web服务中的关键组件,用于分散网络流量,提高系统可用性和响应速度,同时降低单个服务器的压力。Nginx作为高性能的HTTP和反向代理服务器,提供了一套...
### Nginx+Apache负载均衡知识点详解 #### 一、Nginx简介及特性 **Nginx** 是一种高性能的 HTTP 和反向代理 Web 服务器,同时也支持 IMAP/POP3/SMTP 服务。其核心特点包括: - **高性能**:能够处理大量并发连接...
【Nginx 实现负载均衡】是指通过 Nginx 作为反向代理服务器,将来自客户端的请求分发到多个后端服务器(在这个场景中是两个 Tomcat 应用服务器),以达到均衡负载、提高系统可用性和响应速度的目的。下面我们将详细...
### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...
**Nginx + Tomcat 负载均衡配置详解** 在现代互联网应用中,服务器的高可用性和性能优化是至关重要的。Nginx 和 Tomcat 的组合常常被用来实现这样的目标,其中Nginx作为反向代理和负载均衡器,而Tomcat作为Java应用...
**Nginx负载均衡配置详解** 在高并发的互联网应用环境中,服务器的性能优化和负载分发至关重要。这里我们探讨的是如何使用Nginx作为反向代理和负载均衡器,来提升系统的整体处理能力,特别是在处理静态内容和优化...
在Win7 64位系统上安装Nginx,可以利用其强大的负载均衡和反向代理功能,优化网站性能并提升可用性。** ### 一、Nginx的安装 1. **下载Nginx安装包**:首先,你需要从Nginx官方网站获取适用于Windows 64位系统的...
以下是配置Nginx负载均衡的基本步骤: 1. **安装Nginx**:在你的服务器上安装Nginx,确保它能够正常启动和运行。 2. **配置Nginx**:打开Nginx的配置文件(通常为`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf...
Nginx是一个高性能的HTTP和反向代理服务器,以及一个IMAP/POP3/SMTP服务器。它因为轻量级、高性能和稳定性而被广泛...对于不同业务场景和负载特征,选择合适的调度算法和参数配置,是发挥Nginx负载均衡能力的关键所在。
### Nginx配置负载均衡和缓存详解 #### 负载均衡概念解析 随着互联网技术的迅猛发展,网络服务的访问量与日俱增,单一服务器已经难以满足大规模访问需求。为此,**负载均衡**作为一种高效且经济的解决方案应运而生...
【标题】:“nginx负载均衡加FastDfs” 在IT领域,服务器负载均衡是提升系统可用性和性能的关键技术,而Nginx与FastDFS的结合应用则是一个常见的解决方案。Nginx是一款高性能的HTTP和反向代理服务器,常用于实现...