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

一文理清负载均衡(nginx,LVS)的工作原理

off999 2025-02-27 16:15 38 浏览 0 评论

根据规模的提升在不同的阶段需要使用不同的技术和架构,具体的需求需要具体分析,如果是中小型的 Web 应用。

  • 日活跃小于 1000 万,使用 nginx 就可以完全满足了;
  • 大型网站或重要的服务,并且服务比较多时,就可以考虑使用 LVS

Nginx

Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

Nginx 特点是占有内存少,并发能力强,nginx 的并发能力在同类型的网页服务器中表现较好。

Nginx 的简单架构:


Nginx 的架构设计

Nginx 的架构设计采用的是模块化的,基于事件驱动、异步、单线程且非阻塞(epoll 模型)

Nginx 使用多路复用和事件通知,Nginx 启动后,在后台以 daemon 的方式在系统中运行,其中会包括一个主(master)进程,n(n≥1)个工作(worker)进程。

所有的进程都是单线程(即只有一个主线程)的,进程间通信主要使用共享内存的方式。

其中,master 进程用于接收外部的请求,发送信号给 worker 进程,同时监控 worker 进程的工作状态。

worker 进程用来处理外部请求信息,请求只能在一个 worker 进程中被处理,一个 worker 进程只有一个主线程,同时只能处理一个请求。

Nginx 负载均衡

Nginx 负载均衡是对七层网络通信模型中的应用层(HTTP,HTTPS)进行的。

Nginx 是以反向代理的方式进行负载均衡

  • 反向代理:是以代理服务器来接收用户的请求,然后将请求发给内部网络上的服务器,并将服务器上的结果返回给请求的客户端,此时代理服务器就是一个服务器。
  • 负载均衡:就是将这些客户端的请求按照某种策略分摊到后台多台服务器上面,进行处理。

Nginx 的 upstream 目前支持 6 种算法分配方式:

轮询

最基本的配置方法,它是 upstream 模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。

有如下参数:

在 30 秒内错误次数超过 2 次,就认为服务器已经不能访问了,下次就不会访问该机器

server 10.168.226.1:8080 max_fails=2 fail_timeout=30s;

server 10.168.226.2:8080 max_fails=2 fail_timeout=30s;

weight

权重方式,在轮询策略的基础上指定轮询的几率

server 10.168.226.1:8080 weight=1 ;

server 10.168.226.2:8080 weight=2;

注意:

  • 权重越高分配到需要处理的请求越多。
  • 此策略比较适合服务器的硬件配置差别比较大的情况。

ip_hash

指定负载均衡器按照基于客户端 IP 的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证 session 会话。

这样每个访客都固定访问一个后端服务器,可以解决 session 不能跨服务器的问题。

ip_hash; # 保证每个访客固定访问一个后端服务器

server 10.168.226.1:8080 weight=1 ;

server 10.168.226.2:8080 weight=2;

注意:

ip_hash在nginx1.3版本之后才有的 ip_hash不能与backup同时使用这种策略适合有状态服务,比如session 当有服务器需要剔除,必须手动down掉。

least_conn

把请求转发给连接数较少的后端服务器,轮询算法是把请求平均的转发给各个后端服,使它们的负载大致相同。

但是,有些请求占用的时间很长,会导致所在的后端负载较高,这种情况下,least_conn这种方式就可以达到更好的负载均衡效果least_conn;

server 10.168.226.1:8080 weight=1;

server 10.168.226.2:8080 weight=2;

注意:

这种负载均衡策略适合请求处理时间长短不一致造成服务器过载的情况

第三方策略

第三方的负载均衡策略的实现需要安装第三方插件(upstream_fair)

  • fair安装服务器端响应时间来分配请求,响应时间段的优先分配fair;server 10.168.226.1:8080 weight=1;
    server 10.168.226.2:8080 weight=2;
  • url_hash按访问 URL 的 hash 结果来分配请求,是每个 URL 定向知道同一个后端服务器,要配合缓冲命中来使用同一个资源多次求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高以及一些资源时间的浪费。而使用 url_hash,可以使得同一个 URL 会到达同一台服务器,一段缓存了资源,再次请求的时候,就可以从缓存中读取,需要 hash 软件包
  • hash $request_uri; # 实现每个 URL 定向到同一个后端服务器
  • server 10.168.226.1:8080 weight=1;
    server 10.168.226.2:8080 weight=2;

Nginx 的优点

  • 跨平台:Nginx 可以在 Linux 上编译运行,也可以在 window 上运行
  • 配置简单:直接可以通过简单修改配置文件,容易上手
  • 非阻塞、高并发:官网理论可以支持 5 万并发连接,在实际生产环境也可以跑到 2-3 万的并发
  • 事件驱动:采用 epoll 模型,支持更多的并发连接
  • 内存消耗小:内存和 CPU 占用率低。(为 Apache 的 1/5-1/10)
  • 内置健康检查:Nginx 代理的后端的某台服务器宕机了,会自动不访问该机器

Nginx 的缺点

  • Nginx 仅能支持 HTTP,HTTPS,tcp,email 等协议
  • 不支持直接保存 session,可以通过 ip_hash 来支持

LVS

LVS 就是 Linux 虚拟(Virtual Server)服务器。从 Linux 内核 2.4 之后,内置了 LVS 的各个功能模块,就可以直接 使用 LVS 提供的功能。

LVS 的体系架构

LVS 架构 的服务器集群系统有三个部分 组成:

  • 最前端的负载均衡层,用 Load Balancer 表示
  • 中间的服务器集群层,用 Server Array 表示
  • 最底层的数据共享层,Shard storage 表示

负载均衡机制

LVS 是四层负载均衡,建立在 OSI 模型的第四层——传输层之上,传输层有 TCP/UDP,相对于其它高层负载均衡的方法,比如 DNS 域名轮询解析,应用层负载的调度,客户端的调度等,它的效率都非常高。

  • 四层负载均衡:主要通过报文中的目标地址和端口
  • 七层负载均衡:也称为“内容交换”,主要通过报文中的 真正有意义的应用层内容。

LVS 的转发主要通过修改 IP 地址(NAT 模式,分为源地址修改 SNAT 和目标地址修改 DNAT)、修改目标 MAC(DR 模式)来实现

LVS 相关术语

DS:Director Server。指的是前端负载均衡器节点。

RS:Real Server。后端真实的工作服务器。

VIP:向外部直接面向用户请求,作为用户请求的目标的 IP 地址。

DIP:Director Server IP,主要用于和内部主机通讯的 IP 地址。

RIP:Real Server IP,后端服务器的 IP 地址。

CIP:Client IP,访问客户端的 IP 地址

NAT 模式:网络地址转换

NAT(network address transaction)是外网和内网地址映射的技术。

NAT 模式下,网络数据的进出都要经过 LVS 处理,LVS 需要作为真实服务器的网关。

  • 当包请求到 LVS 时,LVS 做目标地址转换(DNAT),将目标 IP 改为 RS 的 IP。
  • RS 处理完,返回响应时,源 IP 是 RS IP,目标 IP 是客户端的 IP。
  • RS 的包通过网关(LVS)中转,LVS 做源地址转换(SNAT),将包的源地址改为 VIP,这样,这个包对客户端来说就像是 LVS 直接返回给它的。

DR 模式:直接路由

DR 模式下需要 LVS 和 RS 集群绑定同一个 VIP,与 NAT 的不同点在于:

请求由 LVS 接受,由真实提供服务的服务器(RS)直接发放给用户,返回的时候不经过 LVS。

一个请求过程中,LVS 只需要将网络帧的 Mac 地址修改为某一台 RS 的 MAC,该请求就去会被转发到响应的 RS 处理,此时的源 IP 和目标 IP 都没有变。

RS 收到 LVS 转发来的请求时,链路层发现 Mac 地址是自己的,当上面的网络层,也发现 IP 是自己的,于是这个包被合法的接受,RS 感知不到前面有 RS 的存在。当 RS 返回响应时,只要直接向源 IP 返回即可,不再经过 LVS。

DR 负载均衡模式数据分发过程中不修改 IP 地址,只修改 Mac 地址,由于实际处理请求的真实物理 IP 地址和 数据请求目的 IP 地址一致,所以不需要通过负载均衡服务器进行地址转换,就可以将响应数据直接返回给浏览器,避免服务器网卡带宽成为瓶颈。

DR 模式具有较好的性能,也是目前大型网站使用最广泛的一种负载均衡。

LVS 的优点

  • 负载能力强,工作在传输层上仅作为分发的作用,没有流量的产生,对内存和 CPU 资源消耗比较低
  • 配置简单,很容易上手
  • 工作稳定,有完整的双机热备方案,如:LVS+Keepalived
  • 无流量,LVS 只分发请求
  • 应用范围比较广,LVS 工作在传输层,几乎可以对所有应用做负载均衡,包括 HTTP,数据库

LVS 的缺点

  • 软件本身不支持正则表达式,不能做动静方法分离
  • 网站应用比较庞大的话,LVS 实施起来比较复杂

本文作者:柠檬班软件测试(lemonban)——专注于最新最前沿的软件测试技术,解决你的测试技术烦恼,对软件测试感兴趣的朋友赶快关注我们吧!

相关推荐

单人枪战单机游戏(单人枪战闯关游戏)

有胡闹厨房,NBA2K,Knack纳克,光环战斗进化,杀手5赦免。钓鱼星球。神鬼寓言,战争机器,精灵与森林,盗贼之海,丧尸围城枪火重生,这是融合了第一人称射击、Roguelite随机元素和RPG策略...

三国战纪街机版下载(三国战纪街机版下载教程)

三国战纪单机手机版非常容易上手,可以通过以下步骤进行玩耍:容易上手。游戏的操作非常简单,只需要用手指点击屏幕即可完成。游戏同时提供了简单、普通、困难等多个难度设置,能够满足不同玩家的需求。在游戏中,玩...

永久免费的网盘哪个好用(百度网盘登录入口)

现在的网盘很多都是免费的哦,而且也很安全,我自己就在用天翼云网盘。天翼云虽然刚登陆是15G,但是现在登陆客户端就有10T的容量了,可以存很多东西了。天翼云网盘还有个挺好的功能叫做私密空间,每次登陆都要...

热血传奇官方正版下载(热血传奇官网下载安装)

1.可以通过官方网站或者应用商店下载热血传奇。2.热血传奇作为一款热门的网络游戏,开发商通常会提供官方网站或者在应用商店上架,方便玩家下载和安装。3.此外,还可以通过一些第三方游戏平台或者论坛等...

经典老歌500首铃声(免费设为铃声的歌曲)

许慧欣七月七日晴黄格选春水流任贤齐沧海一声笑杨培安我相信邓丽君路边的野花不要采乌兰托娅套马杆索朗扎西姑娘我爱你刀郎情人西域刀郎寻找玛依拉林依轮透过开满鲜花的月亮...

网页黄冈大推广(黄冈宣传)

意思是职称通过了最终审核,已被批准,也就意味着职称稳了,可以享受其相应的待遇了。职称,指教授,讲师,中级,高级等专业技术等级。终审,指最终审核。通过,指批准了。职称终审通过多指工作在技术,学术行业领城...

可以插二次元角色的游戏ios(二次元插图软件)

决战平安京,和光影对决,就是二次元moba游戏其中决战平安京的画质什么的,个人感觉更好~推荐“影视大全-人人美剧视频影视大全苹果版App”。这是一款资源最全的影视苹果端追剧应用,汇聚全网电影、电视剧、...

手机字体上面带拼音(手机字体上面带拼音怎么取消)
手机字体上面带拼音(手机字体上面带拼音怎么取消)

通过修改手机中的字体来设置的,方法如下(以华为mate8手机为例):1、首先,在华为手机上找到系统自带的主题的应用软件,并点击打开它。2、然后,在打开的主题界面点击底部的字体的标签栏目。3、接着,在字体的界面上方的搜索框中输入“拼音”,并进...

2026-02-03 22:51 off999

国内国外精品影视网站(国外影视网站排行)

影视大全强烈推荐的视频app影视大全。是一款作品非常多,大多数都是免费,无广告,无弹窗。它上面也实时更新一些影视作品。有一些在其他影视app中搜索不到,或者收费的作品,在他上面,都是免费的。同时呢,这...

2345网址导航官网(2345网址导航官网官方下载)

搜了好多办法,修改主页,修改host文件,查找注册表。最后我的解决方案是:删除可能携带病毒的软件,修改浏览器主页,(此时chrome浏览器的主页依然是2345),然后新建一个chrome的快捷方式替...

掼蛋app下载(掼蛋app下载第一名)

打开手机的“应用商店”然后再里面下载,可以试一下竞技掼蛋。很正宗的本地掼蛋。你说的应该是网络版的芜湖掼蛋下载吧。我一直在玩的是958游戏里面的,是完全照搬实体掼蛋的,所以还是挺好玩的,经常一个人没事...

主题桌面免费(桌面主题免费版)

如果您想购买华为主题桌面,您可以按照以下步骤进行操作:1.打开华为手机的应用商店,即华为应用市场。2.在应用商店中搜索"华为主题桌面"。3.找到适合您的主题桌面应用,并点击进入应...

win10专业版激活工具(win10专业版激活工具小马)

win10系统使用激活工具激活的方法有多种,以KMSTools(Win10激活工具)为例,步骤如下:下载“KMSTools(Win10激活工具)”并安装。打开KMSTools,点击主界面上列出的...

ps3模拟器(ps3模拟器下载手机版)

PS3模拟器可以玩许多PS3平台上的游戏,包括《合金装备4:爱国者》、《最后生还者》、《战神3》等。PS3模拟器的配置要求较高,通常需要一台性能较好的电脑或笔记本电脑。最低配置要求可能包括:64位操作...

pp助手官网苹果版下载安装(pp助手iphone版官方下载)

越狱后安装PP助手1、越狱后选择Cydia,打开。2、直接点击进入下方的“管理”。3、再点击“软件源”,进入。4、点击右上角“编辑”。5、再打开左上角“添加”6、输入PP手机助手的源:apt.2...

取消回复欢迎 发表评论: