如何理解Linux下的负载均衡?

如题所述

一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat的日趋成熟,这问题也不大了。网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。

二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。

三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。

四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章。

五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。

六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、Nginx+Keepalived.

七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx.

八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择。

九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。

十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP。
十一、在实际项目实施过程中发现,Lvs和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。

十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果,毕竟广告网站和电子商务网站的PV就是金钱,这也是为什么要将负载均衡高可用设计于此的原因;大型的广告网站我就建议直接上CDN系统了。

十三、现在Linux集群都被大家神话了,其实这个也没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx和LVS、F5都不是神话,哪种方便哪种适用就选用哪种。

十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,而F5和LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担,这个看系统架构师的取舍了。

十五、我现在目前维护的电子商务网站并发大约是1000左右,以前的证券资讯类网站是100左右,大型网上广告大约是3000,我感觉web层的并发越来越不是一个问题;现在由于服务器的强悍,再加上Nginx作web的高抗并发性,web层的并发并不是什么大问题;相反而言,文件服务器层和数据库层的压力是越来越大了,单NFS不可能胜任目前的工作,现在好的方案是moosefs和DRDB+Heartbeat+NFS;而我喜欢的Mysql服务器,成熟的应用方案还是主从,如果压力过大,我不得不选择oracle的RAC双机方案。

十六、现在受张宴的影响,大家都去玩Nginx了(尤其是作web),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱,整个网站的瓶颈应该还是在数据库方面;我建议可以双方面了解Apache和Nginx,前端用Nginx作负载均衡,后端用Apache作web,效果也是相当的好。

十七、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRDB+Heartbeat算是成熟的应用了,建议掌握。我在相当多的场合用此组合来替代EMC共享存储,毕竟30万的价格并不是每个客户都愿意接受的。

十八、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。

十九、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙,DDOS的安全防护一定要到位;Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-04
Linux下的负载均衡----这跟linux没有关系,操作系统而已。所有操作系统都可以,关键靠软硬件。
负载均衡范围很广,分为系统资源,电力供应,数据读取,网络数据传输,硬盘内存数据传输,
磁盘冗余的,群集负载均衡,问题是你希望在哪方面实现这样的功能。

其实简单点说,当资源或者传输出现重负荷,需要通过各种渠道来平衡,使各种重负荷从点到面。
第2个回答  2011-01-04
我空间里面有本回答被提问者采纳
第3个回答  2011-01-04
WDAOIJDOISFDSF

linux内核SMP负载均衡浅析
此外,负载均衡过程中考虑了进程的热缓存状态,以减少数据丢失和提高迁移效率。综上所述,Linux内核通过一系列策略和机制实现SMP环境下的负载均衡,确保CPU资源的合理分配,提高系统整体性能和稳定性。

详细图解丨负载均衡原理
负载均衡有三种主要类型:DNS实现、硬件负载均衡和软件负载均衡。DNS方式简单成本低,但功能有限;硬件负载均衡性能强大,但价格昂贵;软件负载均衡如Nginx、HAproxy和LVS,可在普通服务器上实现,成本适中,且BAT等大公司常使用LVS,因其性能优越。LVS是基于Linux内核的netfilter框架,主要工作于INPUT链,它有...

负载均衡-LVS,HAProxy和Nginx知识点详解
负载均衡是互联网系统设计中关键的一环,用于高效分发请求至多台服务器,以提升系统的处理能力与稳定性。主要通过硬件或软件负载均衡器实现,硬件如F5 BIG-IP,软件则有LVS、HAProxy、Nginx等。硬件虽性能强大,但成本较高,而软件负载均衡器更适应互联网公司快速发展的需求。LVSLVS全称为Linux Virtual Ser...

linux 多线路防火墙负载均衡具体是哪个更好
1)四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一...

linux内核——调度之SMP负载均衡
在多处理器系统上,内核必须考虑额外问题,确保良好的调度。Linux SMP调度,即进程安排和迁移到合适的CPU,保持各CPU负载均衡的过程。系统启动时开始构建CPU拓扑关系。以ARM的4核处理器为例,系统构建的调度域与调度组的拓扑关系图展现如下。在唤醒进程时,内核需决定由哪个CPU执行该进程。若唤醒的CPU与该...

linux负载均衡lvs原理详细讲解 什么是lvs负载均衡技术
因此可以使用大多数操作系统做为物理服务器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0无需打补丁;IRIX 6.5;HPUX11等。不足:要求负载均衡器的网卡必须与物理网卡在一个物理段上 ...

探索Linux中F5负载均衡的实用性linuxf5
无论您的企业面临的是系统可靠性,负载均衡还是高可用性的挑战,F5负载均衡在Linux中都可以提供有力的支持。此外,用户可以利用F5的脚本功能,灵活地实现特定的负载均衡解决方案。以下是F5扩容代码:定义F5负载均衡器 bigip = BigIP(hostname=””,username=””,password=”...

全网最详细的负载均衡原理图解
负载均衡有三种主要类型:DNS实现、硬件负载均衡和软件负载均衡。DNS方式简单成本低,但仅限于基础负载均衡;硬件负载均衡如F5和A10性能强大但昂贵,适合大型企业;软件负载均衡如Nginx、HAproxy和LVS,LVS因其性能出色且成本效益高,在BAT等大厂中广泛应用。LVS,特别是其Linux Virtual Server版本,基于Linux...

多核系统的负载均衡 [一]
深入探讨多核系统中的负载均衡艺术,我们首先触及SMP与AMP两种架构的差异,它们可能依赖于高级技术,如Hyper-Threading(HT)。在Linux的视角下,逻辑线程虽被视为独立处理器,但实际上并不直接对应CPU的占用率。这里的关键指标是平均负载,非归一化值,当它超过0.7时,可能预示着系统负荷偏高,然而,Linux...

linux下4层负载均衡和7层负载均衡的区别
4层负载均衡是网络层的负载均衡也就是基于IP+端口的负载均衡,如:LVS,F5 7层负载均衡是对应用层做负载,也就是基于URL等应用层信息的负载均衡,如:haproxy,MySQL Proxy

相似回答