SAS 資訊安全 (4)

教學目標

初步了解 SAS 中要如何設定高可用性,以利滿足業務持續營運計劃和災害復原計劃的需求。

重點概念

最近一個半月的時間皆和資深技術前輩請教和學習高可用性的概念,如何進行設定,以及後續要注意的問題,非常感謝,學習和收獲也非常的多,持續學習未知領域的經驗,期望能夠運用所學真正為企業解決問題。目前若要導入解決方案至企業中,有關 SAS 解決方案中高可用性一直是最被關注的資訊安全議題,在資訊安全事故回應和復原領域中支援業務持續營運計劃 (Business Continuity Planning,BCP) 和災害復原計劃 (Disaster Recovery Plan,DRP),BCP 和 DRP 皆是企業評估解決方案必須考量的項目之一,因此在 SAS 解決方案中要如何設定高可用性 (High Availability,HA) 呢?

專有名稱

首先我們必須先了解有關高可用性的專有名詞,分別為:

主要節點 (Primary Node)

主要節點主要執行在運作中或主要的服務實體。

冷備份節點 (Cold Standby Node)

此節點除了之前運作的服務實體節點之外的節點。

熱備份節點 (Warm Standby Node)

此節點會預先啟動服務,以利根據需求接管節點。

重新啟動 (Restart)

在之前運作相同的節點上啟動失效服務的行為。

故障移轉 (Failover)

將冷備份節點移至熱備份節點,以利在節點中啟動服務實體。

叢集 (Cluster)

兩個或多個運作的服務實體確保若單一實體失效時,或有一個或多個運作的可用實體持續維運。一個叢集可能會提供相同等級的負載平衡或建立容錯移轉,此外在叢集中的服務可以在相同的實體節點中,稱為重直叢集,或在節點的服務群組中,稱為水平叢集,一般來說,水平叢集應該被使用於達到高可用性,因為其會需要兩個或多個節點和從硬體的角度排除單點故障。

主動/被動模式 (Active-Passive Mode)

不論任何時間服務將只會執行在一個節點上,又稱 Active-Standby Mode,其中冷備份節點可用於發生故障時執行服務,雖然有多個節點能夠執行服務,但是任一時間僅能有一個服務執行,所以若冷備份節點上的服務執行時,則原先的服務將會不可用。

主動/主動模式 (Active-Active Mode)

不論任何時間服務將會同時執行在多個節點上,其中每個服務實體將提供完整的功能給使用者,通常會確保最小數量的服務實體持續運作。

主要/次要模式 (Master-Slave Mode)

不論任何時間服務將會同時執行在多個節點上,但是只會有一個服務實體的節點為主要節點,將會提供完整的功能,而其它服務實體的節點則為次要節點,僅提供部份的功能,只有當主要節點失效時才會有機會接管成為主要節點提供完整的功能。

高可用性設定策略

接著企業會認為網頁應用程式伺服器必須要做高可用性設定,也就是 SAS Middle Tier,然而在 SAS Middle Tier 中預設會有網頁伺服器或網頁應用程式伺服器,其中網頁伺服器是基於 Pivotal Web Server 開發,也就是 vFabric,網頁應用程式伺服器則是基於 Pivotal tc Server 開發,也就是 Tomcat。針對 SAS 網頁伺服器主要被使用當成對於 SAS 網頁應用程式分散式 HTTP 請求的負載平衡器,因為 SAS 網頁伺服器是使用者唯一存取所有 SAS 網頁應用程式的存取點,同時 SAS 網頁伺服器會偵測個別 SAS 網頁應用程式叢集中節點是否失效,若是則會調整路由請求至其它節點,但是卻沒有功能監控個別 SAS 網頁應用程式的可用性。一般來說 SAS 部署精靈只會在第一個 SAS Middle Tier 節點上安裝 SAS 網頁伺服器,其它節點則要手動從第一個節點複製設定檔 \Lev1\Web\WebServer 和新增服務進行安裝與設定,接著我們針對 SAS 網頁伺服器高可用性的設定主要有三種策略,分別為:

硬體策略

我們可以在硬體負載平衡器後面運作許多相同的 SAS 網頁伺服器,因為 SAS 網頁伺服器是無狀態的,所以可以複製伺服器實體,此外也沒有任何工作階段需要管理,沒有任何故障移轉,但是當發生故障時下一個請求將會被導至執行中的 SAS 網頁伺服器,請注意 SAS 網頁應用程式的粘性工作階段 (Sticky Sessions) 會受到任何一個 SAS 網頁伺服器影響,此外若有需要則多個硬體負載平衡器將可搭配 Round-robin DNS 策略組合使用。

循環 DNS 策略

我們可以在不同的主機上運作多個相同的 SAS 網頁伺服器,並且創建一個特殊的 DNS 名稱來解析多個 IP 地址。當客戶端使用 DNS 解析名稱時,它們將會收到需要使用的 IP 位址清單。基本上,若是第一個 IP 地址超時連線時,客戶端將會使用下一個 IP 位置,DNS 伺服器會輪詢每個請求返回的 IP 位址。若是發現 IP 位址無效時則會從清單中刪除 IP 位址,雖然循環 DNS 策略有些限制但還是被廣泛使用。

作業系統策略

我們可以使用作業系統中的高可用性功能來實作 SAS 網頁伺服器的故障移轉。在主要和熱備份節點上設定相同的 SAS 網頁伺服器。請注意兩台節點之間會保持心跳,然而若是節點故障或發生困難,則熱備份節點上作業系統將會負責處理服務請求。

如何進行設定步驟

再來針對上述的三種策略,我們除了從第一個節點複製設定檔 \Lev1\Web\WebServer 和新增服務進行安裝與設定之外,還需要根據網路環境進行下述設定,以利完成部署。

更新 SAS 網頁應用程式

更新每一個 SAS 網頁應用程式的連線資訊,主要可以分為內部連線和外部連線,其差別在於當 SAS 網頁應用程式存取 SAS 網頁應用程式則採用內部連線,當使用者重新導向網址 (URL) 時則採用外部連線,請注意必須設定 -Dsas.retry.internal.url=true 的 JVM 選項才能夠正常使用內部和外部連線,此外當應用程式請求外部網址時,跨網域代理 Servlet 需要使用-Dsas.web.html.cdps.use.internal.urls = true 的JVM選項,才能夠使用內部網址。

手動設定安全連線

若是基於網路架構或協定的變更,執行手動設定,尤其是 HTTPS 安全連線

更新 SAS 網頁應用程式新連線資訊

更新 SAS 網頁應用程式的新連線資訊,主要編輯 \Lev1\Web\WebAppServer\SASServerm_n\conf\server.xml 設定檔中的 Connector 項目的 proxyName 屬性。

更新 SAS 環境管理員新連線資訊

更新 SAS 環境管理員新連線資訊,主要編輯\Lev1\Web\SASEnvironmentManager\server-version-EE\hq-engine\hq-server\webapps\ROOT\WEB-INF\web.xml 和 \Lev1\Web\SASEnvironmentManager\server-version-EE\hq-engine\hq-server\webapps\ROOT\WEB-INF\spring\security-web-context.xml 檔案中正確的主機名稱和連接埠。

啟用 SAS 網頁應用程式伺服器 LifeCycle 監聽器功能

啟用 SAS 網頁應用程式伺服器 LifeCycle 監聽器功能,主要是強制 SAS 網頁應用程式伺服器等待條件伺服器皆啟動完成,監聽連接埠成功之後,才會開始啟動,一般來說條件伺服器主要有 SAS 網頁伺服器、資料庫伺服器、SAS 網頁基礎架構平台資料伺服器、第三方資料伺服器、SAS 中繼資料伺服器、SAS 快取伺服器 (只存在於 SAS 網頁基礎架構平台部署時) 和 SAS JMS Broker。

總結有關導入企業解決方案中高可用性的問題所涉及的範圍非常廣泛,本篇僅針對 SAS 網頁伺服器進行簡單說明,下一篇將會針對其它伺服器叢集應用進行說明。此外因為 SAS 網頁伺服器已經定位為負載平衡器和進行代理的功能,所以若我們擁有客制化的網頁應用程式伺服器,事實上只要修改 SAS 網頁伺服器中的 httpd.conf 和 sas.conf 中的叢集主機、負載平衡、代理主機、…等設定就能夠以最有效率的方式執行客制化的網頁應用程式伺服器,但是請一定要將修改的選項詳細記錄下來,因為資深技術前輩有特別提到上 Hotfix 時可能會覆蓋該設定檔,需要特別謹慎小心才行,學習無止盡,每一次的實機操作之後,再學習皆會有不同的體悟。

相關資源