集群在PACS系统中的应用
2012-03-24王晨希任海萍李佳戈
王晨希,任海萍,李佳戈
中国食品药品检定研究院,北京,100050
集群在PACS系统中的应用
【作者】王晨希,任海萍,李佳戈
中国食品药品检定研究院,北京,100050
重点介绍了如何在PACS系统中使用集群技术,并提出了两种配置PACS系统的集群方案。
PACS;集群;解决方案;服务器
随着PACS系统的广泛应用,用户对PACS系统的高可用性和可伸缩性的要求越来越高,集群技术的出现则很好地解决了这一问题。集群是由一组独立的计算机组成,这些计算机一起工作来,运行一组共同的应用程序,这些相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。集群内的计算机在物理上通过电缆连接,程序上则通过集群软件连接。这些连接允许计算机使用故障恢复和负载均衡的功能,这在单机上是不可能实现的。正是由于集群技术的出现,PACS系统服务器才可能承受巨大的访问量,并提供7*24小时的可靠服务。
1 PACS系统集群的原理与设计方案
PACS系统应用网络技术、计算机技术和数字图像通信技术,依据国际标准协议DICOM3.0(Digitalimaging and Communications in Medicine),实现医学影像的获取、显示、存储、传输和管理。它采用JAVA 作为编程语言,以J2EE(Java 2 Platform,Enterprise Edition)为开发平台,以B/S方式访问。它采用三层结构,其应用服务器采用JBoss+Tomcat,后台系统为DICOM存储服务器,数据库则采用SQLServer2000,而且也可以采用Oracle数据库。
PACS在我国发展迅速,但其体系结构多为客户机/服务器(Client/Server,c/s)模式。在网络环境中,传统的C/S模式构建的系统是松散耦合结构,通过消息传递机制进行对话,客户端向服务器发出服务请求,服务器接收并进行处理客户端的请求后将结果返回客户端。在C/S模式中,客户端软件既要完成用户交互和数据表示,又要处理应用逻辑及与数据库系统的交互,从而造成系统的可伸缩性差,对数据的管理不够灵活,而且系统升级、安装维护困难,费用高。体系结构为浏览器/服务器(Browser/Server,B/S)模式的PACS,其客户端仅保留表示逻辑,而将业务逻辑和事务逻辑都放在服务器端,不仅大大提高了系统的安全性、稳定性,而且提高了系统的可维护性,还便于扩充。体系结构如图1所示。
图1 PACS的结构Fig.1 Structure of PACS
一般J2EE应用服务器报价动辄数万美元,这是普通开发者无力承受的。我们采用了开放源代码的J2EE应用服务器-JBoss,它目前还是纯Java的遵从J2ee规范的EJB容器。JBoss必须接受严格的测试,其性能和安全性不比其他商业应用服务器逊色。
Jakarta Tomcat是Apache软件基金会开发的一个开发源码的Servlet容器,同时又是Sun公司官方推荐的Servlet和JSP容器。更为可贵的是JBoss和Tomcat可以实现无缝集成,两者分别实现了J2EE的业务逻辑层和Web层组件,把两者整合配置可以得到一套完整的应用服务器,而且是完全免费的。
在硬件方面,由于服务器的性能与等级的不断提升,但硬盘的技术并未随着变化作快速调整,致使硬盘及其内含的资料屡受威胁,成为服务器系统的最大弱点。磁盘阵列柜(RAID)就硬件而言,它可以成为服务器的得力助手,因为它提供了足够的扩容空间、安全的资料保护(服务器当机或硬盘损毁,资料不流失)、降低服务器的维护率和维护作业简便等功能。
就硬件结构而言,不论是单服务器或多服务器,磁盘阵列被视为一个外设装置,并且各自对应一个或多个存储区间,因此其结构性是相当简单的。如此的设计方式能够简化服务器系统的结构,以减少对服务器的功能影响;所有复杂的存储、备份、侦错、检查等工作完全由RAID的控制器负责,不占用服务器的资源,使服务器达到最高的可利用率;完全独立的硬件结构相连接,不需要再另外加装任何驱动程序;标准接口,安装容易。磁盘阵列系统除了对硬件及内含资料的保护之外,另外一项功能是“双机容错”。它可以透过一套具有监控服务器资源管理,资源切换功能的软件“Cluster”实现双机备援的作业。
2 PACS系统集群的实现与应用
由于医院每天要产生和交换大量的医学影像,而且医学影像是具有高分辨率的大数据量文件,这些特点对网络服务器的高可用性、存储量和存储速度提出了要求,所以应用集群技术显得十分必要。我们集群的目标就是要实现应用服务器、DICOM存储服务器以及PACS数据库的集群。当主服务器出现故障时,热备份服务器接管并启动整套服务;而当主服务器故障排除以后,热备份服务器交出管理,由主服务器重新开始管理。集群服务器采用双机加磁盘阵列柜结构,其硬件连接示意图如1-2所示。
出于双机容错的需要,必需选用两台服务器能共享的公共盘,这里我们选用有容错功能的磁盘阵列。它有两个SCSI主机通道,分别连接到两台服务器的SCSI卡上。它标配为8个盘位,若做RAID5,它的有效容量为(8-1)*N,这里的N为单块硬盘容量。这样可以保证在坏一块硬盘的情况下数据不会丢失,有效地保护了数据的安全性。在两台服务器上安装双机容错软件,设置成双机热备模式,一台主工作机和一台备援机。当工作机出现异常,不能支持PACS系统运营时,备份机主动接管工作机的工作,继续支持PACS系统运营,从而保证系统能够不间断地运行。当工作机经过维修恢复正常后,它会将其先前的工作自动抓回,恢复以前正常时的工作状态。上述设计的方案,可实现数据永不丢失,系统永不停机的高可靠性。我们尝试采用以下两种软件方案来实现PACS系统的集群服务。
图 2 双机加磁盘阵列硬件连接图Fig.2 Connection of Servers and Raid
2.1 采用第三方Dataware软件的集群解决方案
DataWare是豪威公司的一组高可用性的软件系统,它可以使两台集群服务器达到很高的容错级别。集群的硬件配置有双机镜像和磁盘阵列柜互联两种。前者采用了内存镜像技术,但是其性能比单独一台服务器还要低,而且容错能力不强。而双机与磁盘阵列柜互连结构不采用内存镜像技术,因此需要有一定的切换时间(通常为60 s~180 s),但它可以有效的避免由于应用程序自身的缺陷导致的系统瘫痪。因此这种集群方案服务器的性能要比镜像服务器结构的好。
这里磁盘阵列要做成RAID5,实际可用的磁盘空间减少为总磁盘数减一,可以在一块SCSI硬盘损坏的情况下保持数据完整。每台服务器上安装两块网卡,一块用于内部网络通信和心跳侦测,另一块用于外部网络通信,且插槽的位置要一致。注意内部网络网线是采用交叉接法,与普通网线的接法不同。
软件方面,我们把数据库、PACS系统均安装在磁盘阵列上,这样即使一台服务器损坏,数据仍然不受影响,另外一台服务器可以接管应用服务。首先连接好硬件,安装DataWare;然后设置好两台机器的IP地址。这里公共网络选择的IP地址是192.168.0.5和192.168.0.6,子网掩码均为255.255.255.0;内部网络的IP地址选择10.0.0.1和10.0.0.2,子网掩码为255.0.0.0。对于内部网络协议只选用TCP/IP,其他协议均勾销掉。接下来是设置DataWare。由于我们的PACS是基于J2EE平台的应用服务,其中包含应用服务器和DICOM存储服务器,所以我们的集群要以服务(Service)的形式添加。其中我们把虚拟IP地址设置为192.168.0.11,这样我们在集群外部可以通过这个虚拟的IP来访问服务器集群,就像访问一台服务器一样。在服务器配置中,把数据库、Jboss应用服务器和DICOM存储服务器按次序添加上去,注意他们之间是存在的依存关系,后者需前者启动了才能工作。
在完成了软件和硬件的配置,接着在DataWare上启动集群服务,这个过程需要40 s左右。启动以后系统正常,这时集群是以双机热备份的方式运行,即主机机器作为主服务器,响应外部请求提供服务;备机机器通过心跳线侦测主机,一旦主机发生运行故障,则备机接管过服务。接着我们测试集群的可用性,让主机发生故障(这里我们采用关机)约60 s或更长时间后备机通过心跳线检测到主机出现了故障,自动启动了各项服务,这个过程叫做故障转移(takeover)。此后我们再开主机,在备机侦测到主机正常运行后停止服务,主机自动接管动服务,这个过程叫做故障恢复(failover)。切换过程前后,我们均可从外部网络通过192.168.0.11来访问PACS的服务。
2.2 Window 2000 Advanced Server 的集群服务解决方案
Window 2000 Advanced Server支持两个节点的集群,支持SCSI和光纤通道两种通信方式,而Window 2000 Datacenter Server支持多达4个节点的集群,但只支持光纤通道一种通信方式。这里我们采用了Window 2000 Advanced Server。
Windows的注册表机制使其对于独立软件商提供的产品缺乏足够的支持;另外,尽管J2EE号称是开放体系且与平台无关,但在实际使用时,也还是有这样那样的兼容性问题,所以基于J2EE的PACS在Windows中的配置一直较为繁琐。在Window 2000 Advanced Server中,微软引进了两种既能独立使用又能联合使用的集群技术,为用户提供了一整套能因应指定应用程序或服务需要而进行选用的集群解决方案。Windows集群技术包括群集服务(CLUSTER)和网络负载均衡(NLB),前者是针对数据库、消息系统和文件打印服务等应用程序支持和双节点故障应急支持而开发的;后者可支持多达32个节点,增强了服务器的可伸缩性,但是目前动态负载均衡还不支持数据库,所以我们还是采用群集服务。
此方案设备的IP地址的设置与前一方案相同,软件则采用Window 2000 Advanced Server。集群的软件设置步骤如下。
(1) 首先在主机上创建一个域(Domain),取名为pacs.com,然后在备机机器上加入这个域。
(2) 两台机器加入域以后,我们在“管理工具”—“活动某某服务”中添加一个专门用于集群管理的账户,名称为ClusterAdmin,并把它加入到名为域管理员(Domain Admins)的组中。
(3) 先在主机上安装集群服务组件,取名为PACSCLUSTER,使A作为其第一个节点,我们为集群设置的IP地址为192.168.0.11。这里要求共享介质的磁盘为NTFS格式,即磁盘阵列的硬盘应为NTFS格式。然后在备机上安装集群服务,加入已经存在的这个集群,使其成为第二个节点。这样,我们就可以在“控制面板-管理工具-群集管理器”中看到两个节点(Nodes)主机和备机,并对集群进行管理了。我们可以看到在Cluster资源组中有IP地址、集群名称和共享磁盘三项资源。这些资源的所有者都是主机,因为主机是主服务器,目前管理着网络,而备机是作为备用服务器的角色,等到主机出现故障,发生故障转移时候,集群管理器中将显示资源的所有者是备用机器。
(4) 安装数据库SQL Server 2000。数据库在集群中以一个虚拟服务器的形式出现,其中在选择安装位置的时候应选择“Virtual Server”,并分配给虚拟的服务器一个单独的IP地址192.168.0.12。安装完以后,可以在“集群管理器”的集群资源组中看到SQL的相关资源。
(5) 接着我们把PACS中的JBoss、DICOM两个服务(均有可执行文件,并作为命令行方式运行)作为通用应用程序添加到CLUSTER资源组中去。这样我们就可以运行JBoss和DICOM两个服务,并且是作为命令行方式运行的。
试着切换服务,我们就可以看到服务在主机和备机之间只需要几秒钟就能切换(故障转移和故障恢复)十分稳定。这样我们就在Window 2000 Advanced Server中实现了PACS的集群。
3 结论
至此,我们采用的两种方案都可以解决PACS的集群问题。比较这两种集群解决方案,第三方软件DataWare集群解决方案的安装和配置都十分简单方便,并且操作简单,便于管理,而且软件本身价格相对较低。但是切换速度慢(标识值为60 s-180 s),再加上PACS本身启动时间也较慢,总共需要(2~4) min。对于PACS这种大型系统,尽管这一段时间内数据不会丢失,但是系统却无法在这一段时间内提供服务。Window 2000 Advanced Server集群解决方案软件价格较高,配置较为繁琐,但是功能强大,可高度配置,切换速度快(数秒就可以切换过去),效率高,所以对于PACS这样的大型网络系统更加适用
[1] 郭晋蜀, 邱庆春. PACS系统性能评价实验台的开发[J]. 医疗卫生装备, 2008.29(5): 41-43.
[2] 王春燕, 郭圣文 吴效明.基于内容的医学图像检索[J]. 医疗卫生装备, 2008, 29(5): 33-35.
[3] 郭浩. PACS存储与集群系统升级[J]. 中国数字医疗, 2007, 08(8): 31-35.
[4] 刘谦, 陈加宜. 如何构建大型综合医院的医学影像信息系统[J].中国医疗设备, 2006, 19(7): 1117-1119.
[5] 麦远其. PACS系统的发展及相关技术[J]. 基层医学论坛, 2008, 12(22): 734-735.
Cluster Application in PACS System
【Writers 】Wang Chenxi, Ren Haiping, Li Jiage
National Institutes for Food and Drug Control,
PACS, cluster, solution, server
TP393
B
10.3969/j.issn.1671-7104.2012.05.021
1671-7104(2012)05-0385-03
2012-07-10
本文受中国食品药品检定研究院有源医疗器械质量评价与安全课题资助(2012BAI22B04)
王晨希,E-mail: wangchenxi@nicpbp.org.cn
【 Abstract 】How to use clustering techniques in PACS system is introuduced. Two kinds of cluster solution to configure PACS system is proposed.