計算機系統的可靠性用平均無故障時間(MTTF)來度量,即計算機系統平均能夠正常運行多長時間,才發生一次故障。系統的可靠性越高,平均無故障時間越長。可維護性用平均維修時間(MTTR)來度量,即系統發生故障後維修和重新恢復正常運行平均花費的時間。系統的可維護性越好,平均維修時間越短。計算機系統的可用性定義為:MTTF/(MTTF+MTTR) * 100%。由此可見,計算機系統的可用性定義為系統保持正常運行時間的百分比。
計算機產業界通常用如下表所示的"9"的個數來劃分計算機系統可用性的類型。
可用性分類 可用水平 每年停機時間 容錯可用性 99.9999 < 1 min 極高可用性 99.999 5 min 具有故障自動恢復能力的可用性 99.99 53 min 高可用性 99.9 8.8 h 商品可用性 99 43.8h通過硬件冗余或軟件的方法都可以從很大程度上提高系統的可用性。硬件冗余主要是通過在系統中維護多個冗余部件如硬盤、網線等來保證工作部件失效時可以繼續使用冗余部件來提供服務;而軟件的方法是通過軟件對集群中的多台機器的運行狀態進行監測,在某台機器失效時啟動備用機器接管失效機器的工作來繼續提供服務。
一般來說,需要保證集群管理器的高可用性和節點的高可用性。Eddie、Linux Virtual Server、Turbolinux、Piranha和Ultramonkey 都采用了類似於圖1的高可用性解決方案。
集群管理器的高可用性為了屏蔽集群管理器的失效,需要為它建立一個備份機。主管理器和備份管理器上都運行著heartbeat程序,通過傳送諸如"我活著"這樣的信息來監測對方的運行狀況。當備份機不能在一定的時間內收到這樣的信息時,它就激活fake程序,讓備份管理器接管主管理器繼續提供服務;當備份管理器又從主管理器收到"我活著"這樣的信息時,它就使fake程序無效,從而釋放IP地址,這樣主管理器就開始再次進行集群管理的工作了。
節點的高可用性節點的高可用性可以通過不斷監視節點的狀態以及節點上的應用程序的運行狀態來實現,當發現節點已經失效時,可以重新配置系統並且將工作負載交給那些運行正常的節點來完成。如圖1所示,系統通過在集群管理器上運行mon精靈程序來監視集群中的實際服務器上的服務程序的運行狀況。例如使用 fping.monitor 以一定的時間間隔來監視實際服務器是否還在正常運轉;使用http.monitor 來監測http服務,使用FTP.monitor來監測ftp服務等等。如果發現某個實際服務器出了故障,或者是其上的服務已失敗,則在集群管理器中刪除有關這個實際服務器的所有規則。反之,如果不久以後發現系統已經重新能夠提供服務,則增加相應的所有規則。通過這種方法,集群管理器可以自動屏蔽服務器和其上運行的服務程序的失效,並且當實際服務器正常運轉時能將它們重新加入到集群系統中。