由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。
详细信息
含义
负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。 算法
提供多个WAN ports可作多种负载平衡算法则,企业可依需求自行设定负载平衡规则,而网络存取可参照所设定的规则,执行网络流量负载平衡导引。算法则有:
◎ 依序Round Robin
◎ 比重Weighted Round Robin ◎ 流量比例Traffic ◎ 使用者端User
◎ 应用别Application ◎ 联机数量Session ◎ 服务别Service
◎ 自动分配Auto Mode Inbound Load Balancing
内建Inbound Load Balance 功能,可让企业透过多条ISP线路,提供给浏览者更实时、快速与稳定不断线的因特网在线服务;
Inbound负载平衡算法包括:Round Robin/ Weighted Round Robin/Auto Back Up; 功能
内建DNS服务器,可维护多个网域(domain),每个网域又可以新增多笔纪(A/CNAME/MX),达到Inbound oad Sharing的功能。 ■Server Load Balancing
AboCom服务器负载均衡提供了服务级(端口)负载均衡及备援机制。主要用于合理分配企业对外服务器的访问请求,使得各服务器之间相互进行负载和备援。
AboCom服务器负载与服务器群集差异:
一旦有服务器故障,群集技术只对服务器的硬件是否正常工作进行检查;AboCom服务器负载则对应用服务端口进行检查,一旦服务器的该应用服务端口异常则自动将访问请求转移到正常的服务器进行响应。 ■VPN Trunk 负载均衡
支持同时在多条线路上建立VPN连接,并对其多条VPN线路进行负载。不仅提高了企业总部与分支机构的VPN访问速度,也解决了因某条ISP线路断线造成无法访问的问题。进行VPN负载均衡时VPN访问数据将同时在多条VPN线路上进传输。当一条VPN线路故障时,所有流量将自动切换到正常的VPN线路上进行传输。 QoS(带宽管理)
个人带宽管理:可实现每个人的网络带宽分配、管理,可以设置保证带宽用以保障个人应用不受整体环境影响。每日带宽配额:可以针对个人、群组或部门等分别设置带宽配额,这样可以合理利用带宽资源,杜绝资源的浪费,也杜绝员工干与工作无关的事,如看在线电影,下载大容量文件资料等等。 内容过滤
网络信息过滤:采用关键字进行内容过滤,可保护内网不受色情、暴力、反动、迷信等信息的入侵和干扰。
聊天软件、P2P软件控制:可针对QQ、MSN、YAHHO、SKYPE、GOOGLE TALK等聊天通讯软件进行管控和,还可或禁止如BT、电驴、迅雷等P2P软件的使用。 SSL VPN
提供最佳远程安全存取解决方案,企业仅需透过最熟悉的网络浏览器接口(Web Browser),即可轻松连接到企业内部网络;即使未携带企业管控的笔记型计算机,利用家用计算机、公用计算机、PDA等,甚至是通过无线局域网络,都不影响安全联机的建立。
其他功能
实时图形化统计分析:记录所有网络封包的进出流量信息,可用做网络使用监控及统 计记录;提供
事件警报 (Event Alert)及日志记录(Log)管理功能;
支持3A认证:Authentication、Authorization、Accounting,即认证、授权、审计;
交换机联合防御:利用指定交换机进行联合防护,提升整个网络的安全系数和安全强度;
HA双机热备:支持双机备援,防止设备故障造成网络瘫痪,提升整个网络的可靠性;
远程唤醒(Wake on Lan):远程启动计算机。
负载均衡技术主要应用
1、DNS负载均衡 最早的负载均衡技术是通过DNS来实现的,在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。
2、代理服务器负载均衡 使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。
3、地址转换网关负载均衡 支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。
4、协议内部支持负载均衡 除了这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。
5、NAT负载均衡 NAT(Network Address Translation 网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。
6、反向代理负载均衡 普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
7、混合型负载均衡在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。
负载均衡的四个分类
软/硬件负载均衡
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,Check Point Firewall-1 Connect Control等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。
软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的;由于操作系统本身的Bug,往往会引起安全问题。
硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完成专门的任务,于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。
负载均衡器有多种多样的形式,除了作为意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。
一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。
本地/全局负载均衡
负载均衡从其应用的地理结构上分为本地负载均衡(Local Load
Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。
本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服
务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。
全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。 全局负载均衡有以下的特点:
实现地理位置无关性,能够远距离为用户提供完全的透明服务。 除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。
解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。
冗余技术
高可靠性是过程控制系统的第一要求。冗余技术是计算机系统可靠性设计中常采用的一种技术,是提高计算机系统可靠性的最有效方法之一。为了达到高可靠性和低失效率相统一的目的,我们通常会在控制系统的设计和应用中采用冗余技术。合理的冗余设计将大大提高系统的可靠性,但是同时也增加了系统的复杂度和设计的难度,应用冗余配置的系统还增加了用户投资。因此,如何合理而有效的进行控制系统冗余设计,是值得研究的课题。
1:冗余技术
冗余技术概要:冗余技术就是增加多余的设备,以保证系统更加可靠、安全地工作。冗余的分类方法多种多样,按照在系统中所处的位置,冗余可分为元件级、部件级和系统级;按照冗余的程度可分为1:1冗余、1:2冗余、1:n冗余等多种。在当前元器件可靠性不断提高的情况下,和其它形式的冗余方式相比,1:1的部件级热冗余是一种有效而又相对简单、配置灵活的冗余技术实现方式,如I/O卡件冗余、电源冗余、主控制器冗余等。因此,目前国内外主流的过程控制系统中大多采用了这种方式。当然,在某些局部设计中也有采用元件级或多种冗余方式组合的成功范例。
控制系统冗余设计的目的:系统运行不受局部故障的影响,而且故障部件的维护对整个系统的功能实现没有影响,并可以实现在线维护,使故障部件得到及时的修复。冗余设计会增加系统设计的难度,冗余配置会增加用户系统的投资,但这种投资换来了系统的可靠性,它提高了整个用户系统的平均无故障时间(MTBF),缩短了平均故障修复时间(MTTR),因此,应用在重要场合的控制系统,冗余是非常必要的。
二个部件组成的并联系统(互为冗余)与单部件相比,平均无故障时间是原来的1.5倍。系统的可用性指标可以用两个参数进行简单的描述,一个是平均无故障时间(MTBF),另一个是平均修复时间(MTBR)。系统的可用性可用下式表示: 系统可用性=MTBF/(MTBF+MTBR)
当可用性达到99.999%时,系统每年停止服务的时间只有6分钟。
2:控制系统冗余的关键技术
冗余是一种高级的可靠性设计技术, 1:1热冗余也就是所谓的双重化,是其中一种有效的冗余方式,但它并不是两个部件简单的并联运行,而是需要硬件、软件、通讯等协同工作来实现。将互为冗余的两个部件构成一个有机的整体,通常包括以下多个技术要点: 1)信息同步技术
它是工作、备用部件之间实现无扰动(Bumpless)切换技术的前提,只有按控制实时性要求进行高速有效的信息同步,保证工作、备用部件步调一致地工作,才能实现冗余部件之间的无扰动切换。
在热备用工作方式下,其中一块处于工作状态(工作卡),实现系统的数据采集、运算、控制输出、网络通讯等功能;而另一块处于备用状态(备用卡),它实时跟踪工作卡的内部控制状态(即状态同步)。工作/备用卡件之间的正/负逻辑是互斥的,即一个为工作卡,另一个必定是备用卡;而且它们之间有冗余控制电路(又称工作/备用控制电路)和信息通讯电路,以协调两块卡件同时而且有序地运行,保证对外输入输出特性的同一性,即对于用户使用而言,可以认为只有一个部件。一般在设计中,工作、备用部件之间通过高速的冗余通讯通道(串行或并行)实现运行状态互检和控制状态的同步(如组态信息、输出阀位、控制参数等)。
2)故障检测技术
为了保证系统在出现故障时及时将冗余部分投入工作,必须有高精确的在线故障检测技术,实现故障发现、故障定位、故障隔离和故障报警。故障检测包括电源、微处理器、数据通讯链路、数据总线及I/O状态等。其中故障诊断包括故障自诊断和故障互检(工作、备用卡件之间的相互检查)
3) 故障仲裁技术和切换技术
精确及时地发现故障后,还需要及时确定故障的部位、分析故障的严重性,依赖前文提到的冗余控制电路,对工作、备用故障状态进行分析、比较和仲裁,以判定是否需要进行工作/备用之间的状态切换。控制权切换到冗余备用部件还必须保证快速、安全、无扰动。当处于工作状态的部件出现故障(断电、复位、软件故障、硬件故障等)或者工作部件的故障较备用部件严重时,备用部件必须快速地无扰动地接替工作部件的所有控制任务,对现场控制不造成任何影响。同时要求切换时间应为毫秒级,甚至是微秒级,这样就不会因为该部件的故障而造成外部控制对象的失控或检测信息失效等等。另外,还需要尽快通过网络通讯或就地LED显示进行报警,通知用户出现故障的部件和故障情况,以便进行及时维护。
4)热插拔技术
为了保证容错系统具有高可靠性,必须尽量减少系统的平均修复时间MTBR。要做到这一点,在设计上应努力提高单元的性、可修复性、故障可维护性。实现故障部件的在线维护和更换也是冗余技术的重要组成部分,它是实现控制系统故障部件快速修复技术的关键。部件的热插拔功能可以在不中断系统正常控制功能的情况下增加或更换组件,使系统平稳地运行。
5)故障隔离技术 冗余设计时,必须考虑工作、备用部件之间的故障应该做到尽可能互不影响或影响的概率相当小(0.01%),即可认为故障是隔离的。这样可以保证:处于备用状态的部件发生故障时,不会影响冗余工作部件或其他关联部件的正常运行,保证冗余的有效性。
3:冗余技术在控制系统中的应用实现分析
通过控制系统冗余原理与方法的具体分析可以看到,系统的可用性在很大程度上取决于那些MTBF值较低而能对系统正常运行造成重大影响的部件,如主控制卡、网络、电源、通讯转发卡等。在系统设计中对关键部件进行冗余设计,可以大大提高系统的可用性。 下面以SUPCON JX-300X 为例分析冗余的实现方式。
SUPCON JX-300X 型集散控制系统[1]的各个部件的冗余,实现了从电源、主控制器、过程控制网络,直至I/O卡件的冗余。 JX-300X型DCS采用全智能化、全数字化设计,在此基础上成功地实现了卡件的热插拔、故障诊断、信息同步等前文提到的各项技术。该系统采用典型控制系统三层模型,每个层次内均可冗余配置,而层次之间采用全冗余连接。即整个系统内以冗余过程控制网络(SCnet)和冗余现场I/O总线(SBUS)为高可靠的连接通道,系统内各个部件的运行和部件之间点对点连接都可冗余。
根据控制系统内各个部件功能定位的不同,采用了具体方式有所差别,具体策略为: 1)主控制卡的冗余
主控制卡是整个系统的核心控制单元,完成系统的控制任务。而冗余技术各个设计要点在此得到充分应用。互为冗余的两块主控制卡软件、硬件完全一致,它们执行同样的系统软件和应用程序,在工作/备用冗余逻辑电路的控制下,其中一个运行在工作状态(工作卡),另外一个运行在备用状态(备用卡),如图2所示。工作卡和备用卡之间具有公共的冗余逻辑控制电路和专用的高速对等冗余通讯通道,同时也可以通过I/O总线和过程控制网络进行信息交互或故障诊测。互为冗余的主控制卡都能访问I/O和过程控制网络,备用模式下的主控制卡执行诊断程序,监视工作卡的状态,通过周期查询工作卡件中的数据存储器,接受工作卡发送的实时控制运行信息。备用处理器可随时保存最新的控制数据,以保证工作/备用的无扰动切换,但工作模式下的主控制卡起着控制、输出、实时过程信息发布,等决定性的作用(具有发言权)。冗余技术的关键在于实现信息同步,而信息同步的最终目的是为了实现冗余部件之间无扰动切换。我们把信息同步的方法分为“自然同步”和“强制同步”。
互为冗余的两个主控制卡作为一个整体与外界交换信息(网络通讯、I/O通讯 ),共享进入这个整体的输入信息,这就是冗余部件的同一性(也可以称为单一性)。对外输出信息时工作卡掌握主动权,代表这个整体发言,即冗余的协同性。通俗地讲,两个互为冗余的部件,对于用户使用和外部控制对象而言,可被视为一个整体。
为了保证互为冗余的两个卡件具有平等获取外部信息(I/O通讯、网络通讯)的权利,冗余部件具有同样的通讯接口,保证卡件内输入信息的一致。冗余的两块卡件有各自的通讯通路,只要保证相同的输入信息在两个通信通路上同时进行传输,两块卡件就可以获得相同的信息。这种凭借外部设备实现输入信息的同步称为“自然同步”。“自然同步”发生在冗余系统和外部设备之间。工作卡掌握主动权,代表整体发言,并通过冗余通信将各种状态信息传送给备用卡,达到控制任务的同步,这就是“强制同步”。“强制同步”通过冗余通信使备用卡内部控制状态与工作卡保持一致,它发生在互为冗余的卡件之间。根据变量特性的不同,具体采用的同步方式也各不相同,具体应用如下表:
2) 电源系统冗余。
电源是整个控制系统得以正常工作的动力源泉,一旦电源单元发生故障,往往会使整个控制系统的工作中断,造成严重后果。要使控制系统能够安全、可靠、长期、稳定地运行,首先稳定的供电必须得到保证。JX-300X型DCS采用可热插拔的冗余电源,正常工作时,两台电源各输出一半功率,从而使每一台电源都工作在轻负载状态,有利于电源稳定工作。当其中一台发生故障,短时由另一台接替其工作,并报警。设计为可热插拔的冗余电源,这样系统维护时可以在不影响系统正常运行的情况下更换故障的电源。
3) 网络系统冗余。
采用冗余网卡和冗余网络接口。正常工作时,冗余的两条数据高速通路同时并行运行,自动分摊网络流量,并考虑了负载均衡的冗余设计,使系统网络通信带宽提高。当其中一路故障(网卡损坏或出现线路故障)时,另一路自动地承担全部通信负载,保证通信的正常进行。
4)冷却系统冗余。
利用控制柜内可自动切换的冗余风扇,对风扇和机柜内温度进行实时监测,发现工作风扇故障或柜内温度过高时都会自动报警,并自动启动备用风扇。
5) 信息冗余。
除了硬件部件的冗余,JX-300X型DCS还采用了信息冗余技术,这也是提高系统可靠性的一个重要手段。信息冗余技术是指在通信过程中或存放组态信息(重要信息)时,利用增加的多余信息位提供检错甚至纠错的能力。该系统中SBUS总线通讯和SCnet控制网络都采用循环冗余码校验(CRC)方法。而重要组态信息(如系统配置)在主控制卡内的存放采用1:1冗余存放,使重要信息具备故障(出错)自我恢复能力,保证系统运行过程中重要信息的安全性。
企业实现服务器负载均衡常见的四种方法
为了提高服务器的性能和工作负载能力,企业通常会使用DNS服务器、网络地址转换等技术来实现多服务器负载均衡,特别是目前企业对外的互联网Web网站,许多都是通过几台
服务器来完成服务器访问的负载均衡。
目前企业使用的所谓“负载均衡服务器”,实际上它是应用系统的一种控制服务器,所有用户的请求都首先到此服务器,然后由此服务器根据各个实际处理服务器状态将请求具体分配到某个实际处理服务器中,对外公开的域名与IP地址都是这台服务器。负载均衡控制与管理软件安装在这台服务器上,这台服务器一般只做负载均衡任务分配,但不是实际对网
络请求进行处理的服务器。 一、企业实现Web服务器负载均衡
为了将负载均匀的分配给内部的多个服务器上,就需要应用一定的负载均衡策略。通过服务器负载均衡设备实现各服务器群的流量动态负载均衡,并互为冗余备份。并要求新系统应有一定的扩展性,如数据访问量继续增大,可再添加新的服务器加入负载均衡系统。 对于WEB服务应用,同时有几台机器提供服务,每台机器的状态可以设为regular(正常工作)或backup(备份状态),或者同时设定为regular状态。负载均衡设备根据管理员事先设定的负载算法和当前网络的实际的动态的负载情况决定下一个用户的请求将被重定向到的服务器。而这一切对于用户来说是完全透明的,用户完成了对WEB服务的请求,并不用
关心具体是哪台服务器完成的。
二、使用网络地址转换实现多服务器负载均衡
支持负载均衡的地址转换网关中可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。很多硬件厂商将这种技术集成在他们的交换机中,作为他们第四层交换的一种功能来实现,一般采用随机选择、根据服务器的连接数量或者响应时间进行选择的负载均衡策略来分配负载。然而硬件实现的负
载控制器灵活性不强,不能支持更优化的负载均衡策略和更复杂的应用协议。 基于网络地址转换的负载均衡器可以有效的解决服务器端的CPU和磁盘I/O负载,然而负载均衡器本身的性能受网络I/O的,在一定硬件条件下具有一定的带宽,但可以通过改善算法和提高运行负载均衡程序的硬件性能,来提高这个带宽。不同的服务类型对不同的服务器资源进行占用,我们使用的负载衡量策略是使用同一个负载进行评估,这对于大多数条件是适合的,然而最好的办法是针对不同的资源,如CPU、磁盘I/O或网络I/O
等,分别监视服务器负载,由中心控制器选择最合适的服务器分发客户请求。
三、使用DNS服务器实现负载均衡
访问企业网服务器的用户急剧增加,一台服务器难以满足用户的访问需要,那么如何才能保证用户的正常访问呢?解决方法有很多,如使用Windows 2000或Windows Server 2003提供网络负载均衡服务,但该服务的设置非常复杂。而通过DNS服务器实现网络负载均衡则
是一种比较简单的方法。
企业网通常由很多子网构成,为了降低网络中的数据流量,客户机最好能访问处于同一子网内的Web服务器。虽然实现了网络负载均衡功能,但并不能保证客户访问的是本子网的Web服务器。其实这个问题也很好解决,只要启用DNS服务器的“启用网络掩码排序”功能
即可。在DNS管理器窗口中,右键点击DNS服务器,在弹出的菜单中选择“属性”,然后在属性对话框中切换到“高级”选项卡,勾选“服务器选项”列表框中的“启用网络掩码排序”选项即可。这样客户机每次都能访问到本子网内的Web服务器了。完成以上设置后,就使DNS服务器实现了网络负载均衡功能,把客户的访问分担到每个Web服务器上,并且还减少
了跨子网的网络通信流量,大大降低了企业网的通信负担。 四、企业实现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可以实时的、第一时间切换到其他服务器上来继续提供服务。真正的实现
零时间的服务器切换,大大提高安全性,真正意义的实现服务器不间断服务。
一个域名对应多个ip地址
本质上讲,网络负载平衡是分布式作业调度系统的一种实现。平衡器作为网络请求分配的控制者,要根据集群节点的当前处理能力,采用集中或分布策略对网络服务请求进行调配,并且在每个服务请求的生命周期里监控各个节点的有效状态。一般的说,平衡器对请求的调度具备以下的特征:
网络服务请求必须是可管理的 请求的分配对用户是透明的 最好能够提供异构系统的支持
能够依据集群节点的资源情况进行动态分配和调整
负载平衡器在集群的各个服务节点中分配工作负载或网络流量。可以静态预先设置或根据当前的网络状态来决定负载分发到哪个特定的节点,节点在集群内部可以互相连接,但它们必须与平衡器直接或间接相连。
网络平衡器可以认为是网络层次上的作业调度系统,大多数网络负载平衡器能够在网络的相应层次上实现单一系统映像,整个集群能够体现为一个单一的IP地址被用户访问,而具体服务的节点对用户而言是透明的。这里,平衡器可静态或动态配置,用一种或多种算法决定哪个节点获得下一个网络服务请求。
2.网络平衡原理
在TCP/IP协议中,数据包含有必要的网络信息,因而在网络缓存或网络平衡的具体实现算法里,数据包的信息很重要。但由于数据包是面向分组的(IP)和面向连接的(TCP),且经常被分片,没有与应用有关的完整信息,特别是和连接会话相关的状态信息。因此必须从连接的角度看待数据包——从源地址的端口建立到目的地址端口的连接。
平衡考虑的另一个要素就是节点的资源使用状态。由于负载平衡是这类系统的最终目的,那么及时、准确的把握节点负载状况,并根据各个节点当前的资源使用状态动态调整负载平衡的任务分布,是网络动态负载平衡集群系统考虑的另一关键问题。
一般情况下,集群的服务节点可以提供诸如处理器负载,应用系统负载、活跃用户数、可用的网络协议缓存以及其他的资源信息。信息通过高效的消息机制传给平衡器,平衡器监视所有处理节点的状态,主动决定下个任务传给谁。平衡器可以是单个设备,也可以使一组平行或树状分布的设备。
3.基本的网络负载平衡算法
平衡算法设计的好坏直接决定了集群在负载均衡上的表现,设计不好的算法,会导致集群的负载失衡。一般的平衡算法主要任务是决定如何选择下一个集群节点,然后将新的服务请求转发给它。有些简单平衡方法可以使用,有些必须和其它简单或高级方法组合使用。而一个好的负载均衡算法也并不是万能的,它一般只在某些特殊的应用环境下才能发挥最大效用。因此在考察负载均衡算法的同时,也要注意算法本身的适用面,并在采取集群部署的时候根据集群自身的特点进行综合考虑,把不同的算法和技术结合起来使用。
3.1 轮转法:
轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺序轮转选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在DNS域名轮询中被广泛使用。
轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。
3.2 散列法
散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示出特别的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。
而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在Web Cache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个Cache服务节点上,以避免页面缺失而带来的更新Cache问题。
3.3 最少连接法
在最少连接法中,平衡器纪录目前所有活跃连接,把下一个新的请求发给当前含有最少连接数的节点。这种算法针对TCP连接进行,但由于不同应用对系统资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型Web服务器作为集群节点服务时(例如Apache服务器),该算法在平衡负载的效果上要打个折扣。为了减少这个不利的影响,可以对每个节点设置最大的连接数上限(通过阈值设定体现)。
3.4 最低缺失法
在最低缺失法中,平衡器长期纪录到各节点的请求情况,把下个请求发给历史上处理请求最少的节点。与最少连接法不同的是,最低缺失记录过去的连接数而不是当前的连接数。
3.5 最快响应法
平衡器记录自身到每一个集群节点的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的节点,这种方法要求使用ICMP包或基于UDP包的专用技术来主动探测各节点。
在大多数基于LAN的集群中,最快响应算法工作的并不是很好,因为LAN中的ICMP包基本上都在10ms内完成回应,体现不出节点之间的差异;如果在WAN上进行平衡的话,响应时间对于用户就近选择服务器而言还是具有现实意义的;而且集群的拓扑越分散这种方法越能体现出效果来。这种方法是高级平衡基于拓扑结构重定向用到的主要方法。
3.6 加权法
加权方法只能与其他方法合用,是它们的一个很好的补充。加权算法根据节点的
优先级或当前的负载状况(即权值)来构成负载平衡的多优先级队列,队列中的每个等待处理的连接都具有相同处理等级,这样在同一个队列里可以按照前面的轮转法或者最少连接法进行均衡,而队列之间按照优先级的先后顺序进行均衡处理。在这里权值是基于各节点能力的一个估计值。
4、动态反馈负载均衡
当客户访问集群资源时,提交的任务所需的时间和所要消耗的计算资源是千差万别的,它依赖于很多因素。例如:任务请求的服务类型、当前网络带宽的情况、以及当前服务器资源利用的情况等等。一些负载比较重的任务需要进行计算密集的查询、数据库访问、很长响应数据流;而负载比较轻的任务请求往往只需要读一个小文件或者进行很简单的计算。
对任务请求处理时间的不同可能会导致处理结点利用率的倾斜(Skew),即处理结点的负载不平衡。有可能存在这样情况,有些结点已经超负荷运行,而其他结点基本是闲置着。同时,有些结点已经忙不过来,有很长的请求队列,还不断地收到新的请求。反过来说,这会导致客户长时间的等待,而集群整体的服务质量下降。因此,有必要采用一种机制,使得平衡器能够实时地了解各个结点的负载状况,并能根据负载的变化做出调整。
具体的做法上采用了基于负反馈机制的动态负载均衡算法,该算法考虑每一个结点的实时负载和响应能力,不断调整任务分布的比例,来避免有些结点超载时依然收到大量请求,从而提高单一集群的整体吞吐率。
在集群内,负载均衡器上运行服务端监控进程,监控进程负责监视和收集集群内各个结点的负载信息;而每个结点上运行客户端进程,负责定时向均衡器报告自身的负载状况。监控进程根据收到的全部结点的负载信息来进行同步操作,既对将要分配的任务按照权值得比例重新进行分布。权值得计算主要根据各个结点的CPU利用率、可用内存以及磁盘I/O状况计算出新的权值,若新权值和当前权值的差值大于设定的阀值,监控器采用新的权值对集群范围内的任务重新进行分布,直到下一次的负载信息同步到来之前。均衡器可以配合动态权值,采用加权轮询算法来对接受的网络服务请求进行调度。
4.1 加权轮询调度
加权轮询调度(Weighted Round-Robin Scheduling)算法用相应的权值表示结点的处理性能。该算法根据权值的高低顺序并按照轮询的方式将任务请求分配到各结点。权值高的结点比权值低的结点处理更多的任务请求,相同权值的结点处理相同份额的请求。加权轮询的基本原理可描述为:
假设某集群内有一组结点N = {N0, N1, „, Nn-1},W(Ni)表示结点Ni的权值, 一个指示变量i表示上一次选择的服务器,T(Ni)表示结点Ni当前所分配的任务量。
∑T(Ni) 表示当前同步周期需要处理的任务总量。
∑W(Ni) 表示结点的权值总和。
则: W(Ni)/ ∑W(Ni)= T(Ni)/ ∑T(Ni)
表示任务的分配是按照各个结点权值占权值总数的比例来进行分配。
4.2 权值计算
当集群的结点初次投入系统中使用时,系统管理员根据结点的硬件配置情况对每个结点都设定一个初始权值DW(Ni)(通常根据结点的硬件配置来定义,硬件配置越高的结点默认值越高),在负载均衡器上也先使用这个权值。然后,随着结点负载的变化,均衡器对权值进行调整。
动态权值是由结点运行时各方面的参数计算出来的。我们在实验中选取了最重要几项,包括:CPU资源,内存资源,当前进程数,响应时间等信息作为计算公式的因子。结合每个结点当前的权值,可以计算出新的权值的大小。动态权值目的是要正确反映结点负载的状况,以预测结点将来可能的负载变化。对于不同类型的系统应用,各个参数的重要程度也有所不同。典型的Web应用环境下,可用内存资源和响应时间就非常重要;如果用户以长的数据库事务为主,则CPU使用率和可用内存就相对重要一些。为了方便在系统运行过程中针对不同的应用对各个参数的比例进行适当调整,我们为每一个参数设定一个常量系数 Ri ,用来来表示各个负载参数的重要程度,其中∑ Ri = 1。因此,任何一个结点Ni的权值公式就可以描述为:
LOAD(Ni)=R1*Lcpu(Ni)+R2*Lmemory(Ni)+R3*Lio(Ni)+R4*Lprocess(Ni)+R5*Lresponse(Ni)
其中Lf(Ni) 表示结点Ni 当前某一项参数的负载值,
上述公式中依次表示为:CPU使用率、内存使用率、 磁盘I/O访问率、进程总数以及响应时间。
例如,在WEB服务器集群中,我们采用以系数{0.1, 0.4, 0.1, 0.1, 0.3},这里认为服务器的内存和请求响应时间较其他参数重要一些。若当前的系数Ri不能很好地反映应用的负载,系统管理员可以对系数不断地修正,直到找到贴近当前应用的一组系数。
另外,关于采集权值的周期置,虽然很短的周期可以更确切地反映各个结点的负载,但是很频繁地采集(如1秒1次或者多次)会给均衡器和结点带来负担,也可能增加不必要的网络负荷。另外,由于采集器是在采集时刻进行负载计算的,经实验证明,均衡器反映出来各个结点的负载信息会出现剧烈的抖动,均衡器无法准确捕捉结点真实的负载变化趋势。因此解决这些问题,一方面要适当地调整
采集负载信息的周期,一般在5~10秒;另一方面,可以使用移动平均线或者是滑动窗口来避免抖动,使得均衡器收集到的负载信息表现为平滑曲线,这样在负反馈机制的调整效果上就会比较好。
均衡器的动态权值采集程序周期性地运行,若缺省权值不为零,则查询该结点的各负载参数,并计算出动态权值LOAD(Ni) 。我们引入以下权值计算公式,结合结点的初始权值和采集的动态权值来计算最终的权值结果。
Wi = A*DW(Ni)+B*(LOAD(Ni)-DW(Ni))1/3
在公式中,如果动态权值恰好等于初始权值,最终权值不变,则说明系统的负载状况刚好达到理想状况,等于初始权值DW(Ni)。如果动态权值计算结果高于初始权值,最终权值变高,则说明系统负载很轻,均衡器将会增加分配给该结点的任务比率。如果动态权值低于初始权值,最终权值变低,说明系统开始处于重载状况,均衡器将会减少对该结点分配的任务。在实际使用中,若发现所有结点的权值都小于他们的DW(Ni),则说明当前个集群处于超载状态,这时需要加入新的结点到集群中来处理部分负载;反之,若所有结点的权值大大高于DW(Ni),则说明当前系统的负载都比较轻。
5、总结
网络负载平衡是集群作业调度系统的具体实现。由于其处理的作业单元是
TCP/IP协议下的网络连接,因此可以采用面向网络连接的集中基本调度算法。考虑集群负载不平衡的可能,采取了动态获取服务节点的权值并使用负反馈机制调整平衡器对网络服务请求的分布,以适应服务节点在运行过程中资源的变化。笔者也在LVS集群系统的基础上,配合原有的轮询算法对其进行改进,增加了采集动态权值的程序并实时反馈到负载平衡器的调度系统上。实践证明,采用动态平衡在集群系统的整体吞吐量方面有所提高,特别是在集群各个节点性能不一,集群提供的网络服务程序所访问的资源多样化的情况下,负反馈机制的效果尤其明显。在其他类型的集群中,负反馈机制的动态负载平衡也能够得到很好的应用,只是平衡器所处理的作业单元不同于网络连接,而具体的负载算法上也将有所不同。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务