百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx负载均衡最全详解(4大算法原理机制)

off999 2025-02-15 16:58 98 浏览 0 评论

Nginx在大型网站架构很重要,也是大厂重点考察方向,今天我就重点来详解Nginx负载均衡@mikechen

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

Nginx负载均衡

Nginx负载均衡能够将客户端请求,分发到多个后端服务器(比如:应用1、应用2...应用N服务器),从而分散负载,提升应用的可用性、和性能。

如下图所示:

Nginx负载均衡,通过横向扩展,不仅可以添加、或移除后端服务器,以应对流量变化,实现动态扩展。

除此之外,负载均衡器可以作为系统的第一道防线,通过过滤和分发流量,帮助防御攻击...等等。

还可以,通过将请求分发到多个服务器上,从而,避免了Nginx 单点故障,还可以提高了系统的可靠性、和可用性。

Nginx负载均衡算法

Nginx 提供了多种“负载均衡算法”,经常使用的包括:随机、轮询、权重...等模式,下面我分别来详解原理与使用@mikechen

1、轮循(默认)

这是默认的Nginx负载均衡算法,Nginx 将请求按顺序轮流分配给每个后端服务器,如下图所示:

轮询算法的工作原理非常简单:

  • 负载均衡器维护一个后端服务器列表,并在其中循环遍历;
  • 每当有新的请求到来时,负载均衡器按顺序选择列表中的下一个服务器进行分发;
  • 当遍历到列表的末尾时,重新回到列表的起点,继续按顺序分配请求。

配置轮询算法非常简单,只需要在配置文件中定义上游服务器列表即可。

如下所示:

http {
    upstream myapp {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

轮询:适用于大多数基本负载均衡需求,但是,当应用场景复杂,需要考虑服务器负载时,可以选择,比如:加权轮询、最少连接数等。

2.加权轮询

加权轮询是一种改进的轮询算法,主要作用是:根据后端服务器的处理能力(权重)来分配请求。

如下图所示:

加权轮询的工作原理如下:

每个后端服务器分配一个权重值(weight),权重值越高,服务器处理的请求数量越多;

例如:权重值为“3”的服务器,接收到的请求次数,将是权重值为1的服务器的三倍。

配置如下:

http {
    upstream myapp {
        server backend1.example.com weight=3;
        server backend2.example.com weight=2;
        server backend3.example.com weight=1;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

具体来说,backend1.example.com 接收到的请求数量,将是 backend3.example.com 的三倍。

这种算法适用于:后端服务器性能不一致的情况。

通过加权分配,使得处理能力更强的服务器承担更多的请求,从而优化整体系统性能、和资源利用。

3.ip_hash模式

IP哈希负载均衡算法,主要作用是:基于客户端IP地址的哈希值将请求分配给后端服务器。

如下图所示:

此算法的主要优点在于:它能够实现会话保持(Session Persistence),即确保来自同一客户端的所有请求,都分配到同一个后端服务器。

这种方式保证了会话的连续性,即同一客户端的所有请求,都能访问同一个后端服务器。

配置,如下所示:

http {
    upstream myapp {
        ip_hash;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

这种方式,适用于:需要保持用户状态、或会话信息的一些应用,比如:购物车、支付...等。

但是也要注意:如果某台服务器宕机,负载均衡器需要重新计算哈希值,将请求分配到其他服务器,因此,健康检查机制非常重要。

4、最少连接

最少连接数(Least Connections),主要作用是:将新的请求分配给当前活动连接数最少的后端服务器。

如下图所示:

配置如下:

http {
    upstream myapp {
        least_conn;
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

最少连接数算法:能够有效避免某些服务器过载。

能够根据实际负载情况动态调整请求分配,适用于请求处理时间不一致的场景。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

相关推荐

下载新版微信并安装(下载新版微信并安装到手机)

1.首先打开手机的浏览器,在搜索栏中输入微信官网,并点击搜索。2.出现微信后点击下载,下载完成后,点击安装。   3.安装完成后,再回到桌面,点击“微信”4.输入账号密...

测速在线测试(测速在线测试高铁)

回答:不靠谱。例如:SPEEDTEST是一家叫Ookla的公司开发的测速工具,稍有经验的朋友想必对它都不会陌生。Ookla在全世界各地维护了大量测速节点,SPEEDTEST测量的就是与这些测速节点间的...

格式工厂免费版(格式工厂免费版破解版)

不收费用格式工厂是由上海格式工厂网络有限公司创立于2008年2月,是面向全球用户的互联网软件。格式工厂发展至今,已经成为全球领先的视频图片等格式转换客户端。格式工厂致力于帮用户更好的解决文件使用问题,...

路由器连接电脑插哪个端口(路由器跟电脑的连接线怎么插)

电脑连接路由器插入路由器LAN口。具体方法如下1、光纤或网线插到路由器的WAN口上,(或网线连接modem的line口,modem的lan口连接了无线路由的wan口);2、电脑网线从路由器的LAN口上...

华硕官方客服在线解答(华硕客服售后在线咨询)

如果您需要寻找ROG的售后服务,可以通过以下几种方式进行联系:1.官方网站:您可以在ROG的官方网站上找到售后服务的联系方式,如客服电话、在线客服、邮件等。2.客服热线:您可以通过ROG的客服热线...

召唤系统之最强帝国(召唤系统之最强人皇)

名字叫做《绝世皇帝》。讲述林谦,地球的国战游戏达人,发生意外后,重生到异界。然而,在这异界之中,除了修炼天赋好点,却没有特殊的一技之长。炼丹他炸炉,炼器成废铁,更别提阵法这些其他生活技能,一窍不通。不...

如何将网址粘贴为链接(网址复制到word怎么变成链接)

可以复制网址链接的方法有多种,最常用的方法是在浏览器中打开需要复制的网页,在地址栏中选中网址,然后右键选择“复制”,或者按下“Ctrl+C”快捷键,即可将网址复制到剪贴板中。另外,某些应用程序也提供了...

i主题app下载(i主题官方版)

OPPO手机使用i主题的操作方法如下首先我们打开OPPO手机,在手机桌面找到i主题的图标,点击图标进入到主题页面,在主题页面,我们选择主题专区,然后再推荐主题专区里面找到你喜欢的主题之后,点击...

win10官方下载工具打不开(win10下载软件打不开怎么办)
win10官方下载工具打不开(win10下载软件打不开怎么办)

步骤/方式1首先右击win10桌面的此电脑图标,选择管理进入。步骤/方式2展开本地用户和组,点击用户,右击右侧的Administrator账户,选择属性打开,然后取消账户已禁用的勾选点击确定。步骤/方式3然后再次登录Administrato...

2025-12-18 04:03 off999

系统错误怎么解决(微信系统错误怎么解决)

1、最后一次正确的配置:在开机启动未进入到操作系统之前我们按下F8键,选择“最后一次正确的配置”然后回车即可。此方法只能解决因出现配置问题进不了系统的情况(例如更换新硬件或加载新驱动后造成的蓝屏),由...

电脑自带的防火墙怎么关(电脑的防火墙如何关闭)
电脑自带的防火墙怎么关(电脑的防火墙如何关闭)

点击开始,点击设置,进入设置后我们可以直接在上方的搜索框中直接搜索【defender】,就会弹出防火墙。点击进入防火墙后,在左侧的列表中找到【启用或关闭Windowsdefender防火墙】,并且点击进入。进入后,就可以自行关闭所有的防...

2025-12-18 03:03 off999

光猫和路由器哪个网速快(光猫网速快还是路由器网速快)

两个都快。这要从两个设备的功能说起。光猫是把光信号转变成数字信号的一种设备,随着光猫技术的发展,现在光猫也集成了路由器的功能,也带有有线和无线,只要有光纤加上光猫,就可以实现有线或者无线上网。路由器的...

台式电脑运行一段时间就死机

1、散热不良:显示器、电源和CPU工作时间太长会导致死机,给风扇除尘,上油。2、灰尘杀手:机器内灰尘过多也会引起死机故障。定期清洁机箱。3、内存条故障:主要是内存条松动,内存芯片本身质量所致,应根...

高清windows免费版观看(高清windows免费版观看网站)

方法一:1、右键单击开始菜单----运行2、在运行对话框中输入:devmgmt.msc,展开:显卡适配器,右击所列的显卡适配器,点击卸载。3、卸载后重新安装兼容Win10的显卡驱动,建议去官方下载...

h3c官网(H3C官网登录账号)

1H3C防火墙官网是存在的,可以通过搜索引擎或输入官方网址进行访问。2H3C防火墙官网提供了产品信息、技术支持、解决方案和服务支持等各种资源,帮助用户全面了解和使用H3C防火墙产品。同时,还有在线...

取消回复欢迎 发表评论: