国网生产管理系统(State GridProduction ManagementSystem,简称PMS)是为了满足国网公司建设“一强三优”现代公司的需要,实现安全生产精细化管理的目标,由国网公司统一组织建设,依据公司总部、网省和地市三级生产管理的业务特点,并结合当前实际业务进行设计,实现电网生产的规范化、标准化和精细化管理,提高电网生产管理水平。对于一个提供电网生产管理的系统来说,系统的稳定性和性能是不言而喻的。如果系统在大并发的访问压力情况下宕机,就直接影响到电网运行检修等管理工作,因此构建一个稳定且高效的系统是尤其重要的。如何应对大并发访问,保障系统7×24小时不间断运行是系统面临的重点难题。本文采用F5作为应用服务器前端的负载均衡以及JGroups缓存同步技术解决了上述的问题。
一、负载均衡以及JGroups技术
1.负载均衡技术
负载均衡建立在现有网络结构之上,它提供一种廉价有效透明的方法扩展网络设备和服务器的带宽,增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。负载均衡从其应用的地理结构上分为本地负载均衡和全局负载均衡(地域负载均衡)。本地负载均衡是指对本地的服务器群做负载均衡;而全局负载均衡是指对多个地理位置、多种网络结构的服务器群间做负载均衡。PMS系统作为全省大集中部署所以只研究本地负载均衡。
本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,且不需花费昂贵开销购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成系统宕机。对运行的群集进行扩容,只需增加新的服务器到群集中,而不需改变现有网络结构或停止系统。从实现方式上区分,负载均衡分为软件和硬件方式。软件方式是指在服务器上安装软件实现负载均衡,如DNS负载均衡、代理服务器、地址转换网关等。其优点是配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。
但缺点较多:需要安装额外的软件,软件会消耗系统资源,功能越强大消耗得越多,所以当请求特别大的时候,软件本身将成为系统瓶颈;软件可扩展性差,易受操作系统的限制;软件方式存在单点故障点,如一旦出现故障,整个系统将不可用。一般而言,软件方式适用于访问量小且不要求7×24小时全天候运行的系统。
硬件方式是直接在服务器与网络间安装负载均衡设备,独立于系统之外,加上多种负载均衡算法、智能化的流量管理,可使系统达到最佳性能和稳定性。硬件以F5 BIG-IP LTM(简称F5)为代表,可做4-7层负载均衡,具有负载均衡、应用和会话交换、状态监控等功能。硬件方式适用于负载量大且要求7×24小时全天候运行的系统。
F5的主要功能如下:
(1)支持最小连接数、轮询、最快响应、哈希、预测、观察、动态比例等流量分发算法,将来自客户端的流量分发到后台应用服务器上,而面对客户端,只有一个IP地址或域名。
(2)秒级监控应用程序模块的状态,一旦模块繁忙或宕机将不再向其发送新的请求到故障模块上,群集里只要有相同模块能够正常使用,客户端访问就不会受其影响。当故障模块恢复,能够自动识别并加入群集。
(3)具有动态Session(或源IP地址)的会话保持功能。
(4)由两台F5组成的主备模式的系统中,当主设备出现故障时能够将请求无缝切换至备用设备上,消除了设备的单点故障,提高了系统的高可用性。这一特性适合7×24小时全天候运行的系统。
2.JGroups缓存同步技术
JGroups是基于Java技术的组播通讯工具,其工作模式基于IP组播技术,支持在可靠性和群组成员管理上进行扩展,使用灵活的协议栈,适用于服务器集群、多服务器通讯、服务器复制、分布式缓存等。
JGroups可靠性:使用重传丢失信息技术保证群组消息发送到所有接收者;将大块消息分解成多个小块消息发送,并在接收方重新组装;确保消息发送和接受的顺序性;保证消息收发的原子性,消息被所有成员接收到或都收不到。
JGroups成员管理:获得每个分组的成员信息;当新成员加入、当前成员离开或掉线时,组内成员均获得通知。
JGroups主要功能:组的创建与删除,组成员在LAN或WAN环境内互相发送消息;检测并通知成员加入、离开、掉线并移除已掉线的成员;消息的组播和消息的点对点发送;支持UDP、TCP、JMS等传输协议;免费开源代码。
二、PMS的负载均衡实现
1.系统架构
PMS采用省公司集中部署,省、地市、工区三级应用,采用JAVA技术开发。为了提高系统的性能和高可用性,采用两台HPRX8640小型机作为数据库服务器,数据库软件采用Oracle10GRAC,采用多台HP3850 PC服务器作为应用服务器,其操作系统采用 RedHat Linux 5.3,WEB服务器中间件采用Weblogic9i进行单节点部署,并使用2台F5以主备模式旁路接入网络构建负载模式,保证系统的高可用性。系统采用多层企业级架构,按照四层方式部署,即网站系统和应用服务部署在不同的物理层次,从而提供更高的安全性。其硬件架构如图1所示。
使用F5,将客户端请求有效分发到多台应用服务器上,将日常业务应用、任务调度模块和对外接口模块分拆成三个不同群集,有效避免了任务调度和对外接口影响日常业务的正常进行,也提高了对外接口的效率及任务调度的稳定运行,提高了系统整体的稳定性和性能。而对于三个不同群集里的应用服务器,任何几台应用服务器出现宕机时,只要有一台服务器正常就不会影响系统应用的正常访问。两台数据库采用Oracle RAC,只要其任一节点正常,数据都能增删改查,当任一节点数据库出现异常时也不会影响系统的运行。利用两台互备的F5可以保证其中一台F5出现异常可秒级切换,真正做到高可用性,保证系统在7×24小时不间断运行。
2.系统群集缓存同步
为了提升系统的性能,减少应用服务对数据库的访问,PMS系统采用了数据缓冲机制,实现了业务模型从数据库获取的数据存放在应用服务器端内存的机制。但在群集环境下,会导致用户在多台应用服务器上读取同组数据而结果不一致。
为了保证数据的一致性,采用JGroups缓冲同步技术对业务模型进行局部缓冲刷新。在群集一个节点中的缓冲更改后,能够及时通知其他节点。为了提高同步效率,采用增量刷新的优化策略。通过在集群的多个服务节点之间分发负载和多级缓冲,减少对数据库服务的访问,避免复杂业务规则的重复计算过程,提升系统整体运行效率。
为了避免三个群集的缓冲同步数据互相干扰,在三个不同的群集中采用不同的组播地址和端口。对于JGroups而言只能在同一组群集之间进行缓冲同步。并且组中的成员是动态的,应用服务器可以随时加入或者离开群集。这样既保证了数据的一致性又提高系统整体的性能。
3.系统群集监控
为了让F5能够高效分发,将请求分发到有效的应用服务器上,必须配置健康检查。否则请求会发送到假死的应用服务器上,造成系统访问异常。
F5的健康检查有最低限度的IP地址检查(采用Ping命令检查服务器是否存活)、应用端口检查(检查相应的TCP/UDP端口是否激活来确定服务的状态),以及高级的HTTP应用检查(通过应用的健康检查页面返回值与初设参数是否一致)。本系统采用高级的HTTP应用检查,每5秒向服务器发送/MWWebSite/CheckState.jsp 和/MWWebSite/CheckState.jsp检查请求,若在2秒内不能正常得到“CheckOk”返回值即表示该模块失效。F5会将请求转发其他服务器上,实现请求的正常转发,提高了系统的稳定性。设置参数如表1所示。
三、结束语
对于国网的生产管理系统而言,由于省公司集中部署,且密切关系到电网的日常生产管理工作,其重要性是不言而喻的。若没有良好的硬件架构和可靠的软件系统,对7×24小时不间断运行的要求是无法满足的。通过采用F5负载均衡设备和缓存同步JGroups技术提高了用户性能和可用性。在迎峰度夏期间能够满足高并发的业务模块安全稳定运行,得到国网公司领导及基层用户的认可,对促进国网公司生产管理规范化和标准化、提高国网公司生产管理水平和执行力意义深远。
参考文献:
[1] 安凝 .F5为网上应用加速 [J]. 计算机安全 ,2006,(1).
[2] 李建 , 郑伟才,等. 利用F5_BIG_IP 设备实现浙江天气网负载均衡 [J]. 计算机与网络 ,2012,(8).
[3]JGroups 掀起 Java 群组通讯风潮 [EB/OL].http://tech.ccidnet.com/art/3565/20040606/480363_1.html.2012.