`
乱蓬头199303
  • 浏览: 80256 次
文章分类
社区版块
存档分类
最新评论

Nginx几种负载均衡算法及配置实例

阅读更多

摘要: Nginx负载均衡(工作在七层“应用层”)功能主要是通过upstream模块实现,Nginx负载均衡默认对后端服务器有健康检测的能力,仅限于端口检测,在后端服务器比较少的情况下负载均衡能力表现突出。 Nginx的几种负载均衡算法: 1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受影响。

Nginx负载均衡(工作在七层“应用层”)功能主要是通过upstream模块实现,Nginx负载均衡默认对后端服务器有健康检测的能力,仅限于端口检测,在后端服务器比较少的情况下负载均衡能力表现突出。

Nginx的几种负载均衡算法:

1、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,则自动剔除故障机器,使用户访问不受影响。

2、weight:指定轮询权重,weight值越大,分配到的几率就越高,主要用于后端每台服务器性能不均衡的情况。

3、ip_hash:每个请求按访问IP的哈希结果分配,这样每个访客固定访问一个后端服务器,可以有效的解决动态网页存在的session共享问题。

4、fair(第三方):更智能的一个负载均衡算法,此算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。如果想要使用此调度算法,需要Nginx的upstream_fair模块。

5、url_hash(第三方):按访问URL的哈希结果来分配请求,使每个URL定向到同一台后端服务器,可以进一步提高后端缓存服务器的效率。如果想要使用此调度算法,需要Nginx的hash软件包。

在upstream模块中,可以通过server命令指定后端服务器的IP地址和端口,同时还可以设置每台后端服务器在负载均衡调度中的状态,常用的状态有以下几种:

1、down:表示当前server暂时不参与负载均衡。

2、backup:预留的备份机,当其他所有非backup机器出现故障或者繁忙的时候,才会请求backup机器,这台机器的访问压力最轻。

3、max_fails:允许请求的失败次数,默认为1,配合fail_timeout一起使用

4、fail_timeout:经历max_fails次失败后,暂停服务的时间,默认为10s(某个server连接失败了max_fails次,则nginx会认为该server不工作了。同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server。)

下面是一个负载均衡的配置示例,这里只列出http配置段,省略了其他部分配置:

http
{
upstream whsirserver {
server 192.168.0.120:80 weight=5 max_fails=3 fail_timeout=20s;
server 192.168.0.121:80 weight=1 max_fails=3 fail_timeout=20s;
server 192.168.0.122:80 weight=3 max_fails=3 fail_timeout=20s;
server 192.168.0.123:80 weight=4 max_fails=3 fail_timeout=20s;
}
server
{
listen 80;
server_name blog.whsir.com;
index index.html index.htm;
root /data/www;

location / {
proxy_pass http://whsirserver;
proxy_next_upstream http_500 http_502 error timeout invalid_header;
}
}
}

upstream负载均衡开始,通过upstream指定了一个负载均衡器的名称为whsirserver,这个名称可以自己定义,在后面proxy_pass直接调用即可。

proxy_next_upstream参数用来定义故障转移策略,当后端服务器节点返回500、502和执行超时等错误时,自动将请求转发到upstream负载均衡器中的另一台服务器,实现故障转移。

​​​​​​​

原文链接

分享到:
评论

相关推荐

    weblogic集群安装及nginx反向代理及负载均衡配置

    - **轮询(Round Robin)**:最简单的负载均衡算法,请求按照顺序依次分配给不同的服务器。 - **加权轮询(Weighted Round Robin)**:根据服务器的处理能力为其分配不同的权重。 - **最少连接(Least Connections)...

    负载均衡的基本知识以及使用nginx进行负载均衡的简单例子

    nginx一般可以用于七层的负载均衡,这篇文章将介绍一些负载均衡的...常见的负载均衡算法 负载均衡常见有如下几种算法: 负载均衡演示实例:普通轮询 接下来使用nginx来演示一下如何进行普通轮询: 事前准备 事前在70

    实用负载均衡技术:网站性能优化攻略(alin书签).pdf

    1. 负载均衡算法:它决定了如何分配工作负载。常见的算法包括轮询(Round Robin)、最少连接(Least Connections)、源IP哈希(Source IP Hash)等。选择合适的算法,对于确保负载均衡的效果至关重要。 2. 会话持久...

    多种负载均衡部署文档,实操笔记 Nginx,lvs(dr,nat,fullnat),haproxy等,dpdk-lvs

    在本文中,我们将深入探讨几种常见的负载均衡器——Nginx、LVS(DR、NAT、FullNAT)以及Haproxy,并分析它们的优缺点。同时,我们还将详细讲解LVS的配置,包括Keepalived参数的解释。 **Nginx负载均衡** Nginx是一...

    nginx 负载均衡 多站点共享Session

    在本知识点中,我们将详细讨论如何利用数据库来存储Session信息,以及相关的配置步骤,以便在多站点环境下的Nginx负载均衡架构中实现Session共享。 首先,我们来了解几种常见的多站点间Session共享的作法。最常见的...

    WAS集群 负载均衡 会话共享

    1. **确定负载均衡策略**:根据业务特点选择合适的负载均衡算法。 2. **设计会话管理方案**:根据业务需求选择最合适的会话共享策略。 3. **配置负载均衡器**:如果采用软件解决方案,如Nginx或HAProxy,则需要对其...

    开发技术-Java基于CORBAJava对象负载均衡的研究.zip

    3. **负载均衡策略**:分析和比较不同负载均衡算法的优缺点,如轮询、最少连接数、随机选择等,并讨论它们在实际应用中的表现。 4. **故障恢复与容错机制**:研究当服务器出现故障时,如何通过负载均衡机制快速切换...

    分布式系统架构设计思路

    在设计分布式系统时,负载均衡是一个核心组件,负责将外部请求分发到后端的多个服务器实例上,确保资源的有效利用和避免单点故障。本篇文章将从以下几个方面详细阐述分布式系统架构设计的思路。 首先,负载均衡器是...

    高性能业务架构解决方案(LVS+Keepalived)

    在处理静态资源方面表现出色,支持多种负载均衡算法,如轮询、最少连接等。 - **HAProxy**:专注于高性能的 TCP/HTTP 负载均衡器,支持高级功能如 SSL 卸载、健康检查等。非常适合用于大型网站和应用。 - **LVS**:...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    1.5.2 负载均衡配置实例 1.5.3 防盗链配置实例 1.5.4 日志分割配置实例 1.6 Nginx性能优化技巧 1.6.1 编译安装过程优化 1.6.2 利用TCMalloc优化Nginx的性能 1.6.3 Nginx内核参数优化 1.7 实战Nginx与...

    tomcat集群与会话共享

    它可以配置为将请求智能地分发到集群中的各个Tomcat实例,实现会话持久化(粘性会话)或者根据特定算法(如轮询、最少连接数等)进行负载均衡。 - **配置Nginx**:在Nginx配置文件中,可以定义一个upstream块来指定...

    阿里Tengine直播最佳实践.pdf

    5. **负载均衡算法及其优化**:介绍了几种常见的负载均衡算法(如轮询、加权轮询等),并讨论了如何通过优化算法来提高系统的稳定性和响应速度。 6. **Tengine统一网关的运维与管理**:涵盖了协议卸载、动态服务发现...

    Linux开发简介及应用实例及实例分析.txt

    Nginx是一款高性能的HTTP和反向代理服务器,常被用来做负载均衡和缓存服务。在Linux环境中部署Nginx可以有效地提高网站访问速度并降低服务器压力。 综上所述,Linux不仅在传统领域有着不可替代的地位,在新兴的技术...

    走向架构师之路

    "走向架构师之路"这个主题涵盖了几个关键领域,包括Nginx配置、Tomcat集群配置以及24种设计模式。这些知识点是架构师必备的技术基础,下面将逐一详细介绍。 1. Nginx配置: Nginx是一款高性能的HTTP和反向代理...

    tcp迁移报告tcp迁移报告

    目前,国际上已有的服务器集群调度技术主要包括基于DNS轮询的负载均衡、基于硬件的负载均衡方案(如F5等)、基于软件的负载均衡方案(如LVS、Nginx等)。这些技术在一定程度上解决了服务器集群中的负载均衡问题,但...

    ZooKeeper面试题(2022最新版)-重点.docx

    Zookeeper主要用于实现服务发现和负载均衡,而Nginx则是一个更传统的反向代理和负载均衡器。两者的主要区别在于设计目标和服务范围。 #### 20. Zookeeper有哪几种几种部署模式? ZooKeeper可以有以下几种部署模式...

    基于SpringBoot的秒杀系统.zip

    10. **负载均衡与高可用**:通过Nginx等负载均衡器分散流量,保证每个服务实例的压力均衡。同时,服务应该具有高可用性,比如通过SpringCloud的Eureka实现服务注册与发现,配合Hystrix实现熔断和降级。 以上就是...

    1000道 互联网Java工程师面试题 485页_PDF密码解除.pdf

    zookeeper负载均衡和nginx负载均衡区别** - **Zookeeper负载均衡:**主要用于服务发现和路由选择。 - **Nginx负载均衡:**作为反向代理服务器,进行流量分配。 **19. Zookeeper有哪几种几种部署模式?** - **...

Global site tag (gtag.js) - Google Analytics