1、引言
高可用性(High Availability)是大多数计算系统追求的一个特性。健壮的 HA 解决方案能最小化了停机时间,最大限度消除系统停机造成的负面影响,其作用越来越收到广大用户的重视。
专门研究关键业务软件研究的公司 Standish Group International 进行了一项研究,尝试量化数据停机(data outage)所造成的成本。他们估计,对于一个事务处理系统,与停机相关联的成本大约为每分钟 2,500 美元 ,相当于每小时 15 万美元。事实上,与营业高峰时间的停机相关联的成本估计为每分钟 7,800 美元,或者说每小时 468,000 美元。 、
工作流是一类能够完全或者部分自动执行的经营过程,其能根据一系列过程规则、文档、信息或任务,在不同的执行者之间进行传递与执行,其作用越来越受到业务系统所关注。目前绝大多数的业务系统,只要其有“流程”的存在,就会使用到工作流产品。工作流产品作为业务系统的核心部分,其承担着业务流程的管理、解析、运行的重要角色,那么其是否健壮直接影响到实际业务系统的健壮性。如何保证工作流产品的高可用性,从而保证业务系统的24X7 的正常运行,成为了各工作流厂商需要重点考虑的问难题。
西安协同时光软件公司是中国领先的中间件产品供应商,其SynchroFLOW协同工作流管理系统、SynchroESB协同企业服务总线、SynchroMQ协同消息中间件等产品享有盛誉。为开发商着想,为最终用户着想,西安协同推出的SycnhroFLOW产品,就重点考虑了HA功能,最大限度的保证的SycnhroFLOW产品的健壮性和稳定性,其在通讯、能源、税务等领域均都到了应用。
2、名词
HA Cluster:High Availability Cluster的缩写,意为高可用性集群,是针对工作流引擎的故障应急支持的要求而开发的。它采用双结点故障应急,其目标是确保关键服务和其他后端系统的可用性。
HeartBeat :心跳信号是通信信号,在集群的两个结点之间传送,以确保两个结点知道相互的状态。如果一定时间内收不到对方发送的心跳信号,则认为已经发生故障,这时需要将运行的任务迁移到健康结点上.
主节点、从节点:指组成HA群集的两台服务器,启动被监视进程的服务器称为主节点,另一台服务器就称为从节点。一旦主节点的被监视进程出现异常或主节点服务器出现异常,被监视进程会被切换到从节点,从而从节点变为主节点,原来的主节点变为从节点。
共享数据:指被监视进程(比如SynchroFlow5.0)在运行期间会发生变化的数据、配置文件等内容。
3、SynchroFLOW HA群集
HA群集包含主从两个节点机器,其中启动被监视进程 Synchroflow.bat(或Synchroflow.sh)节点机器称为主节点,另一台节点机器称为从节点。正常情况下,被监视进程只在主节点上运行,从节点处于等待状态。

3.1运行原理
HA群集的主从两个节点启动后,会通过发送相互心跳信号来传递群集的状态信息,一旦主节点宕机,由于从节点检测不到主节点的心跳信号,则群集系统会自动执行节点切换操作,从节点的被监视进程立即启动并将从节点升级为主节点。此后如果原主节点从宕机状态恢复成可用状态后,由于群集系统监听到它的心跳信号,则会把它自动添加为群集的从节点。
3.2服务器配置
SynchroFLOW HA群集的配置工作非常简单,通过以下两步的简单配置工作,一个健壮的工作流HA群集就搭建成功。
第一步:
用文本编辑器修改hacluster.bat(或hacluster.sh)批处理,其中最后一行的内容为:
java -Xms32m -Xmx256m com.synchrobit.synchroflow.hacluster.HACluster localhost clusterName flag
localhost是本机IP,不能配置成127.0.0.1。
clusterName 是群集名。主从服务器必须配置成一样的。
flag是主从标志, true代表是主服务器,false代表是从服务器。
第二步:
启动主群集的hacluster.bat(或hacluster.sh),通过群集系统提供的管理控制台,配置群集的信息。
大部分情况下只需要在管理控制台中,手工配置一下主从节点IP信息,就完成了群集的配置工作。

3.3应用系统配置
在一个优秀的高可用群集系统中,当群集节点发生切换时,群集系统对外提供的服务接口一定要保持不变,也就是说群集系统的任何内部变化,对于应用端要求是完全透明的、感知不到的。
SynchroFLOW HA群集就很好的做到了这一点。
第一步:
搭建了SynchroFLOW HA群集的应用系统,确保SynchroFLOW应用端的配置文件flowconf.xml的配置正确:

haclusterName代表是HA群集的名称,它的值要和工作流服务器上运行的群集进程hacluster.bat(或hacluster.sh)中配置的群集名保持一直。
BroadcastPort 代表应用端接收HA服务器广播消息的端口,一般情况下不需要手工修改。
第二步:
在应用系统的Web.xml中添加一个供HA群集使用的新服务:

通过以上两步简单的配置工作,一个采用了高可用、健壮的工作流群集系统的业系统就搭建好了,此后应用端可以方便的、安全的使用SynchroFLOW群集对外提供的服务,而SynchroFLOW HA系统内部如果调度、管理,这些都对业务端将完全透明。
4、结论
SynchroFLOW HA群集作为一个高可用容错的中间件产品,具有以下的特点:
统一的服务接口:无论是单SynchroFLOW模式下,还是SycnhroFLOW HA群集模式下,对外提供的服务接口保持不变。
透明性:HA群集内部的调度和管理对于应用系统完全透明,尤其是当HA群集内部节点发生了切换,对于应用端是完全感知不到的。
健壮性:HA群集采用双节点故障应急模式,确保了SynchroFLOW的24X7 的正常对外提供服务。
高效性:HA群集能快速完成内部节点切换操作。
简易性:HA群集的搭建工作非常简单,同时群集还提供了可视化的管理、配置平台。
从上面简要列举的特性,我们不难发现, 采用SynchroFLOW HA群集的应用系统,将方便、安全、高效的将其系统稳定性、健壮性、容错性提升一个台阶,这必将会给最终客户带来更大的满意度。