日期:2023-01-24 阅读量:0次 所属栏目:计算机应用
摘 要:在一个集群系统内随着业务访问规模不断加大,并且访问时间的密集性,导致应用服务器不堪重负,而传统的负载均衡技术不能完全保证系统的正常可靠运行,本文基于Active MQ消息总线技术,提出并实现智能负载均衡,以实现整个集群均衡负载的最优化,提升业务系统运行的高性能与高可靠性。
关键词:消息总线;负载均衡;集群;应用服务器
随着网络中各个核心部分业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,采用负载均衡技术将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如应用服务器、数据库服务器和其它关键任务服务器等,从而共同完成工作任务。对于一个稳定、强大的集群,一套优秀的均衡负载是必不可少的,在均衡负载的支持下,集群才有可能实现均衡压力到CPU、I/O、内存和网络的目的。
1、传统的负载均衡
传统的负载均衡系统,采取一台专门的服务器作为负载均衡管理服务器,由该服务器对资源进行管理、调度和分配。这种解决方案,有如下三点缺陷和隐患:
(1)系统繁忙时,负载均衡管理服务器将成为系统性能瓶颈;
(2)如果负载均衡管理服务器出现异常甚至当机,将导致整个系统瘫痪;
(3)集群增加或移除节点时配置复杂,需要对负载均衡管理服务器和变动的节点进行配置,配置过程中的不当操作还可能影响整个系统的运行。
2、 智能负载均衡
针对传统负载均衡存在的问题,设计一套智能化的负载均衡管理系统,使集群中的每台服务器都能智能的监控到整个集群的情况,并根据这个情况来调整该服务器的工作、负载、角色和请求对象,就好像在一支优秀部队里的一个优秀士兵一样,他能够根据连队的情况和自身的情况来决定自己应该攻击,隐蔽,撤退或者协助战友。
在智能负载均衡系统的支撑下,不需要专门的负载均衡管理服务器,每个集群节点自适应,能自主的安排自己的角色和服务,能够在无主控节点的情况下工作;任何一个节点崩溃不会影响导致整个系统瘫痪;节点增加和移除只需要配置节点服务器即可,不会影响系统中其他节点正常的运行;系统中其它节点会自动获知有节点发生变动,停止向删除的节点发出请求或者把新加入的节点加入自己的请求列表;自动最优化压力到集群的CPU、I/O、内存和网络;确保集群稳定、可靠、高效的运行。
3、 平台消息总线
平台需要实现这样一个能自主控制的智能均衡负载,最关键的就是建立一个可靠、灵活、低资源消耗的集群消息总线,类似于战场上的无线电通讯设备。这样集群中的每个节点就能及时的通过这个通信总线主动或被动的获得集群的情况,以支持节点调整和维护自身的状态和服务。
对于平台集群的消息总线,设计基于Java JMS标准进行。在实现时,采用一些在业界已经成熟的消息中间件来构建该消息总线,如可以使用Active MQ进行构建。 Active MQ是Apache基金会下属的顶级开源项目,是一个支持JMS标准的消息中间件。其可靠性完全达到了7×24小时运行的企业标准,在一些项目里甚至已经达到了365×24的工业标准。Active MQ支持跨平台运行,如它可以运行在Windows平台、Linux平台和Unix平台等多种平台上;同时它提供了多种语言接口,如:Java,C,C++,C#,Python等,均可以介入该消息系统。综合来看,采用Active MQ既能满足当前集群中常见的跨平台的要求,又能支持通过多种语言接入。除此之外,我们还可以根据具体的集群环境使用其他的消息中间件:如IBM Websphere Enterprise MQ,JBoss MQ等等。在特定情况下,如果JMS标准不能满足集群的需求,也可考虑基于TCP/IP协议等底层通讯协议实现符合特定需求的消息总线。
4、 技术实现
为实现集群中每个节点都能自我智能调节,每个节点都将拥有一个自己的ID和服务能力描述文件,就像是向其他节点介绍自己的名片;同时每个节点还需要维护一个集群内其他节点的ID和服务能力描述文件列表,就像是存放其它节点名片的名片夹。该服务能力描述文件将主要包括两部分内容:服务和能力。服务部分即描述节点能提供一些什么服务以及有哪些服务可以受理,哪些服务正在休眠,如何访问这些服务等信息。能力部分则是描述改节点目前的综合能力,简单来说就是该节点目前的繁忙程度,以让其他节点能根据它目前的能力情况来调整状态。
如上图所示的服务能力列表,该节点目前安装有2种服务:服务A和服务B,其中服务A正处于活动状态,可以对外提供服务;而服务B处于停止状态。从能力列表可以看出,该节点目前所承受的压力,综合评价(Level)为中等,处于可以正常提供服务的状态。
每过一段时间,每个节点都将在消息总线上发布自己的最新服务能力描述文件,同时也收取其它节点发送过来的服务能力描述文件,在节点内部整理为一个列表。这样其它节点能根据该节点最新的服务能力描述文件调整状态,同时该节点也可以根据收到的服务能力文件列表调整自己的状态。
如下图,当集群里只有两台服务器时:一台应用服务器A和一台应用服务器B,每台服务器会有自己的服务能力列表,同时他们还持有集群中其它服务器的服务能力列表:
当集群中新增如一个新的应用服务器C后,集群中服务器持有的名片信息通过消息总线通信后,每台服务器也会自动的更新他们的名片信息,然后根据名片信息就可以建立集群中新的调用通道。在这个集群中,应用服务器A就会通过名片信息了解到新加入了一台应服务器C,从而会将服务请求发送到新增应用服务器C。
这样在以下情况中,集群中的每个节点就能自动的实现自我调节,以达到集群智能自动调节的目的。
* 节点崩溃或者移除节点
当一个节点崩溃或被从集群中移除后,其余的节点就无法在下一次的发送时间收取到该节点的服务能力描述文件,这种情况下所有节点就会暂停再对该节点发起请求。当这样的情况持续几个发送周期后,例如3个,那么其余节点就会将该节点的服务能力描述文件从列表中移除,该崩溃或被移除节点就平滑的从集群中被排除了。
如下图所示(访问负载压力以箭头线的粗细表示,越粗则说明负载压力越大,越细则说明负载压力越小),平台原本拥有一台Web服务器、3台应用服务器:A、B、C和2台数
据服务器A和B。
当应用服务器C出现故障或者崩溃时,它就会自动被其余服务器从集群中排除,请求会自动被转发至可以继续提供服务的服务器中,而不会继续将请求发送到已经发送故障或者被移除的服务器节点。
* 新增节点
当一个节点被管理员新增加入集群后,它会主动连接上消息总线,当发送周期开始时新节点会主动将自己的能力描述文件发送给集群中其他活动的节点。当其他节点获取到该文件后,能根据该文件自动调整其状态。
如下图所示(负载压力以箭头线的粗细表示,越粗则说明负载压力越大,越细则说明负载压力越小),平台集群中同样拥有6台机器:一台Web服务器、3台应用服务器:A、B、C和2台数据服务器A和B;但是由于该时刻访问压力过大,造成了整个集群里所有应用服务器和数据服务器压力都过大了,集群性能下降。
此时,系统管理员可以通过简单增加硬件服务器来提升服务器集群的承载能力:其增加了一台应用服务器D,一台数据服务器C。它们加入集群后集群自动发现了他们,智能均衡负载系统就能自动将请求转发给新服务器,整个集群的性能自动得到了提升。
通过以上情况的处理,整个集群的节点都能自主的,不需要人为干预的自动根据集群负载变化进行请求分发的调整,实现整个集群均衡负载的最优化。
5、 总结
虽然基于消息总线的智能均衡负载系统原理并不复杂,但在实现该均衡负载系统时,应注意一下几个方面:
1)由于系统消息总线是整个智能均衡负载技术实现的核心,对于该部分的实现和测试必须严格和可靠,确保该消息总线能长时间高可用、高可靠的运行。在必要的时候,甚至需要考虑对消息总线进行具有高可扩展性的设计和实现,以确保它的服务承载能力能根据集群的需求进行扩展。
2)对于能力描述文件,由于它需要在消息总线中频繁交互,对于它的设计时应尽量保持其结构简单,内容精炼。
3)对于需要跨越防火墙时,应考虑使用HTTP协议等更为安全的通信协议进行通信,防止消息总线被防火墙隔离。
4)根据能力描述文件进行请求的分发时,应设计高效、可靠的算法对其支撑,防止由于算法的问题造成均衡负载效果低于设计目标。
最终一个实现良好,性能优秀的智能均衡负载系统较好的解决采用单一均衡负载管理服务器所导致的瓶颈和单点故障问题,使整个集群能够自主的调节负载和分配请求;同时它还可以显著的减轻集群系统管理员的工作,使系统管理员能够从传统集群繁重的配置管理工作中解放出来,投入到更为关键的任务中去。 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/242679.html