技術交流

以服務為出發點,建構高可用性的應用系統

更新於

一般企業或政府機關內部的應用系統,通常很容易預估未來使用的人數與使用的時間,在資源有限的情形下,常以資料的重要性為優先考量,因此在規劃時,通常是在一套主機上建構一個應用系統或一套大型主機上包含多個應用系統,再配合完善的資料庫備份,就足以滿足系統需求。即使發生無法預期的系統意外,利用備份資料重建系統,在成本考量下通常是可以容忍的。

對於一個企業或政府機構,對外服務的系統,其服務推廣與使用人數,是逐步成長的,因此並不適合一開始就購置過於龐大的設備資源,且需考慮使用者隨時隨地都有可能上線,因此在架構設計上需考量系統的可用性及擴充性。

例如資通電腦配合行政院研究發展考核委員會所維運的e管家、政府e公務、人事行政局的人事服務網, 其服務的可能對象為全體民眾或全部的公務員,但其使用的對象是逐步增加, 如果一開始就購置太多的主機,可能是一種浪費,因此在建構時需考慮未來擴充的彈性。

系統設計考量

三層式架構

在建構一個服務型的應用系統時主要的考量,可分為幾個面向:

使用者端

隨著使用者平台的增加與自由軟體的盛行,使用者端的瀏覽器,除了 IE 外,Chrome、FireFox、Safari 的相容性亦需列入考量,無線網路的普及,使用手機平台的人口也越來越多,是否要為 iPhone、Android、Symbian 等平台開發專用的版本或開發一個適用於無線網路的 WAP(Wireless Application Protocol)版,亦是一個值得思考的問題。

應用系統伺服器

為了維持系統的高可用性及未來擴展能力,應用系統伺服器應該要由多台功能相同的主機組成一套叢集主機(Cluster),並將連線狀態儲存於獨立狀態伺服器(State Server),以配合原來連線的伺服器當機時,連線會自動移轉至另一台伺服器,該伺服器可由狀態伺服器(State Server)取得原來的連線狀態,接續後續的工作,讓服務不中斷。

考量網路流量的分散與系統維護或故障時的管理, 前端可以配合具有負載平衡功能的 L4 Switch,一方面負責將流量分散至不同的伺服器,另一方面單一主機無回應時,可自動將其由叢集中移除,如果主機要升級,亦可將其由叢集中移除,待升級後再將其加入叢集中,因此可以主機維護可逐台進行,又不會影響使用者的操作。

資料庫伺服器

系統運作上除了考量對外服務的設備外,亦要考慮資料庫主機的備援,一般的備援方式除了採用即時的資料庫備援外,也要考慮當主機故障或維護時系統的可用性,因此資料庫的伺服器需考慮兩個層面,包括資料檔與資料庫伺服器的備援機置。

  • 資料庫伺服器備援機制

    一台啟用一台備用:可設置兩套資料主機,採用共用磁碟陣列(存放資料檔)的方式進行,一台為 active,另一台為 Standby,如 SQL Server 的叢集架構或 Oracle 的 Fail Safe 架構。兩台主機皆為可用狀態:若有需要更高的可用性與可靠性亦可建立成兩套主機皆為 active 的狀態,如 SQL Server 的資料庫鏡像(Database Mirroring)」或 Oracle Real Application Clusters(RAC)。
  • 資料庫的備援,除了備份完整的資料庫外亦應即時備份交易記錄,並可將備份資料傳送至另一儲存地點作異地備援。

安全性考量

若網站是對外提供服務,各層之間應該要以防火牆 ( Firewall ) 區隔,只允需特定的通訊協定可以穿透,應用系統伺服器與資料庫伺服器應該建立在不同的網段上,以提高系統的安全性。

建立高可用性的架構

在一個服務性的系統規劃上除了前端可採用多種平台外, 後台的應用系統伺服器與資料庫亦要考量其備援的機置,才能建立一個全方位的服務系統。

閱讀更多