美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?

作者&投稿:尹瑗 (若有异议请与网页底部的电邮联系)
~

1.1 负载均衡介绍

1.1.1 负载均衡的妙用

1.1.2 为什么要用lvs

那为什么要用lvs呢?

ü 简单一句话,当并发超过了Nginx上限,就可以使用LVS了。

ü 日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。

ü 大型门户网站,电商网站需要用到LVS。

1.2 LVS介绍

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立,是 中国国内最早出现的自由软件项目之一

1.2.1 相关参考资料

LVS官网: http://www.linuxvirtualserver.org/index.html

相关中文资料

1.2.2 LVS内核模块ip_vs介绍

ü LVS无需安装

ü 安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive

ü ipvsadm是通过命令行管理,而keepalive读取配置文件管理

ü 后面我们会用Shell脚本实现keepalive的功能

1.3 LVS集群搭建

1.3.1 集群环境说明

主机说明

web环境说明

web服务器的搭建参照:

Tomcat:

http://www.cnblogs.com/clsn/p/7904611.html

Nginx:

http://www.cnblogs.com/clsn/p/7750615.html

1.3.2 安装ipvsadm管理工具

安装管理工具

查看当前LVS状态,顺便激活LVS内核模块。

查看系统的LVS模块。

1.3.3 LVS集群搭建

命令集 :

检查结果 :

ipvsadm参数说明: (更多参照 man ipvsadm)

1.3.4 在web浏览器配置操作

命令集 :

至此LVS集群配置完毕 !

1.3.5 进行访问测试

浏览器访问:

命令行测试:

抓包查看结果:

arp解析查看:

1.4 负载均衡(LVS)相关名词

术语说明:

1.4.1 LVS集群的工作模式--DR直接路由模式

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器将响应后的处理结果直接返回给客户端用户。

DR技术可极大地提高集群系统的伸缩性。但要求调度器LB与真实服务器RS都有一块物理网卡连在同一物理网段上,即必须在同一局域网环境。

DR直接路由模式说明:

a)通过在调度器LB上修改数据包的目的MAC地址实现转发。注意,源IP地址仍然是CIP,目的IP地址仍然是VIP。

b)请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此,并发访问量大时使用效率很高,比Nginx代理模式强于此处。

c)因DR模式是通过MAC地址的改写机制实现转发的,因此,所有RS节点和调度器LB只能在同一个局域网中。需要注意RS节点的VIP的绑定(lo:vip/32)和ARP抑制问题。

d)强调一下:RS节点的默认网关不需要是调度器LB的DIP,而应该直接是IDC机房分配的上级路由器的IP(这是RS带有外网IP地址的情况),理论上讲,只要RS可以出网即可,不需要必须配置外网IP,但走自己的网关,那网关就成为瓶颈了。

e)由于DR模式的调度器仅进行了目的MAC地址的改写,因此,调度器LB无法改变请求报文的目的端口。LVS DR模式的办公室在二层数据链路层(MAC),NAT模式则工作在三层网络层(IP)和四层传输层(端口)。

f)当前,调度器LB支持几乎所有UNIX、Linux系统,但不支持windows系统。真实服务器RS节点可以是windows系统。

g)总之,DR模式效率很高,但是配置也较麻烦。因此,访问量不是特别大的公司可以用haproxy/Nginx取代之。这符合运维的原则:简单、易用、高效。日1000-2000W PV或并发请求1万以下都可以考虑用haproxy/Nginx(LVS的NAT模式)

h)直接对外的访问业务,例如web服务做RS节点,RS最好用公网IP地址。如果不直接对外的业务,例如:MySQL,存储系统RS节点,最好只用内部IP地址。

DR的实现原理和数据包的改变

(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP

(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

(c) IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

(d) 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server。

(e) RS发现请求报文的MAC地址是自己的MAC地址,就接收此报文。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。 此时的源IP地址为VIP,目标IP为CIP

(f) 响应报文最终送达至客户端

1.5 在web端的操作有什么含义?

1.5.1 RealServer为什么要在lo接口上配置VIP?

既然要让RS能够处理目标地址为vip的IP包,首先必须要让RS能接收到这个包。

在lo上配置vip能够完成接收包并将结果返回client。

1.5.2 在eth0网卡上配置VIP可以吗?

不可以,将VIP设置在eth0网卡上,会影响RS的arp请求,造成整体LVS集群arp缓存表紊乱,以至于整个负载均衡集群都不能正常工作。

1.5.3 为什么要抑制ARP响应?

① arp协议说明

为了提高IP转换MAC的效率,系统会将解析结果保存下来,这个结果叫做ARP缓存。

ARP缓存表是把双刃剑

ARP广播进行新的地址解析

测试命令

windows查看arp -a

③arp_announce和arp_ignore详解

lvs在DR模式下需要关闭arp功能

arp_announce

对网络接口上,本地IP地址的发出的,ARP回应,作出相应级别的限制:

确定不同程度的限制,宣布对来自本地源IP地址发出Arp请求的接口

arp_ignore 定义

对目标地定义对目标地址为本地IP的ARP询问不同的应答模式0

抑制RS端arp前的广播情况

抑制RS端arp后广播情况

1.6 LVS集群的工作模式

DR(Direct Routing)直接路由模式

NAT(Network Address Translation)

TUN(Tunneling)隧道模式

FULLNAT(Full Network Address Translation)

1.6.1 LVS集群的工作模式--NAT

通过网络地址转换,调度器LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理之后,返回时必须要通过调度器,经过调度器时报文的源地址被重写,再返回给客户,完成整个负载调度过程。

收费站模式---来去都要经过LB负载均衡器。

NAT方式的实现原理和数据包的改变

(a). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP

(b). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

(c). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP

(d). POSTROUTING链通过选路,将数据包发送给Real Server

(e). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP

(f). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP

LVS-NAT模型的特性

l RS应该使用私有地址,RS的网关必须指向DIP

l DIP和RIP必须在同一个网段内

l 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈

l 支持端口映射

l RS可以使用任意操作系统

l 缺陷:对Director Server压力会比较大,请求和响应都需经过director server

1.6.2 LVS集群的工作模式--隧道模式TUN

采用NAT技术时,由于请求和响应的报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。

为了解决这个问题,调度器把请求的报文通过IP隧道(相当于ipip或ipsec )转发至真实服务器,而真实服务器将响应处理后直接返回给客户端用户,这样调度器就只处理请求的入站报文。

由于一般网络服务应答数据比请求报文大很多,采用 VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

VS/TUN工作流程,它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。

调度器根据各个服务器的负载情况,连接数多少,动态地选择一台服务器,将原请求的报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的真实服务器。

真实服务器收到报文后,先将收到的报文解封获得原来目标地址为VIP地址的报文, 服务器发现VIP地址被配置在本地的IP隧道设备上(此处要人为配置),所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

TUN原理和数据包的改变

(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。

(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链

(c) IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP

(d) POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP

(e) RS接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP

(f) 响应报文最终送达至客户端

LVS-Tun模型特性

1.6.3 LVS集群的工作模式--FULLNAT

LVS的DR和NAT模式要求RS和LVS在同一个vlan中,导致部署成本过高;TUNNEL模式虽然可以跨vlan,但RealServer上需要部署ipip隧道模块等,网络拓扑上需要连通外网,较复杂,不易运维。

为了解决上述问题,开发出FULLNAT

该模式和NAT模式的区别是:数据包进入时,除了做DNAT,还做SNAT(用户ip->内网ip)

从而实现LVS-RealServer间可以跨vlan通讯,RealServer只需要连接到内网。类比地铁站多个闸机。

1.7 IPVS调度器实现了如下八种负载调度算法:

a) 轮询(Round Robin)RR

调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

b) 加权轮叫(Weighted Round Robin)WRR

调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。

调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

c) 最少链接(Least Connections) LC

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。

如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

d) 加权最少链接(Weighted Least Connections) Wlc

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

e) 基于局部性的最少链接(Locality-Based Least Connections) Lblc

"基于局部性的最少链接" 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。

该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,将请求发送到该服务器。

若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。

f) 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)

"带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。

它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。

该算法根据请求的目标IP地址找出该目标IP地址对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器。

若服务器超载,则按"最小连接"原则从这个集群中选出一 台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。

同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的 程度。

g) 目标地址散列(Destination Hashing) Dh

"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

h) 源地址散列(Source Hashing)SH

"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器。

若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

1.8 LVS+Keepalived方案实现

1.8.1 keepalived功能

1. 添加VIP

2. 添加LVS配置

3. 高可用(VIP漂移)

4. web服务器 健康 检查

1.8.2 在负载器安装Keepalived软件

# 检查软件是否安装

1.8.3 修改配置文件

lb03上keepalied配置文件

lb04的Keepalied配置文件

keepalived persistence_timeout参数意义 LVS Persistence 参数的作用

http://blog.csdn.net/nimasike/article/details/53911363

1.8.4 启动keepalived服务

1.8.5 在web服务器上进行配置

注意:web服务器上的配置为临时生效,可以将其写入rc.local文件,注意文件的执行权限。

使用curl命令进行测试

至此keepalived+lvs配置完毕

1.9 常见LVS负载均衡高可用解决方案

Ø 开发类似keepalived的脚本,早期的办法,现在不推荐使用。

Ø heartbeat+lvs+ldirectord脚本配置方案,复杂不易控制,不推荐使用

Ø RedHat工具piranha,一个web界面配置LVS。

Ø LVS-DR+keepalived方案,推荐最优方案,简单、易用、高效。

1.9.1 lvs排错思路




o 根据测评要素设计面试题目,每个面试题型设计两个题目;要给出评分标...
6) 应变性问题 目的:考察情绪稳定性与应变能力 样题:领导开会时发言明显出错,您如何制止他?您的领导交给您一件根本无法完成的工作,请问您会如何处理这种情况?7) 投射性问题 投射性面试问题设计是面试领域的新趋势。传统的面试问题存在面试目的显著但题目表面效度过高,被试者很容易就了解面试考官的...

大学里校团委面试一般是什么问题
团委面试问题 1、自己高中阶段有没有担任什么职务,这些工作对自己影响?2、谈谈自己对自己的认识?(以组织部为例)3、既然自己想入组织部,那自己对组织部有什么认识?4、自己进院团委的目的是什么?5、自己对院团委的理解和认识?6、如果自己进了院团委,怎么处理好学习和工作,干部和学生的关系?7、谈谈...

大学生社团面试问题大全及答案大全
通过回答可以给面试官感觉是你是经过对组织部工作的了解才报名组织部面试的,说明你不是盲目的进组织部。7. 在活动中遇到了什么困难,你又是如何解决的?这个问题要深思熟虑啊,有个技巧,先想想你竞争的部门和岗位,看需要什么样的能力,然后在解决过程中一定要时刻体现,再想想自己设计个什么困难,这样...

UI设计岗位最常见的面试题
6、阐述一下设计一款APP的想法和思路?答:首先要考虑我们这款产品的目标用户群是谁,针对什么样的人群用什么样的风格。然后做一个主界面风格给BOSS看 合适了继续做等等。想要成为一名合格且优秀的UI设计人员高薪就业,不仅需要专业的技术能力还需要掌握求职的诀窍,所以以上的UI设计面试题分享给大家,希望...

大学社团面试常见问题及回答技巧
5、社团活动可能会占用较多的时间,你如何平衡学业与社团活动 时间管理能力的说明:阐述自己在合理规划时间、制定学习计划方面的能力和经验。对学习的重视和承诺的强调:表明自己对学业的重视,并说明如何保证学习优先,并适当调整时间来参与社团活动。有效回答大学社团面试问题的技巧 1、提前了解社团 在面试前...

学生会部门面试问题及答案
通过回答可以给面试官感觉是你是经过对组织部工作的了解才报名组织部面试的,说明你不是盲目的进组织部。 7. 在活动中遇到了什么困难,你又是如何解决的? 这个问题要深思熟虑啊,有个技巧,先想想你竞争的部门和岗位,看需要什么样的能力,然后在解决过程中一定要时刻体现,再想想自己设计个什么困难,这样会很有利。

面试试题、如果给你一个团队你该怎样去做?
不同阶段关注的侧重也有所不同,虽然在能力和心态上综合需求是类似的,但是面临的问题是不一样的。尤其是处于职位变化期的领导者,要清晰认识到不同阶段的侧重点。基层领导者,带领小团队拼杀突围,关注侧重应该放在质量和业绩上;中层领导着,协调多个部门,关注侧重应该放在整体的稳定和效率上;高层领导者...

社团换届面试问题
9.简单地谈一下你是怎么过完过去的那个暑假的,做了一些有意义的、想做的事吗?(考察学生的语言组织能力,可以看出学生的活泼程度) ;10.进入社践部你觉得你有那些优势?(很经典的学生会面试问题)11.当过班干吗?团支书或班长?你在做学生工作中碰到的令你棘手的问题是什么?(很多学生在面试的时候都...

社团招新面试问题
对于刚进入大学的新生来说, 清楚社团面试过程中的常见的面试题目,才能更好地在社团面试中取得胜利。下面是我给大家整理出来的关于社团面试的常见面试题目:请进行一下自我介绍。你对社团有什么认识了解?你为什么要进社团?开学以来,总结一下你对大学的认识,谈谈你对大学的印象。和其他学生相比,你有...

团总支办公室面试问题怎么回答
最重要的就是要和身边的同学搞好关系,人际关系是一个大问题,搞好了同学之间的关系不仅使我的工作能够顺利快速完成,也使我的课外活动有了更多的选择。16.你在面对部分学生抱怨团总支部时,你会怎样做?我会挺身而出,与同学们进行思想交流,尽量把我们的想法和规划向同学介绍清楚,让同学们对我们的工作...

保定市17377534151: 美团网是如何实现负载均衡的 -
菜聪乳腺: 你说的负载均衡指的是什么? 出口通过链路负载均衡实现链路负载.应用通过应用负载均衡实现应用的高可用,多数据中心通过全局负载均衡实现职能数据中心负载

保定市17377534151: 服务器负载均衡问题,需要的设备和软件 -
菜聪乳腺: 你上面说到的这些服务器只有Web服务器需要做负载均衡,而且一般都是前置机才做负载均衡,做服务器负载均衡的条件是: 1. 你要有提供相同应用的多台Web服务器. 2. 要有负载均衡的设备(可以是软件也可以是硬件). 3. 要为这个服务分...

保定市17377534151: 海量高并发处理网站的负载均衡如何设计 -
菜聪乳腺: 为了满足高并发量访问的需求,可以通过软件手段实现服务器集群的多机负载均衡效果.然而,这种软件式的负载均衡有一个不可避免的缺点,那便是系统的稳定性和性能方面受限于软件所安装运行的服务器,一旦访问量过大时,该台服务器就...

保定市17377534151: 做一个软件,想实现负载均衡,使用什么框架比较好?目前所知的就是gearman,有什么更好的选择吗?
菜聪乳腺: 负载均衡用不着框架,主要是算法要给力,延时一定要小,负载本来是要使服务器响应时间减小,客户体验增强,如果你算法不给力,负载这里延迟就很大,不如不做了

保定市17377534151: 负载均衡的解决方案 -
菜聪乳腺: 负载均衡在银行中的解决方案 业务连续性与高可用性从来都是企业的生命线.我们很难想象,当一个银行的信息系统中断那怕是一个小时,将会造成怎样的严重后果.据权威统计,经历突发性重大灾害后的公司有将近43%倒闭,而另外51% 也...

保定市17377534151: 电子商务作业:1,Internet最新应用,并解释其原理.2,web体系结构的组成及工作原理,并说明三层体系结构
菜聪乳腺: 1,internet 的原理太多了,不好说,反正就是iso/osi的七层模型了.应用就多了,控制,B2C,B2B等等2,一般来说,组成Web站点体系结构有如下几个基本元素.浏览器因为Web浏览器标准、简单且普遍使用,所以它可以称得上是一个接近理想...

保定市17377534151: 搭建负载均衡服务器的话如何做到各个服务器之间的数据或者文件同步 -
菜聪乳腺: 文件集中到第三方存储空间上去

保定市17377534151: 搭建网站需要做负载均衡构架?
菜聪乳腺: 现成的方案推荐给你:DCN睿石系列负载均衡产品,采用高性能硬件加速.在保证敏感数据安全的情况下,将服务器的负载减少90%.支持十万级的TPS处理 .HTTP内容压缩策略采用硬件加速,最大压缩比100:1,节约网站互联网接入带宽消耗,减轻了服务器负担.基于动态缓存技术,提高了用户访问响应速度和整体网站的处理能力.帮助用户改善后台服务器的负载压力.提高了服务器访问效率.服务器不需要耗费更多的资源保持多个客户端连接

保定市17377534151: 如何使用LVS构架负载均衡Linux集群系统 -
菜聪乳腺: 集群和负载均衡的区别如下:1、集群(Cluster) 所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信?应用程序可以通过网络共享内存进行消息传送,实现分布式计算机?2、负载均衡...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网