引言
从技术角度看,云计算是并行计算(Parallel Cornputing)、分布式计算(Distributed Computing)、集群计算(Cluster Computing)和网格计算(Grid Computing)的发展结果。以云计算为后台的负载均衡技术旨在通过经济有效的技术手段解决企业IT基础架构的性能问题,通过本地资源及云端资源的合理调集,满足应用系统对于资源的常规和突发需求,使IT服务质量有突破性的提升,从而支持平台在规模上的大幅度提高。
企业许多敏感的信息必须放在机构的防火墙之内。如何在信息化服务平台的投资与性能之间进行折衷是一件很困难的事。由于对于季节性等负荷不均匀的平台整个平台的负载可能呈现出某种脉冲特性,而不是一般理论研究偏好的泊松分布。这就导致一种特殊的现象,即在多数时间内大部分平台资源被闲置,带来的突发访问量出现时,却往往会产生严重的服务诸塞问题。虚拟主机托管在某种意义上如同IT资源购置的分期付款,虽然可以降低平台建设的初始投资,却无法从根本上解决由于IT资源浪费造成的高额费用问题。平台投资问题对其发展规模始终是一个很大的制约因素。
本文引进了虚拟技术,对虚拟化后的计算资源和存储资源进行整合,形成资源池之后,通过有效的算法进行动态分配利用,实现对资源利用率的最大化。在虚拟化技术基础上,通过资源调度算法,把云端的资源纳入统一调度,优先使用本地资源,在本地资源不足的情况下调用云端资源保证性能负载需要,实现以云计算为后台的负载均衡。本文要毹决的关键技术难点是如何设计以云计算为后台的负载均衡技术架构,并设计有效的收集与分配资源算法,达到合理的资源调度,实现高效的负载均衡。
1 以云计算为后台的负载均衡技术设计
均衡负载技术的应用,可以充分利用资源,提升系统整体性能。传统的负载均衡技术通常是基于服务器的响应速度、连接数或轮询方法,使用均衡负载技术,大大提升了系统的负载能力及整体系统性能。但由于均衡的对象粒度太大,实际上很难达到较高的负载均衡效果。而虚拟化技术的应用,使均衡的对象粒度明显减小,原来的一台物理服务器,可以虚拟成多台虚拟服务器,虚拟化后的资源更加变得可以量化。虚拟化技术,将底层的计算资源切分或合并成一个或多个运行环境,以软件的方式模拟硬件,通过软件的方式逻辑切分服务器资源,形成统一的虚拟资源池,创建虚拟机运行的独立环境。这种逻辑结构提供了灵活可变、易配置、可扩展的平台服务,并且可以实现灵活有效的分布存储和计算,从而整体上为实现强大的计算和海量数据存储能力提供基础保障。
在参照国外非专用集群技术的基础上,本文提出一种混合的以云计算为后台的负载扩展技术架构,该技术架构是对传统IT架构的改进,是利用云计算的超级存储与计算能力及按需服务特点,扩展企业或单位IT基础设施的负载均衡能力。它的总体技术架构如图1所示。
图1 以云计算为后台的负栽扩展总体技术架构
图中系统以本地服务器为用户提供访问入口,然后再根据负载实际需要把任务分配到云端。充分利用云的“超级”能力;在实际应用,可以根据具体情况调整本地服务和云中心服务的比例,达到最实用效果;改进的随机均衡策略的基本原理是由一个中心服务器维护一个服务组件列表,并根据它们所处节点的计算能力构造一个概率分布;当用户请求到来时,中心服务器按照上述概率分布将其随机分配给列表中的某个组件。考虑到完全依赖静态策略无法应对系统运行过程中可能出现的异常情况,在此增加了一个动态反馈环节,即由未过载的节点定期发送心跳消息,如果中心服务器接收不到来自某个节点的心跳消息,即将该节点上的组件从服务列表中删除。
2 以云计算为后台的负载均衡技术实现
高性能计算集群是解决企业或单位IT性能的传统有效手段,一般通过中间件等软件基础设施将计算任务分配到不同计算节点上以提高整体计算能力。本技术方案可视为高性能计算集群的一种改进。为了实现以云计算为后台的负载均衡技术。关键的工作是在上述支撑软件平台中引入对云端资源的管理能力,建立空闲资源共享池。通过调度算法调用位于工作站池中的空闲资源得到高吞吐量,计算用户可以从工作站池中的任何一台机器提交任务,系统优先从资源池中查找最合适的空闲机,再以远程执行的方式把任务派给这些机器。这相当于把空闲处理机的CPU资源分配给需要的用户,从而实现资源的共享。
上述中间件的基本功能是实现一个集中式的信息收集和任务分配机制。它可以监视局域网中各个主机的负载情况,将处于空闲状态的机器加入动态资源缓冲区中,并且在用户提出CPU资源申请时,为其分配空闲的处理机资源或云端资源。系统保证当一个任务在局域网内被派至远程执行时,该任务使用的是原机器的执行环境,不会使用远程主机的文件系统,以维护远程系统的安全。系统还保证主机的拥有者对自己的机器拥有绝对控制权,并实行本地用户优先的任务调度原则,即当本地任务出现时,远程任务将被中止。系统还提供一种机制,使得本地主机可以在某些意义上像使用自己的资源一样使用分配给它的云端资源。技术实现方法如下:
本地集群中有一台处理机被指定为中央管理机,上面运行两个守护进程Negotiator和Collector,其中Collector负责从各处理机收集负载及任务队列信息,并对上述信息列表进行周期性更新,Negotiator负责空闲处理机的分配。集群中的其他机器运行另外两个守护进程,分别为Schedd和Startd。其中Schedd负责维护任务队列及更新中央管理机保存的任务队列信息,当本地节点中有未完成的任务时,负责与中央管理机协商,以获得空闲机器的资源;Startd负责周期性地检查本地节点负载状态并更新中央管理机的负载信息表,当本地节点被指定为外来任务提供服务时,Startd还负责启动并管理该任务。除此之外,系统还要提供云端资源的代理。上述代理的实例将被Negotiator和Collector视为虚拟的本地主机,与真实的本地主机纳入统一的调度策略。
当用户激活提交程序并提交任务时,将由用户处理机上的Schedd发送调度信息到位于中央管理机上的Negotiator,后者通过如下几个步骤为该任务分配远程资源:
(1)Negotiator从中央管理机维护的集群处理机列表中获得各处理机信息,包括各处理机的负载能力等。
(2)Negotiator确定(或更新)各处理机的任务优先权。处理机的优先权的确定可以采用多种算法,例如可根据处理机实际负债能力进行连续动态更新,使其随等待排队中的任务数增加而增加,随已提交到它的任务数和正运行的任务数(包括本地运行的)增加而减少。优先权也可根据处理机预设或分阶段更新的负载能力,按照某个静态均衡策略进行计算,本文将讨论基于随机均衡策略的算法。
(3)Negotiator从具有最高优先权的处理机开始查询,该处理机把等待任务所需的OS、结构和任务大小提供给Negotiator。
(4)Negotiator选择满足要求的处理机,其条件包括CPU和键盘是空闲的、满足任务标识的需求、满足上述条件的处理机即为远程服务机。
Negotiator将重复以上第(2)~(4)步骤,直到为所有的等待任务找到合适的处理机或没有发现合适的处理机为止。
上述过程由中央处理机上的Negotiator、任务源处理机上的Schedd、服务处理机上的Startd,以及它们所派生的Shadow和Starter进程协调完成。首先,Negotiator发送一个带有服务处理机名的Permission消息到任务源处理机上的Schedd,Schedd派生一个Shadow进程与远程服务机上的Startd协调。负责以后的远程执行工作。Startd根据Shadow的传输要求再评估当前的工作负载和存储空间等运行环境是否发生了变化,如没有变化,则创建两个通信端口并送端口号到原处理机的Shadow。Startd接到Shadow的确认后派生出Starter进程。由它继承上述通信端口并负责远程任务的执行,然后还要通知中央管理机上的Collector有关工作负载的变化情况。Startd此后将继续跟踪Starter的状态变化、挂起信号、以及远程任务的检查点。系统提供的检查点机制用于实现进程迁移、负载均衡和容错等。
3 以云计算为后台的本地负载均衡算法
资源虚拟化后。通过什么算法响应资源需求是关键问题。本文提出了随机均衡策略,其核心工作是构造一个概率分布;当用户请求到来时,中心服务器按照上述概率分布将其随机分配给运行在个节点上的组件。为此引入一个简单模型。假定:
(1)每个节点上只运行一个服务组件;
(2)每个用户请求对应一个组件实例,所有实例的优先级相同;
(3)用户请求到达时间与服务时间都满足泊松分布;
(4)平台因任务调度而消耗的资源可以忽略,则V r>0,当△t足够小时,任意节点正在服务的用户数从r转移到r一1。r,r+1的概率与单队列单服务台简单服务系统(M\M\1)中的情况完全相同,如图2所示。
根据排队论的研究结果可知,当系统进入稳态时,节点i中正在接受服务的用户数期望值将是:λi/(μi一λi)。
图2 节点状态转移示意图
4 原型试验
为了实现均衡负载。参照一些云计算的关键技术与应用实例[93作者还开发了一个基于云计算技术的负载均衡系统原型。其中心服务器被分解为Collector和Negotiator两个部分,分别利用两个无状态会话EJB加以实现。
Collector的功能:主要负责收集各服务节点的心跳消息,并对服务对象/组件列表进行周期性更新。为了便于云端节点访问,把Collector发布为Web服务。
Negotiator功能:它是一个Dispatcher(分发器),因为其直接根据Collector维护的服务对象/组件列表把用户请求分发到不同节点上。
该实验开发了一个带有用户图形界面(GUI)的服务节点控制与状态信息收集器原型。该原型由一个主控台和一个后台探测器线程组成,可以半自动完成Collector的功能。服务对象/组件列表放在Negotiatot,并允许系统管理员通过主控台对上述列表进行操纵,从而实现对于各节点上的服务器,包括云端的虚拟服务器进行激活(Activate)、去活(Deactivate)等控制。
对于Negotiator,其主要构件包括一个代理工厂、一个服务对象/组件列表、以及一个负载均衡算法。当客户请求到达时,代理工厂先查询上述列表以确定各服务器状态,再根据均衡算法针对特定节点上的服务对象/组件产生一个代理实例,并返回给客户。客户利用上述代理即可从合适的节点获得服务。通过该原型进行了试验发现,获得结果是比较满意。如图3,图4所示。
图3 实验客户端
5 结论
通过实验发现,在本地负载不足时,通过启用云端的资源,使得服务满足负载波动需要,可以很好解决负载的“调蜂”问题。
图4 负载均衡系统原型试验
感谢厦门大学计算机系郑建德教授对本文的研究工作提供的无私帮助。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:以云计算为后台的负载均衡技术