Web负载均衡的⼏种实现⽅式
负载均衡(Load Balance)是集技术(Cluster)的⼀种应⽤。负载均衡可以将⼯作任务分摊到多个处理单元,从⽽提⾼并发处理能⼒。⽬前最常见的负载均衡应⽤是Web负载均衡。根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询、IP负载均衡和CDN。其中IP负载均衡可以使⽤硬件设备或软件⽅式来实现。
什么是web负载均衡
服务器集(Cluster)使得多个服务器节点能够协同⼯作,根据⽬的的不同,服务器集可以分为:
负载均衡服务器有哪些⾼性能集:将单个重负载的请求分散到多个节点进⾏处理,最后再将处理结果进⾏汇总
⾼可⽤集:提⾼冗余单元,避免单点故障
负载均衡集:将⼤量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整个服务,负载均衡集同时也实现了⾼可⽤性。
⼀般提到的负载均衡(Load Balance),是指实现负载均衡集。负载均衡实现了横向扩展(Scale Out),避免纵向的升级(Scale Up)换代。
本⽂中的web负载均衡,特指能够分担web请求(http,https等)的负载均衡技术。
基本原理
任何的负载均衡技术都要想办法建⽴某种⼀对多的映射机制:⼀个请求的⼊⼝映射到多个处理请求的节点,从⽽实现分⽽治之(Divide and Conquer)。
这种映射机制使得多个物理存在对外体现为⼀个虚拟的整体,对服务的请求者屏蔽了内部的结构。
采⽤不同的机制建⽴映射关系,可以形成不同的负载均衡技术,常见的包括:
DNS轮询
CDN
IP负载均衡
DNS
DNS轮询是最简单的负载均衡⽅式。以域名作为访问⼊⼝,通过配置多条DNS A记录使得请求可以分配到不同的服务器。
DNS轮询没有快速的健康检查机制,⽽且只⽀持WRR的调度策略导致负载很难“均衡”,通常⽤于要求不⾼的场景。并且DNS轮询⽅式直接将服务器的真实地址暴露给⽤户,不利于服务器安全。
CDN
CDN(Content Delivery Network,内容分发⽹络)。通过发布机制将内容同步到⼤量的缓存节点,并在DNS服务器上进⾏扩展,到⾥⽤户最近的缓存节点作为服务提供节点。
因为很难⾃建⼤量的缓存节点,所以通常使⽤CDN运营商的服务。⽬前国内的服务商很少,⽽且按流量计费,价格也⽐较昂贵。
IP负载均衡
IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。⽐如NAT、DR、Turning等。是最经常使⽤的⽅式。关于其原理,可以参考下⾯另⼀篇⽂章:。
IP负载均衡可以使⽤硬件设备,也可以使⽤软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以⼯作在4-7层,NginX⼯作在7层。关于三者的简单对⽐,可以参考。
硬件负载均衡设备可以将核⼼部分做成芯⽚,性能和稳定性更好,⽽且商⽤产品的可管理性、⽂档和服务都⽐较好。唯⼀的问题就是价格。软件负载均衡通常是开源软件。⾃由度较⾼,但学习成本和管理成本会⽐较⼤。
F5
F5的全称是F5-BIG-IP-GTM,是最流⾏的硬件负载均衡设备,其并发能⼒达到百万级
F5的主要特性包括:
1. 多链路的负载均衡和冗余
可以接⼊多条ISP链路,在链路之间实现负载均衡和⾼可⽤。
2. 防⽕墙负载均衡
F5具有异构防⽕墙的负载均衡与故障⾃动排除能⼒。
3. 服务器负载均衡
这是F5最主要的功能,F5可以配置针对所有的对外提供服务的服务器配置Virtual Server实现负载均衡、
健康检查、回话保持等。
4. ⾼可⽤
F5设备⾃⾝的冗余设计能够保证99.999%的正常运⾏时间,双机F5的故障切换时间为毫秒级。
使⽤F5可以配置整个集的链路冗余和服务器冗余,提⾼可靠的健康检查机制,以保证⾼可⽤。
5. 安全性
与防⽕墙类似,F5采⽤缺省拒绝策略,可以为任何站点增加额外的安全保护,防御普通⽹络攻击,包括DDoS、IP欺骗、SYN攻击、teartop和land攻击、ICMP攻击等。
6. 易于管理
F5提供HTTPS、SSH、Telnet、SNMP等多种管理⽅式,包含详尽的实时报告和历史纪录报告。同时还提供⼆次开发包(i-Control)。
7. 其他
F5还提供了SSL加速、软件升级、IP地址过滤、带宽控制等辅助功能。
为了提⾼服务器的性能和⼯作负载能⼒,企业通常会使⽤DNS服务器、⽹络地址转换等技术来实现多服务器负载均衡,特别是⽬前企业对外的互联⽹Web⽹站,许多都是通过⼏台服务器来完成服务器访问的负载均衡。
⽬前企业使⽤的所谓“负载均衡服务器”,实际上它是应⽤系统的⼀种控制服务器,所有⽤户的请求都⾸先到此服务器,然后由此服务器根据各个实际处理服务器状态将请求具体分配到某个实际处理服务器中,对外公开的域名与IP地址都是这台服务器。负载均衡控制与管理软件安装在这台服务器上,这台服务器⼀般只做负载均衡任务分配,但不是实际对⽹络请求进⾏处理的服务器。
在互联⽹⾼速发展的时代,⼤数据量、⾼并发等是互联⽹⽹站提及最多的。如何处理⾼并发带来的系统性能问题,最终⼤家都会使⽤负载均衡机制。它是根据某种负载策略把请求分发到集中的每⼀台服务器上,让整个服务器来处理⽹站的请求。
公司⽐较有钱的,可以购买专门负责负载均衡的硬件(如:F5),效果肯定会很好。对于⼤部分公司,会选择廉价有效的⽅法扩展整个系统的架构,来增加服务器的吞吐量和处理能⼒,以及承载能⼒。
2.2、集(Cluster)
⽤N台服务器构成⼀个松耦合的多处理器系统(对外来说,他们就是⼀个服务器),它们之间通过⽹络实现通信。让N台服务器之间相互协作,共同承载⼀个⽹站的请求压⼒。
2.3、⾼可⽤(HA)
在集服务器架构中,当主服务器故障时,备份服务器能够⾃动接管主服务器的⼯作,并及时切换过去,以实现对⽤户的不间断服务。2.4、session复制/共享
在访问系统的会话过程中,⽤户登录系统后,不管访问系统的任何资源地址都不需要重复登录,这⾥⾯servlet容易保存了该⽤户的会话(session)。如果两个tomcat(A、B)提供集服务时候,⽤户在A-tomcat上登录,接下来的请求web服务器根据策略分发到B-tomcat,因为B-tomcat没有保存⽤户的会话(session)信息,不知道其登录,会跳转到登录界⾯。
这时候我们需要让B-tomcat也保存有A-tomcat的会话,我们可以使⽤tomcat的session复制实现或者通过其他⼿段让session共享。
3、常⽤web集
3.1、tomcat集⽅案
apache+tomcat;ngnix+tomcat;lvs+nginx+tomcat;⼤家⽐较熟悉的是前两种。(lvs负责集调度,nginx负责静态⽂件处理,tomcat负责动态⽂件处理[最优选择])。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。