王晨希,任海萍,李佳戈
中國(guó)食品藥品檢定研究院,北京,100050
集群在PACS系統(tǒng)中的應(yīng)用
【作者】王晨希,任海萍,李佳戈
中國(guó)食品藥品檢定研究院,北京,100050
重點(diǎn)介紹了如何在PACS系統(tǒng)中使用集群技術(shù),并提出了兩種配置PACS系統(tǒng)的集群方案。
PACS;集群;解決方案;服務(wù)器
隨著PACS系統(tǒng)的廣泛應(yīng)用,用戶對(duì)PACS系統(tǒng)的高可用性和可伸縮性的要求越來(lái)越高,集群技術(shù)的出現(xiàn)則很好地解決了這一問(wèn)題。集群是由一組獨(dú)立的計(jì)算機(jī)組成,這些計(jì)算機(jī)一起工作來(lái),運(yùn)行一組共同的應(yīng)用程序,這些相互獨(dú)立的服務(wù)器在網(wǎng)絡(luò)中表現(xiàn)為單一的系統(tǒng),并以單一系統(tǒng)的模式加以管理。此單一系統(tǒng)為客戶工作站提供高可靠性的服務(wù)。集群內(nèi)的計(jì)算機(jī)在物理上通過(guò)電纜連接,程序上則通過(guò)集群軟件連接。這些連接允許計(jì)算機(jī)使用故障恢復(fù)和負(fù)載均衡的功能,這在單機(jī)上是不可能實(shí)現(xiàn)的。正是由于集群技術(shù)的出現(xiàn),PACS系統(tǒng)服務(wù)器才可能承受巨大的訪問(wèn)量,并提供7*24小時(shí)的可靠服務(wù)。
PACS系統(tǒng)應(yīng)用網(wǎng)絡(luò)技術(shù)、計(jì)算機(jī)技術(shù)和數(shù)字圖像通信技術(shù),依據(jù)國(guó)際標(biāo)準(zhǔn)協(xié)議DICOM3.0(Digitalimaging and Communications in Medicine),實(shí)現(xiàn)醫(yī)學(xué)影像的獲取、顯示、存儲(chǔ)、傳輸和管理。它采用JAVA 作為編程語(yǔ)言,以J2EE(Java 2 Platform,Enterprise Edition)為開(kāi)發(fā)平臺(tái),以B/S方式訪問(wèn)。它采用三層結(jié)構(gòu),其應(yīng)用服務(wù)器采用JBoss+Tomcat,后臺(tái)系統(tǒng)為DICOM存儲(chǔ)服務(wù)器,數(shù)據(jù)庫(kù)則采用SQLServer2000,而且也可以采用Oracle數(shù)據(jù)庫(kù)。
PACS在我國(guó)發(fā)展迅速,但其體系結(jié)構(gòu)多為客戶機(jī)/服務(wù)器(Client/Server,c/s)模式。在網(wǎng)絡(luò)環(huán)境中,傳統(tǒng)的C/S模式構(gòu)建的系統(tǒng)是松散耦合結(jié)構(gòu),通過(guò)消息傳遞機(jī)制進(jìn)行對(duì)話,客戶端向服務(wù)器發(fā)出服務(wù)請(qǐng)求,服務(wù)器接收并進(jìn)行處理客戶端的請(qǐng)求后將結(jié)果返回客戶端。在C/S模式中,客戶端軟件既要完成用戶交互和數(shù)據(jù)表示,又要處理應(yīng)用邏輯及與數(shù)據(jù)庫(kù)系統(tǒng)的交互,從而造成系統(tǒng)的可伸縮性差,對(duì)數(shù)據(jù)的管理不夠靈活,而且系統(tǒng)升級(jí)、安裝維護(hù)困難,費(fèi)用高。體系結(jié)構(gòu)為瀏覽器/服務(wù)器(Browser/Server,B/S)模式的PACS,其客戶端僅保留表示邏輯,而將業(yè)務(wù)邏輯和事務(wù)邏輯都放在服務(wù)器端,不僅大大提高了系統(tǒng)的安全性、穩(wěn)定性,而且提高了系統(tǒng)的可維護(hù)性,還便于擴(kuò)充。體系結(jié)構(gòu)如圖1所示。
圖1 PACS的結(jié)構(gòu)Fig.1 Structure of PACS
一般J2EE應(yīng)用服務(wù)器報(bào)價(jià)動(dòng)輒數(shù)萬(wàn)美元,這是普通開(kāi)發(fā)者無(wú)力承受的。我們采用了開(kāi)放源代碼的J2EE應(yīng)用服務(wù)器-JBoss,它目前還是純Java的遵從J2ee規(guī)范的EJB容器。JBoss必須接受嚴(yán)格的測(cè)試,其性能和安全性不比其他商業(yè)應(yīng)用服務(wù)器遜色。
Jakarta Tomcat是Apache軟件基金會(huì)開(kāi)發(fā)的一個(gè)開(kāi)發(fā)源碼的Servlet容器,同時(shí)又是Sun公司官方推薦的Servlet和JSP容器。更為可貴的是JBoss和Tomcat可以實(shí)現(xiàn)無(wú)縫集成,兩者分別實(shí)現(xiàn)了J2EE的業(yè)務(wù)邏輯層和Web層組件,把兩者整合配置可以得到一套完整的應(yīng)用服務(wù)器,而且是完全免費(fèi)的。
在硬件方面,由于服務(wù)器的性能與等級(jí)的不斷提升,但硬盤的技術(shù)并未隨著變化作快速調(diào)整,致使硬盤及其內(nèi)含的資料屢受威脅,成為服務(wù)器系統(tǒng)的最大弱點(diǎn)。磁盤陣列柜(RAID)就硬件而言,它可以成為服務(wù)器的得力助手,因?yàn)樗峁┝俗銐虻臄U(kuò)容空間、安全的資料保護(hù)(服務(wù)器當(dāng)機(jī)或硬盤損毀,資料不流失)、降低服務(wù)器的維護(hù)率和維護(hù)作業(yè)簡(jiǎn)便等功能。
就硬件結(jié)構(gòu)而言,不論是單服務(wù)器或多服務(wù)器,磁盤陣列被視為一個(gè)外設(shè)裝置,并且各自對(duì)應(yīng)一個(gè)或多個(gè)存儲(chǔ)區(qū)間,因此其結(jié)構(gòu)性是相當(dāng)簡(jiǎn)單的。如此的設(shè)計(jì)方式能夠簡(jiǎn)化服務(wù)器系統(tǒng)的結(jié)構(gòu),以減少對(duì)服務(wù)器的功能影響;所有復(fù)雜的存儲(chǔ)、備份、偵錯(cuò)、檢查等工作完全由RAID的控制器負(fù)責(zé),不占用服務(wù)器的資源,使服務(wù)器達(dá)到最高的可利用率;完全獨(dú)立的硬件結(jié)構(gòu)相連接,不需要再另外加裝任何驅(qū)動(dòng)程序;標(biāo)準(zhǔn)接口,安裝容易。磁盤陣列系統(tǒng)除了對(duì)硬件及內(nèi)含資料的保護(hù)之外,另外一項(xiàng)功能是“雙機(jī)容錯(cuò)”。它可以透過(guò)一套具有監(jiān)控服務(wù)器資源管理,資源切換功能的軟件“Cluster”實(shí)現(xiàn)雙機(jī)備援的作業(yè)。
由于醫(yī)院每天要產(chǎn)生和交換大量的醫(yī)學(xué)影像,而且醫(yī)學(xué)影像是具有高分辨率的大數(shù)據(jù)量文件,這些特點(diǎn)對(duì)網(wǎng)絡(luò)服務(wù)器的高可用性、存儲(chǔ)量和存儲(chǔ)速度提出了要求,所以應(yīng)用集群技術(shù)顯得十分必要。我們集群的目標(biāo)就是要實(shí)現(xiàn)應(yīng)用服務(wù)器、DICOM存儲(chǔ)服務(wù)器以及PACS數(shù)據(jù)庫(kù)的集群。當(dāng)主服務(wù)器出現(xiàn)故障時(shí),熱備份服務(wù)器接管并啟動(dòng)整套服務(wù);而當(dāng)主服務(wù)器故障排除以后,熱備份服務(wù)器交出管理,由主服務(wù)器重新開(kāi)始管理。集群服務(wù)器采用雙機(jī)加磁盤陣列柜結(jié)構(gòu),其硬件連接示意圖如1-2所示。
出于雙機(jī)容錯(cuò)的需要,必需選用兩臺(tái)服務(wù)器能共享的公共盤,這里我們選用有容錯(cuò)功能的磁盤陣列。它有兩個(gè)SCSI主機(jī)通道,分別連接到兩臺(tái)服務(wù)器的SCSI卡上。它標(biāo)配為8個(gè)盤位,若做RAID5,它的有效容量為(8-1)*N,這里的N為單塊硬盤容量。這樣可以保證在壞一塊硬盤的情況下數(shù)據(jù)不會(huì)丟失,有效地保護(hù)了數(shù)據(jù)的安全性。在兩臺(tái)服務(wù)器上安裝雙機(jī)容錯(cuò)軟件,設(shè)置成雙機(jī)熱備模式,一臺(tái)主工作機(jī)和一臺(tái)備援機(jī)。當(dāng)工作機(jī)出現(xiàn)異常,不能支持PACS系統(tǒng)運(yùn)營(yíng)時(shí),備份機(jī)主動(dòng)接管工作機(jī)的工作,繼續(xù)支持PACS系統(tǒng)運(yùn)營(yíng),從而保證系統(tǒng)能夠不間斷地運(yùn)行。當(dāng)工作機(jī)經(jīng)過(guò)維修恢復(fù)正常后,它會(huì)將其先前的工作自動(dòng)抓回,恢復(fù)以前正常時(shí)的工作狀態(tài)。上述設(shè)計(jì)的方案,可實(shí)現(xiàn)數(shù)據(jù)永不丟失,系統(tǒng)永不停機(jī)的高可靠性。我們嘗試采用以下兩種軟件方案來(lái)實(shí)現(xiàn)PACS系統(tǒng)的集群服務(wù)。
圖 2 雙機(jī)加磁盤陣列硬件連接圖Fig.2 Connection of Servers and Raid
2.1 采用第三方Dataware軟件的集群解決方案
DataWare是豪威公司的一組高可用性的軟件系統(tǒng),它可以使兩臺(tái)集群服務(wù)器達(dá)到很高的容錯(cuò)級(jí)別。集群的硬件配置有雙機(jī)鏡像和磁盤陣列柜互聯(lián)兩種。前者采用了內(nèi)存鏡像技術(shù),但是其性能比單獨(dú)一臺(tái)服務(wù)器還要低,而且容錯(cuò)能力不強(qiáng)。而雙機(jī)與磁盤陣列柜互連結(jié)構(gòu)不采用內(nèi)存鏡像技術(shù),因此需要有一定的切換時(shí)間(通常為60 s~180 s),但它可以有效的避免由于應(yīng)用程序自身的缺陷導(dǎo)致的系統(tǒng)癱瘓。因此這種集群方案服務(wù)器的性能要比鏡像服務(wù)器結(jié)構(gòu)的好。
這里磁盤陣列要做成RAID5,實(shí)際可用的磁盤空間減少為總磁盤數(shù)減一,可以在一塊SCSI硬盤損壞的情況下保持?jǐn)?shù)據(jù)完整。每臺(tái)服務(wù)器上安裝兩塊網(wǎng)卡,一塊用于內(nèi)部網(wǎng)絡(luò)通信和心跳偵測(cè),另一塊用于外部網(wǎng)絡(luò)通信,且插槽的位置要一致。注意內(nèi)部網(wǎng)絡(luò)網(wǎng)線是采用交叉接法,與普通網(wǎng)線的接法不同。
軟件方面,我們把數(shù)據(jù)庫(kù)、PACS系統(tǒng)均安裝在磁盤陣列上,這樣即使一臺(tái)服務(wù)器損壞,數(shù)據(jù)仍然不受影響,另外一臺(tái)服務(wù)器可以接管應(yīng)用服務(wù)。首先連接好硬件,安裝DataWare;然后設(shè)置好兩臺(tái)機(jī)器的IP地址。這里公共網(wǎng)絡(luò)選擇的IP地址是192.168.0.5和192.168.0.6,子網(wǎng)掩碼均為255.255.255.0;內(nèi)部網(wǎng)絡(luò)的IP地址選擇10.0.0.1和10.0.0.2,子網(wǎng)掩碼為255.0.0.0。對(duì)于內(nèi)部網(wǎng)絡(luò)協(xié)議只選用TCP/IP,其他協(xié)議均勾銷掉。接下來(lái)是設(shè)置DataWare。由于我們的PACS是基于J2EE平臺(tái)的應(yīng)用服務(wù),其中包含應(yīng)用服務(wù)器和DICOM存儲(chǔ)服務(wù)器,所以我們的集群要以服務(wù)(Service)的形式添加。其中我們把虛擬IP地址設(shè)置為192.168.0.11,這樣我們?cè)诩和獠靠梢酝ㄟ^(guò)這個(gè)虛擬的IP來(lái)訪問(wèn)服務(wù)器集群,就像訪問(wèn)一臺(tái)服務(wù)器一樣。在服務(wù)器配置中,把數(shù)據(jù)庫(kù)、Jboss應(yīng)用服務(wù)器和DICOM存儲(chǔ)服務(wù)器按次序添加上去,注意他們之間是存在的依存關(guān)系,后者需前者啟動(dòng)了才能工作。
在完成了軟件和硬件的配置,接著在DataWare上啟動(dòng)集群服務(wù),這個(gè)過(guò)程需要40 s左右。啟動(dòng)以后系統(tǒng)正常,這時(shí)集群是以雙機(jī)熱備份的方式運(yùn)行,即主機(jī)機(jī)器作為主服務(wù)器,響應(yīng)外部請(qǐng)求提供服務(wù);備機(jī)機(jī)器通過(guò)心跳線偵測(cè)主機(jī),一旦主機(jī)發(fā)生運(yùn)行故障,則備機(jī)接管過(guò)服務(wù)。接著我們測(cè)試集群的可用性,讓主機(jī)發(fā)生故障(這里我們采用關(guān)機(jī))約60 s或更長(zhǎng)時(shí)間后備機(jī)通過(guò)心跳線檢測(cè)到主機(jī)出現(xiàn)了故障,自動(dòng)啟動(dòng)了各項(xiàng)服務(wù),這個(gè)過(guò)程叫做故障轉(zhuǎn)移(takeover)。此后我們?cè)匍_(kāi)主機(jī),在備機(jī)偵測(cè)到主機(jī)正常運(yùn)行后停止服務(wù),主機(jī)自動(dòng)接管動(dòng)服務(wù),這個(gè)過(guò)程叫做故障恢復(fù)(failover)。切換過(guò)程前后,我們均可從外部網(wǎng)絡(luò)通過(guò)192.168.0.11來(lái)訪問(wèn)PACS的服務(wù)。
2.2 Window 2000 Advanced Server 的集群服務(wù)解決方案
Window 2000 Advanced Server支持兩個(gè)節(jié)點(diǎn)的集群,支持SCSI和光纖通道兩種通信方式,而Window 2000 Datacenter Server支持多達(dá)4個(gè)節(jié)點(diǎn)的集群,但只支持光纖通道一種通信方式。這里我們采用了Window 2000 Advanced Server。
Windows的注冊(cè)表機(jī)制使其對(duì)于獨(dú)立軟件商提供的產(chǎn)品缺乏足夠的支持;另外,盡管J2EE號(hào)稱是開(kāi)放體系且與平臺(tái)無(wú)關(guān),但在實(shí)際使用時(shí),也還是有這樣那樣的兼容性問(wèn)題,所以基于J2EE的PACS在Windows中的配置一直較為繁瑣。在Window 2000 Advanced Server中,微軟引進(jìn)了兩種既能獨(dú)立使用又能聯(lián)合使用的集群技術(shù),為用戶提供了一整套能因應(yīng)指定應(yīng)用程序或服務(wù)需要而進(jìn)行選用的集群解決方案。Windows集群技術(shù)包括群集服務(wù)(CLUSTER)和網(wǎng)絡(luò)負(fù)載均衡(NLB),前者是針對(duì)數(shù)據(jù)庫(kù)、消息系統(tǒng)和文件打印服務(wù)等應(yīng)用程序支持和雙節(jié)點(diǎn)故障應(yīng)急支持而開(kāi)發(fā)的;后者可支持多達(dá)32個(gè)節(jié)點(diǎn),增強(qiáng)了服務(wù)器的可伸縮性,但是目前動(dòng)態(tài)負(fù)載均衡還不支持?jǐn)?shù)據(jù)庫(kù),所以我們還是采用群集服務(wù)。
此方案設(shè)備的IP地址的設(shè)置與前一方案相同,軟件則采用Window 2000 Advanced Server。集群的軟件設(shè)置步驟如下。
(1) 首先在主機(jī)上創(chuàng)建一個(gè)域(Domain),取名為pacs.com,然后在備機(jī)機(jī)器上加入這個(gè)域。
(2) 兩臺(tái)機(jī)器加入域以后,我們?cè)凇肮芾砉ぞ摺薄盎顒?dòng)某某服務(wù)”中添加一個(gè)專門用于集群管理的賬戶,名稱為ClusterAdmin,并把它加入到名為域管理員(Domain Admins)的組中。
(3) 先在主機(jī)上安裝集群服務(wù)組件,取名為PACSCLUSTER,使A作為其第一個(gè)節(jié)點(diǎn),我們?yōu)榧涸O(shè)置的IP地址為192.168.0.11。這里要求共享介質(zhì)的磁盤為NTFS格式,即磁盤陣列的硬盤應(yīng)為NTFS格式。然后在備機(jī)上安裝集群服務(wù),加入已經(jīng)存在的這個(gè)集群,使其成為第二個(gè)節(jié)點(diǎn)。這樣,我們就可以在“控制面板-管理工具-群集管理器”中看到兩個(gè)節(jié)點(diǎn)(Nodes)主機(jī)和備機(jī),并對(duì)集群進(jìn)行管理了。我們可以看到在Cluster資源組中有IP地址、集群名稱和共享磁盤三項(xiàng)資源。這些資源的所有者都是主機(jī),因?yàn)橹鳈C(jī)是主服務(wù)器,目前管理著網(wǎng)絡(luò),而備機(jī)是作為備用服務(wù)器的角色,等到主機(jī)出現(xiàn)故障,發(fā)生故障轉(zhuǎn)移時(shí)候,集群管理器中將顯示資源的所有者是備用機(jī)器。
(4) 安裝數(shù)據(jù)庫(kù)SQL Server 2000。數(shù)據(jù)庫(kù)在集群中以一個(gè)虛擬服務(wù)器的形式出現(xiàn),其中在選擇安裝位置的時(shí)候應(yīng)選擇“Virtual Server”,并分配給虛擬的服務(wù)器一個(gè)單獨(dú)的IP地址192.168.0.12。安裝完以后,可以在“集群管理器”的集群資源組中看到SQL的相關(guān)資源。
(5) 接著我們把PACS中的JBoss、DICOM兩個(gè)服務(wù)(均有可執(zhí)行文件,并作為命令行方式運(yùn)行)作為通用應(yīng)用程序添加到CLUSTER資源組中去。這樣我們就可以運(yùn)行JBoss和DICOM兩個(gè)服務(wù),并且是作為命令行方式運(yùn)行的。
試著切換服務(wù),我們就可以看到服務(wù)在主機(jī)和備機(jī)之間只需要幾秒鐘就能切換(故障轉(zhuǎn)移和故障恢復(fù))十分穩(wěn)定。這樣我們就在Window 2000 Advanced Server中實(shí)現(xiàn)了PACS的集群。
至此,我們采用的兩種方案都可以解決PACS的集群?jiǎn)栴}。比較這兩種集群解決方案,第三方軟件DataWare集群解決方案的安裝和配置都十分簡(jiǎn)單方便,并且操作簡(jiǎn)單,便于管理,而且軟件本身價(jià)格相對(duì)較低。但是切換速度慢(標(biāo)識(shí)值為60 s-180 s),再加上PACS本身啟動(dòng)時(shí)間也較慢,總共需要(2~4) min。對(duì)于PACS這種大型系統(tǒng),盡管這一段時(shí)間內(nèi)數(shù)據(jù)不會(huì)丟失,但是系統(tǒng)卻無(wú)法在這一段時(shí)間內(nèi)提供服務(wù)。Window 2000 Advanced Server集群解決方案軟件價(jià)格較高,配置較為繁瑣,但是功能強(qiáng)大,可高度配置,切換速度快(數(shù)秒就可以切換過(guò)去),效率高,所以對(duì)于PACS這樣的大型網(wǎng)絡(luò)系統(tǒng)更加適用
[1] 郭晉蜀, 邱慶春. PACS系統(tǒng)性能評(píng)價(jià)實(shí)驗(yàn)臺(tái)的開(kāi)發(fā)[J]. 醫(yī)療衛(wèi)生裝備, 2008.29(5): 41-43.
[2] 王春燕, 郭圣文 吳效明.基于內(nèi)容的醫(yī)學(xué)圖像檢索[J]. 醫(yī)療衛(wèi)生裝備, 2008, 29(5): 33-35.
[3] 郭浩. PACS存儲(chǔ)與集群系統(tǒng)升級(jí)[J]. 中國(guó)數(shù)字醫(yī)療, 2007, 08(8): 31-35.
[4] 劉謙, 陳加宜. 如何構(gòu)建大型綜合醫(yī)院的醫(yī)學(xué)影像信息系統(tǒng)[J].中國(guó)醫(yī)療設(shè)備, 2006, 19(7): 1117-1119.
[5] 麥遠(yuǎn)其. PACS系統(tǒng)的發(fā)展及相關(guān)技術(shù)[J]. 基層醫(yī)學(xué)論壇, 2008, 12(22): 734-735.
Cluster Application in PACS System
【W(wǎng)riters 】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
本文受中國(guó)食品藥品檢定研究院有源醫(yī)療器械質(zhì)量評(píng)價(jià)與安全課題資助(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.