网络负载均衡的相关技术
---- 这种技术是利用网络协议的重定向功能来实现负载均衡的,例如在Http协议中支持定位指令,接收到这个指令的浏览器将自动重定向到该指令指明的另一个URL上。由于和执行服务请求相比,发送定位指令对Web服务器的负载要小得多,因此可以根据这个功能来设计一种负载均衡的服务器。一旦Web服务器认为自己的负载较大,它就不再直接发送回浏览器请求的网页,而是送回一个定位指令,让浏览器去服务器集群中的其他服务器上获得所需要的网页。在这种方式下,服务器本身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送定位指令?定位指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。 基于DNS的负载均衡
---- DNS负载均衡技术是最早的负载均衡解决方案,它是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,它们也就访问不同地址上的Web服务器,从而达到负载均衡的目的。
---- 这种技术的优点是,实现简单、实施容易、成本低、适用于大多数TCP/IP应用;但是,其缺点也非常明显,首先这种方案不是真正意义上的负载均衡,DNS服务器将Http请求平均地分配到后台的Web服务器上,而不考虑每个Web服务器当前的负载情况;如果后台的Web服务器的配置和处理能力不同,最慢的Web服务器将成为系统的瓶颈,处理能力强的服务器不能充分发挥作用;其次未考虑容错,如果后台的某台Web服务器出现故障,DNS服务器仍然会把DNS请求分配到这台故障服务器上,导致不能响应客户端。最后一点是致命的,有可能造成相当一部分客户不能享受Web服务,并且由于DNS缓存的原因,所造成的后果要持续相当长一段时间(一般DNS的刷新周期约为24小时)。所以在国外最新的建设中心Web站点方案中,已经很少采用这种方案了。 基于四层交换技术的负载均衡
---- 这种技术是在第四层交换机上设置Web服务的虚拟IP地址,这个虚拟IP地址是DNS服务器中解析到的Web服务器的IP地址,对客户端是可见的。当客户访问此Web应用时,客户端的Http请求会先被第四层交换机接收到,它将基于第四层交换技术实时检测后台Web服务器的负载,根据设定的算法进行快速交换。常见的算法有轮询、加权、最少连接、随机和响应时间等。 基于七层交换技术的负载均衡
---- 基于第七层交换的负载均衡技术主要用于实现Web应用的负载平衡和服务质量保证。它与第四层交换机比较起来有许多优势:第七层交换机不仅能检查TCP/IP数据包的TCP和UDP端口号,从而转发给后台的某台服务器来处理,而且能从会话层以上来分析Http请求的URL,根据URL的不同将不同的Http请求交给不同的服务器来处理(可以具体到某一类文件,直至某一个文件),甚至同一个URL请求可以让多个服务器来响应以分担负载(当客户访问某一个URL,发起Http请求时,它实际上要与服务器建立多个会话连接,得到多个对象,例如txt/gif/jpg文档,当这些对象都下载到本地后,才组成一个完整的页面)。
---- 以上几种负载均衡技术主要应用于一个站点内的服务器群,但是由于一个站点接入Internet的带宽是有限的,因此可以把负载均衡技术开始应用于不同的网络站点之间,这就是站点镜像技术,站点镜像技术实际上利用了DNS负载均衡技术。
摘要: 在由云栖社区和阿里云网络团队联合主办的2017阿里云网络技术在线高峰论坛上,阿里云技术专家添毅分享了网络产品部根据客户和阿里云运维的反馈提炼出的几大最主要和最常见的在使用SLB产品中发生的问题,并为大家介绍了针对这些常见问题的相应处理方法。
摘要: 在由云栖社区和阿里云网络团队联合主办的2017阿里云网络技术在线高峰论坛上,阿里云技术专家添毅分享了网络产品部根据客户和阿里云运维的反馈提炼出的几大最主要和最常见的在使用SLB产品中发生的问题,并为大家介绍了针对这些常见问题的相应处理方法。想知道如何借助SLB构建高可用系统以及健康检查是如何实现的,本文不容错过!
本文内容根据演讲嘉宾分享视频以及PPT整理而成。
本次的分享将会主要围绕以下5个部分
基本概念回顾
如何构建高可用系统
选择性能共享型还是性能保障型实例
为什么健康检查异常
为什么负载不均衡
一、基本概念回顾
SLB是什么
SLB是阿里云推出的一款云负载均衡服务,其主要针对于多台云服务器进行流量分发,能够将业务流量分发到由多台云服务器所组成的后端服务器池上去,以此来提升系统的处理能力。负载均衡所解决的问题主要包括两点:第一点,SLB能够消除系统的单点故障,这是因为SLB的后面是由多台云服务器组成的服务器池,那么当其中某一台服务器出现故障的时候并不会影响整个系统的可服务性。第二点,由于后端的云服务器能够横向地进行扩展,所以也具有为海量业务提供服务的能力。那么,为什么要使用云上的负载均衡呢?这是因为云上负载均衡主要有这样的几个特点:高可靠、高性能、低成本、安全性、易用性。
SLB基本组件
阿里云的SLB主要包括了三个基本组件,这里也进行简单地介绍。第一个基本组件就是实例,每个实例都唯一地标识了云负载均衡器,并且每个实例都对应一个VIP,VIP唯一地标识了负载均衡实例,也是负载均衡对外提供服务的地址。第二个组件是监听,监听是由VIP+端口号来唯一标识的,一个监听中包含用户定制的负载均衡策略和转发规则。最后一个基本组件就是后端挂载的服务器,也就是云服务器ECS,负责处理真正的业务请求。
二、如何构建高可用系统
多层次的高可用
如下图所示,阿里云的负载均衡是从四个层面上去构建高可用的。从底层往上层看,分别是应用级别的高可用、集群级别的高可用、可用区级别(AZ)的高可用以及地域级别(Region)的高可用。
应用级别的高可用主要是通过针对SLB后端的ECS实例的健康检查来实现的。当SLB发现后端不健康的或者不能正常工作的ECS的时候,会将这些不健康的ECS从SLB的转发路径中剔除掉,保证业务流量能够转发到正常的工作服务器当中。集群级别的高可用主要是通过集群中LVS机器间的session同步来保障任何一个用户的业务会话都能够在所有的LVS机器上是相互同步的,当其中某一台LVS出现故障时,可以由其他的LVS来接替出现故障的机器的工作。同时,由于会话保持的存在,用户的业务是不会发生中断的。对于可用区级别的高可用和地域级别的高可用,在本文的后面会进行更加详细的介绍。
细说可用区级别容灾
这里详细地介绍一下可用区级别的容灾。可用区级别容灾的设计初衷是在当一个可用区出现重大灾情的时候,比如整个可用区的机房发生了掉电、光缆出现了中断、整个可用区机房中所有的物理机都无法正常工作的时候,也就是整个可用区都宕掉了的情况下,能够由备可用区来继续提供服务,这就是可用区级别容灾的设计初衷。可用区级别的容灾并不是说某一个可用区中的某一个实例或者是某几个实例出现了故障就会发生可用区的切换,实例自动从可用区A切换到可用区B,这是一个比较常见的误区。而针对于这样的误区,阿里云也建议用户在构建可用区级别的高可用的时候采取以下两个步骤:
首先,建议用户在SLB实例的后端尽可能地去挂载多个可用区的ECS实例。SLB能够支持跨可用区地挂载ECS云服务器,这样可以避免某个可用区的ECS都出现故障的情况下,还有其他可用区的ECS能够接替工作,虽然跨可用区挂在ECS会存在大约2毫秒左右的延迟,但是却能够大大地提升服务的可用性。
第二步就是针对于一些特别重要的业务,建议在不同的可用区分别地去购买SLB的实例。比如在可用区A和可用区B各自购买一个SLB实例,在此基础之上再使用全球负载均衡GSLB来进行实例间的调度。
跨地域容灾的实现
跨地域容灾这一部分与上面介绍的可用区级别容灾的第二步非常相似,也是借助于GSLB产品实现的,GSLB即 智能DNS实现了针对于后端的健康检查、路由调度的优化功能,能够实现在地域之间的负载均衡实例的调度。关于这部分的更详细的内容请参考:全球负载均衡跨地域容灾解决方案(https://promotionaliyuncom/ntms/act/globalslbhtml)。
三、选择性能共享型还是性能保障型实例
共享型vs保障型-WHY保障型
在如今这个共享经济的时代,像滴滴打车这样的模式是非常火的。但是即便是有了滴滴打车,但是还有人会去买车,这是因为会出现如下两个大家可能曾经都碰到过的场景:
早晚高峰叫不到车?雨雪天气路边冻成狗?还大幅提价?
假期想远离尘嚣,找个僻静旷野放空自我,叫个滴滴?也许有去,但保证无回!
所以说共享和保障都是客户的需求。出于对于类似需求的考虑,阿里云的负载均衡也推出了性能保障型实例。以前所推出的SLB共享型实例是因为性能指标没有办法实现隔离,因为所有的共享型实例都处于同一个大共享资源池中,所以在高峰期的时候就会出现资源的争抢,这样就无法满足对于性能具有刚性需求的大客户的诉求。除此之外,还有一些体量特别大的超级用户,他们对于性能的要求会是非常高的,但是由于共享型实例无法做到性能隔离,也支持不了大颗粒度的性能指标,所以也无法完成这样的工作。因此,阿里云推出了性能保障型的负载均衡实例。
超强性能
保障型实例的性能规格如上图所示,其并发连接数最大可以达到500万,每秒的新建链接数(CPS)可以达到50万,针对于七层负载均衡系统的QPS可以达到10万。除此之外,性能保障型实例还具有以下的特点:
超强HTTPS性能。 性能保障型实例针对于七层系统,特别是HTTPS的业务进行了优化,实现了高性能硬加解卡,并且能够实现使HTTPS的业务单实例可达10万QPS。
超大并发连接数。 性能保障型实例的单实例的并发连接数可达500万,所以其可承载物联网场景的下海量连接,可以支撑共享自行车、智能手表等存在特别大量长连接的场景。
共享型实例平滑升级。 原有的共享型实例可以平滑升级至性能保障型实例,而无需更换VIP。
完善的业务监控系统。 在推出性能保障型实例之后,因为每个实例都有相应的性能规格和性能指标,所以阿里云也为用户提供了完整的业务指标监控系统,并支持电话、短信、钉钉企业群等方式的告警。
性能规格
上图所展现的是阿里云SLB性能保障型实例的规格参数。图中的最后两行规格7、8默认在控制台上是无法购买的,目前只针对企业级用户,而且需通过客户经理申请后,通过白名单开放。
如何选择规格
对于保障型实例而言,主要有如下几个性能指标:
最大连接数:一个实例可承载的最大连接数。
新建连接数:CPS表示一个实例每秒可以新建的链接数。
每秒查询数:QPS表示一个实例7层的像HTTP或者HTTPS系统的吞吐量。
通常一个4层SLB的性能好坏由最大连接数和新建连接数来衡量,它们表示了一个SLB系统的并发能力和处理突发连接的能力。通常一个7层SLB的性能好坏主要由QPS决定,QPS表示了一个7层系统的吞吐量。这里需要注意的是QPS是7层独有概念。虽然每个规格都定义了三个性能指标,但是这并不代表这三个性能指标在任何一个性能场景下或者任何一个时刻都能够同时达到最大值,这里存在一个性能指标的短木板原则。比如在某一个应用系统中,QPS已经达到指标上限,但最大连接数还远远没有达到上限,这时不论怎样加大客户端数量,最大连接数都会因为QPS达到上限,而无法达到最大值。
对于规格的选择而言,需要通过之前提到的业务监控系统来获取相关指标。如果用户十分了解自己业务的相关指标,也就是对于高峰期的并发连接数会达到多少以及QPS会达到多少都有非常清晰的了解,也可以直接在控制台上选购。但是如果用户并不清楚自己的相关业务指标,可以在初期选购按量付费的较高规格的实例,并且在一个业务周期内监控流量的峰值,在峰值确定好之后再通过变配的方式改变到比较合适的实例规格。目前性能保障型实例还处于公测阶段,所以现在还没有对于实例收取规格费用,也就是说在这个阶段无论用户选择最小规格还是最大规格,实际上都只需要花费IP配置费和带宽费就可以了,这样也比较便于用户去熟悉和使用阿里云的性能保障型实例。
监控和告警
前面也有所提及,在负载均衡的控制台上面能够直接地显示出相应的一些性能指标,但是在这里只能够实现对于性能指标的监控,却无法进行告警。如果用户需要进行监控告警,可以在阿里云所提供的云监控控制台进行操作。云监控平台可以监控阿里云中的所有产品并且实现业务告警的定制,并且可以选择包括短信邮件、电话、企业钉钉群等方式进行业务的实时告警。
四、为什么健康检查异常
健康检查机制
接下来分享在负载均衡的日常使用中出现的问题,特别是很多用户都存在疑问的健康检查部分的问题。
阿里云的负载均衡一共可以支持四种协议,四层的负载均衡系统主要包括了TCP、HTTP以及UDP协议,而七层的系统则包括了HTTP和HTTPS,而由于目前HTTP和HTTPS都是使用的普通的HTTP方式,所以其实也可以归结为三类协议。对于TCP而言,健康检查的过程是通过发送ACK这种TCP的探测报文去探测端口是否仍然存活;对于HTTP而言,则主要使用的是HEAD的请求方式来检查目标的页面是否正常;UDP部分则主要借鉴了SMP协议的原理。
健康检查部分主要会涉及到几个指标,这些指标需要用户在控制台上进行设置,上图中给出了一些默认的建议值,比如响应的超时时间,也就是在每一次进行健康检查的时候,如果超过一定时间健康检查还没有回应就认为这次的健康检查是失败的;还有健康检查间隔,也就是两次健康检查之间通常需要间隔2秒钟;而所谓的不健康阀值和健康阀值就是在网络环境中往往会由于网络的抖动以及其他的因素导致偶尔的一次健康检查失败了,但是这时候并不能认为服务是真的失败了,所以需要设置一个阀值,比如3次就指的是当3次健康检查都失败的时候才会认为后端的服务是存在问题的,然后将其从转发路径中摘除掉。同样的,当服务从不健康变为健康的时候,也需要进行连续的几次探测,当确定处于稳定的健康状态之后再将其加入到SLB的后端中去。
为啥会失败(TCP)
TCP的健康检查也经常会出现一些失败的情况,这里也为大家提供了简单的故障排查顺序供参考。当出现健康检查失败的时候,首先可以检查一下后端的服务器是否已经启动。如果后端服务器的负载是比较高的,也可能会因为没有CPU时间去处理健检查的回应,这样就有可能导致健康检查失败。除此之外,因为对于阿里云的负载均衡而言,健康检查使用的都是私网地址实现的,所以如果根本没有监听到私网地址或者私网地址本身存在故障也会导致健康检查的失败。还有服务器上可能存在防火墙,将监听端口屏蔽掉了,导致健康检查并未通过。此外还可能存在一些配置方面的问题,比如提供服务的端口和做健康检查的端口不一致也可能存在健康检查失败。
针对于TCP的健康检查而言,很多用户会经常看到自己的后端服务器上日志上面有很多10或者16这些网段的访问,并且访问流量还比较大,这是因为之前所提到的健康检查具有一定的间隔时间,比如2秒或者3秒一次。这时候一些用户可能就会认为健康检查会影响服务器的性能,占了很多的服务器的连接数。其实可以从上图中左侧的报文交互情况看到,当SLB对于云服务器发起健康检查的时候首先会发一个SYN的请求,如果服务器端口是存活的,那么它会回应一个ACK,这个时候SLB端就会紧接着发送RST报文。也就是说实际上连接是并没有建立的,所以也不会占用后端服务器的连接数的资源,并且对于性能的影响也是极为有限的。
为啥会失败(HTTP)
HTTP常见的健康检查失败原因大概会有这样的三点:最常见的情况就是有些用户把服务器的HEAD请求方式禁掉了,因为默认在使用浏览器或者手机等请求一个页面的时候使用的都是GET方式,有时候可能需要上传数据则会使用POST方式,虽然很多服务器都支持HEAD请求方式,但是有些服务器可能会处于安全或者其他复杂因素的考虑将HEAD请求禁掉。所以在这里建议客户将服务器的HEAD请求方式打开,因为阿里云负载均衡七层健康检查方案就是使用的HEAD方案。另外一种常见情况就是页面访问本身上就存在问题,这样的情况下健康检查也是无法通过的。最后一种常见情况就是期望结果配置错误,针对于七层的健康检查是通过使用HEAD请求方式去请求页面,页面返回码可能会是200、300或者400以及500等,用户可以在健康检查的配置中设定预期的正常情况下的返回码值,当健康检查返回码值与预期值不一致就会判定健康检查是失败的。
为啥会失败(UDP)
这里介绍一下UDP健康检查的原理。首先,健康检查通过SLB向后端发送UDP报文探测来获取状态信息。SLB会周期性地给后端ECS发送UDP报文,如果UDP端口的业务处于正常情况,则没有任何回应。而当服务出现问题,比如指定的UDP服务端口处于不可达的情况或者无服务的状态的时候,会回复ICMP的不可达报文。这里也会存在一个问题就是如果后端服务器已经变成了网络中的孤岛,比如出现了整个服务器的掉电、关机情况这样完全不能工作的状态,这时候的ICMP不可达报文是永远不可能收到的,因为后端的服务器无法收到SLB发来的UDP探测报文,那么在这种情况下,可能会出现误认为后端健康的情况,但是实际上这个服务可能已经宕掉了。为了应对这种情况,健康检查还提供用户自定义UDP应答报文来实现精确的UDP健康检查,也就是由用户自定义指定一个字符串,当后端的云服务器收到UDP健康检查的探测的时候,也回应指定的字符串,之后SLB对于这个字符串进行对比和校验,如果匹配成功则认为服务一定是健康的,这样就可以实现非常精确的健康检查。
而UDP的健康检查失败也有很多原因,比如在协议栈里面有可能会有ICMP限速保护。当频率达到一定速率的时候,ICMP会被协议栈限制,后端无法回应ICMP不可达报文,进而导致SLB收不到ICMP的报文,出现健康检查的失败情况。所以这部分是需要注意的,如果可能尽量将速率限制放大一些。
其他问题
健康检查时好时坏的可能原因如下:
HTTP类型健康检查目标URI响应慢。比如本身是动态页面,会涉及到大量的计算才能够渲染完成并返回到前端,这样肯定就会导致健康检查响应比较慢。如果服务器负载过高同样也会出现这样的问题。
未全部放开对SLB健康检查源地址的限制导致分布式健康检查失败。因为阿里云的服务器都是分布式的部署,健康检查也会是分布式的探测,LVS等机器在后端有不同的源去针对某一个云服务器进行探测的,所以如果没有将这些源地址都放开,实际上也会影响健康检查的效率,因为对于这么多机器而言,只要有一台机器检测到是正常的那么就是正常的。
还可能出现直接访问正常,但是健康检查失败的情况。造成这样情况的可能原因如下:
防火墙限制。
目的端口不一致。
检查方法不同,可能使用浏览器看页面是没问题的,但是健康检查却不行,这就是因为刚才所提到的HEAD方法没有开启。或者七层的健康检查配置了URL按照域名转发,但是在浏览器上直接访问则是使用域名去做的,而健康检查是使用IP地址做的,这样也可能出现转发和预期结果的不同。
检查频率不同,ICMP限速。
五、为什么负载不均衡
调度算法与会话保持
首先介绍一下负载均衡的调度算法。阿里云的负载均衡支持三种算法,第一种算法是单纯的轮询(RR),也就是将业务的请求依次地分发到后端的服务器。第二种算法是加权轮询(WRR),也就是在处理调度的时候会根据针对于每一台后端服务器设置权重来进行转发。这里之所以设置权重是因为后端服务器的处理能力可能是不同的,如果使用相同的权重进行轮询可能就会把后端处理能力比较弱的服务器挤爆,所以需要针对于服务器的处理能力设置一些权重。第三种算法是针对于加权最小连接数的轮询(WLC),也就是除了根据每台后端服务器设定的权重值来进行轮询,同时还考虑后端服务器的实际负载,也就是连接数。当权重值相同时,当前连接数越小的后端服务器被轮询到的次数也越高,这样就能够保证负载尽量地均衡。如果不考虑这一点就会造成某些服务器连接数已经很高了但是流量依然还往上面分发,而另外一些服务器却一直处于空闲状态。
会话保持指的是来自同一用户请求始终保持分发到同一台后端的云服务器上。对于同一用户而言,使用的是四层的负载均衡和使用七层的负载均衡在理解上是不一样的。如果是四层负载均衡,则会使用源IP地址标识同一用户,所以如果在可能会有很多办公电脑的大型企业中,这些电脑在企业内部是通过局域网的IP进行通信的,在访问公网的时候都是通过NAT网关处理的,所以在走到Internet的时候,源地址通常会是一个或者很有限的几个。在这种情况下,如果是四层的负载均衡就会把里面所有的请求都视为来自同一个用户的,这种情况下如果开启了会话保持,就会发生问题。而七层的负载均衡是根据用户浏览器中的Cookie来进行唯一识别的,对于刚才的案例在大型企业里面因为内网访问公网的源地址都是一样的,导致没有办法识别到底是不是同一个用户,此时建议使用七层的负载均衡方案解决,因为Cookie是每个浏览器都唯一的。会话的保持时间是可以在控制台上配置的,四层的负载均衡方案最大可达1小时,而七层的方案最大可达24小时。
为何不均衡
最后分享一下不均衡的常见情况。有时候会需要新加一个服务器进来,这时候往往到新加进来的服务器上的连接会很少,这是因为可能会存在以下原因:
存在会话保持的情况下,会话保持会让请求停留在原有的服务器上,这样到新加进来的服务器上的连接自然会少一些。
权重设置不一致,如果在权重的设置上存在区别,而新加进来的服务器的权重如果很低,连接也过不去。
应用属于长连接类型,因为需要在TCP上复用,如果客户端不主动断开连接,后续所有的请求都会继续复用当前服务器上的连接,只有新建连接才有可能到新的服务器上。
而有时候在业务量或者新建连接较少时,也会出现负载不均衡的问题。这是因为每个Core都是独立的调度单元,因此可能存在将某个Client的多条业务经过不同core的调度后全部转发到一台ECS上的情况,同时由于业务量较少,因此出现了不均衡。建议使用轮询算法解决,在RR轮询算法中加入了扰乱因子,可以更加有效的打散SLB到后端的转发路径。
原文链接
集群和负载均衡的区别如下:
1、集群(Cluster)
所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信应用程序可以通过网络共享内存进行消息传送,实现分布式计算机
2、负载均衡(Load Balance)
网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务合理均衡地分配出去这种技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性
3、特点
(1)高可靠性(HA)利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务
(2)高性能计算(HP)即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析化学分析等
(3)负载平衡即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求
LVS系统结构与特点
1 Linux Virtual Server:简称LVS是由中国一个Linux程序员章文嵩博士发起和领导的,基于Linux系统的服务器集群解决方案,其实现目标是创建一个具有良好的扩展性高可靠性高性能和高可用性的体系许多商业的集群产品,比如RedHat的Piranha Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代码的
2 体系结构:使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器物理服务器之间可以通过高速的 LAN或分布在各地的WAN相连最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得像一个服务于同一IP地址的虚拟服务器
3 LVS的三种模式工作原理和优缺点: Linux Virtual Server主要是在负载均衡器上实现的,负载均衡器是一台加了 LVS Patch的22x版内核的Linux系统LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中
即全球服务器负载均衡。
硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。
软/硬件负载均衡:
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。
软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。
H绻�蕴�钟猩璞溉プ鲇布��叮��斐勺试吹睦朔眩��胰绻�院竺媪僖滴窳康募ぴ觯�植坏貌辉俅瓮度敫叨畹挠布��冻杀荆�踔列阅茉僮吭降纳璞敢膊荒苈�憬�匆滴窳康男枨蟆� 在此种情况下,单纯的网络架构就显得捉襟见肘了,而负载均衡机制则应运而生。服务器负载均衡(Server Load Balancing),其原理是将工作任务相对均衡地分摊到多个节点(服务器集群)上执行,从而提升整个业务系统的性能。诸如LVS、HA Proxy等开源软件,可以在现有的网络基础架构之上建立负载均衡机制,以满足业务增长的需要,对于网站的来说不啻为一种廉价且有效的扩展性选择。 此外,针对互联网上有可能影响数据传输的各种环节,CDN(Content Delivery Network)内容交付网络的应对方案也适时出现。CDN对网站内容的处理,主要在于利用缓存技术将静态内容快速分发至边缘节点,通过让用户就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度,同时也减轻了网站自身系统的性能压力。 现在看来,貌似我们已经解决了网站发布所面临的所有瓶颈了,但是实际上问题远没有那么简单。一方面,对于数据交互比较频繁的动态内容而言,CDN只能在其中心节点与源数据节点(网站自身系统)之间做有限的传输优化,加速效果远不如静态内容做缓存分发那般明显。 另一方面,随着线上业务、电子商务等领域的Web内容呈现日渐丰富,涌现出了愈发复杂的业务交付需求,这对网站的发布方而言也意味着将面临更多的挑战。因此,当我们抛开网络的传输质量、带宽拥塞程度等外界因素来看的话,又不得不正视一个问题--影响网站访问效果的最大瓶颈还是在于源数据节点自身的处理性能。 以电子商务网站这种典型的大型高并发访问量的线上业务为例,其性能瓶颈最容易出现在联机事务处理(OLTP)的环节,例如访问用户进行条目查阅、订单确认等场景。产生这种情况的原因在于,网站的运营方出于数据安全等因素的考虑,是不可能将后台数据库等资源完全向CDN服务商开放的。由此造成,所有涉及到此类动态资源的访问就会频繁地经由CDN网络的边缘节点上溯到源数据节点(即网站自身系统)来请求实时地响应处理。在保障数据安全性的前提下,要解决网站的性能瓶颈问题,必须提高源数据节点的业务处理效率,因此我们还得从网络架构的设计着手。 前文提到过,单台服务器的处理能力有限,当突发访问量骤然增加的时候,其性能就会成为整个系统的瓶颈,导致用户访问的响应缓慢甚至网站服务器瘫痪。为了满足高并发量访问的需求,可以通过软件手段实现服务器集群的多机负载均衡效果。然而,这种软件式的负载均衡有一个不可避免的缺点,那便是系统的稳定性和性能方面受限于软件所安装运行的服务器,一旦访问量过大时,该台服务器就恰恰成了整个系统的瓶颈所在。 就一个发布线上业务的网站系统而言,前台的Web服务器由于有外部的CDN服务作为静态内容的分流渠道,尚不至于产生明显的系统瓶颈,而后台处理动态内容的核心业务系统就难免会感到压力巨大了。具体分析的话,当前的业务系统多采用客户端--中间件--数据库的三层结构设计,通常多是利用WebLogic中间件软件自带的服务器集群功能来满足高性能需求,其中一台WebLogic Server作为管理服务器负责任务调度,实现负载均衡效果。但是,当访问用户到达一定数目的时候,由于该服务器自身的硬件性能瓶颈,会造成整个系统的联机事务处理效率低下;而且由于WebLogic自身设计的原因,当任务量达到一定阀值的时候,即便是升级服务器硬件性能也无法提升其进行负载均衡调度的能力。 针对上述情况,最好的办法莫过于采用硬件负载均衡设备,以解决数据流量过大、任务负荷过重所产生的系统瓶颈问题。在这一方面,业内知名的硬件厂商有F5、深信服等等。值得一提的是,深信服的应用交付产品除具有传统负载均衡功能外,其独有的单边加速技术,能够在跨运营商网络环境中,通过广域网传输文件及应用的访问时间减少30%以上,极大提高了用户体验。 虽然部署硬件设备意味着一笔额外的开支,但是它给网站的整体业务系统所带来的性能提升,却是传统的软件方案所望其项背的。除此之外,专业的硬件设备所能提供的负载调度算法和健康检查机制也更加丰富、全面,有助于进一步提升关键业务发布的稳定性和持久性,这对于高并发量的大型网站而言是极具价值的。 当然,对于不同规模、不同业务的网站而言,没有一概而论的设计标准,文中提到的技术手段都有着相应的适用场景,这就需要网站的架构师们做具体的规划了。
您好,很高兴为您解答。
1、企业实现Web服务器负载均衡
为了将负载均匀的分配给内部的多个服务器上,就需要应用一定的负载均衡策略。通过服务器负载均衡设备实现各服务器群的流量动态负载均衡,并互为冗余备份。并要求新系统应有一定的扩展性,如数据访问量继续增大,可再添加新的服务器加入负载均衡系统。
对于WEB服务应用,同时有几台机器提供服务,每台机器的状态可以设为regular(正常工作)或backup(备份状态),或者同时设定为regular状态。负载均衡设备根据管理员事先设定的负载算法和当前网络的实际的动态的负载情况决定下一个用户的请求将被重定向到的服务器。而这一切对于用户来说是完全透明的,用户完成了对WEB服务的请求,并不用关心具体是哪台服务器完成的。
2、使用网络地址转换实现多服务器负载均衡
支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负载控制器灵活性不强,不能支持更优化的负载均衡策略和更复杂的应用协议。
基于网络地址转换的负载均衡器可以有效的解决服务器端的CPU和磁盘I/O负载,然而负载均衡器本身的性能受网络I/O的限制,在一定硬件条件下具有一定的带宽限制,但可以通过改善算法和提高运行负载均衡程序的硬件性能,来提高这个带宽限制。不同的服务类型对不同的服务器资源进行占用,我们使用的负载衡量策略是使用同一个负载进行评估,这对于大多数条件是适合的,然而最好的办法是针对不同的资源,如CPU、磁盘I/O或网络I/O等,分别监视服务器负载,由中心控制器选择最合适的服务器分发客户请求。
3、使用DNS服务器实现负载均衡
访问企业网服务器的用户急剧增加,一台服务器难以满足用户的访问需要,那么如何才能保证用户的正常访问呢解决方法有很多,如使用Windows
2000或Windows Server 2003提供网络负载均衡服务,但该服务的设置非常复杂。而通过DNS服务器实现网络负载均衡则是一种比较简单的方法。
企业网通常由很多子网构成,为了降低网络中的数据流量,客户机最好能访问处于同一子网内的Web服务器。虽然实现了网络负载均衡功能,但并不能保证客户访问的是本子网的Web服务器。其实这个问题也很好解决,只要启用DNS服务器的“启用网络掩码排序”功能即可。在DNS管理器窗口中,右键点击DNS服务器,在弹出的菜单中选择“属性”,然后在属性对话框中切换到“高级”选项卡,勾选“服务器选项”列表框中的“启用网络掩码排序”选项即可。这样客户机每次都能访问到本子网内的Web服务器了。完成以上设置后,就使DNS服务器实现了网络负载均衡功能,把客户的访问分担到每个Web服务器上,并且还减少了跨子网的网络通信流量,大大降低了企业网的通信负担。
4、企业实现SQL Server数据库服务器负载均衡
MS SQL
Server数据库服务器可以说是应用范围最广的数据库产品,并且越来越多地在大型和比较关键的应用系统中提供服务。当企业应用越来越复杂、数据量越来越大的时候,SQL
Server数据库要不停的进行处理、存储、查询的工作,这个时候企业就要考虑SQL Server数据库服务器的性能和速度及安全性了。然而,长期以来,SQL
SERVER数据库服务器都只有“热备”的解决方案,而没有“负载均衡”和“集群”的解决方案。
随着数据库路由器软件ICX的出现,为基于MS SQL Server的数据库系统提供了一种更优秀的集群解决方案。它可以真正的实现SQL
Server数据库服务器的动态负载均衡,提高性能和速度;它可以真正的保证SQL
Server数据库服务器不间断的提供服务,在服务器发生故障的时候实时切换到其他服务器上继续提供服务,切换时间为“零”。数据库路由器是实时并发数据库事务处理同步复制器和负载平衡器。
所有的数据库客户都通过ICX访问数据库。当访问、查询SQL
Server数据库的时候ICX可以根据实际情况分配服务器来提供服务,大大提高服务速度和优化性能,完成负载均衡。ICX可以同时连接多台数据库,这若干台数据库的内容在任何时刻由ICX保证是完全一致的。也就是说,ICX采用了全新的并发事务处理的方式,向连接的N台数据库同步复制事务处理,使得系统在任何时刻具有多个一致的最新逻辑数据库数据集。当其中一台数据库服务器发生故障的时候,ICX可以实时的、第一时间切换到其他服务器上来继续提供服务。真正的实现零时间的服务器切换,大大提高安全性,真正意义的实现服务器不间断服务。
5:当然自己可以DIY:用f5的网络负载均衡硬件和sql
server的复制技术软件可以实现负载均衡,故障切换则需要windows的cluster或者sql server
2005的mirror。除了那个f5的硬件外,整个方案成本其实很低。
如若满意,请点击右侧采纳答案,如若还有问题,请点击追问
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
换种思路解决这问题,我提供点方法:1:找分区或目录同步软件,某台服务器改动了自动把修改应用到别的服务器,比如红旗的HA。2:换种建服务器的思路,后台用一台独立的服务器做数据库和文件服务器,用来存放数据库和上传的文件,另外的做负载均衡运行服务器,把不需要变动的网页程序放上面。。。。
0条评论