用於 AWS 上 SAP 的 Windows 羣集

本文分析了 Windows Server 故障轉移羣集的設計方面,以及在部署期間要牢記的關鍵方面。

SAP企業客戶對可用性有嚴格要求,爲了滿足這些關鍵績效指標(KPI),架構師尋求集羣解決方案來滿足需求。Windows Server Failover Cluster(WSFC)就是這樣一種集羣解決方案。它作爲Windows Server Datacenter版的一部分提供。這使得它成爲使用Windows Server的設置的默認選擇。

值得注意的是,SAP HANA數據庫目前僅支持Linux(SUSE和RHEL)。因此,在這種設置中,WSFC可用於SAP Central Services(ASCS/SCS)。對於MS-SQL部署,WSFC也用於通過SQL Always On實現高可用性。

在本文中,我們將詳細介紹WSFC的設計方面,並瞭解在部署過程中應該注意的關鍵方面。

WSFC設置 WSFC設置需要以下最低組件,這些組件首先必須可訪問,並且每個組件都應有相應的管理員。共享文件系統(AWS中的FSx) Windows域控制器 DNS Windows文件共享見證(FileShare Witness) SAP安裝的域管理員權限 讓我們詳細看看每個組件。

共享文件系統 “sapmnt”文件系統在SAP安裝中作爲核心組件之一,它包含配置文件、託管SAP內核二進制文件,並與集羣軟件協同工作以提供無縫故障轉移能力。這可以通過各種實現方式實現。在AWS中,首選的本機機制是使用FSx。它基本上是由AWS提供的基於Windows Server的可擴展文件存儲,以SaaS模式提供。它們可以使用SMB(服務消息塊)協議進行訪問。

請記住,SAP僅支持長度最長爲13個字符的DNS名稱;因此,應創建一個額外的DNS名稱(C記錄),以便在SAP安裝期間可以提供符合SAP命名約定和字符限制的名稱。

Windows域控制器 Windows集羣設計與域控制器協同工作。羣集名稱對象(CNO)在Active Directory中使用這些域控制器創建。通常客戶會使用現有的域控制器和現有的Active Directory。在AWS上運行SAP時,管理員應明確定義這些組件,並確保它們優先位於AWS中,並具有本地副本以避免延遲問題。通常會有多個域控制器以提供高可用性,並且必須清楚地理解此設置的工作原理,因爲羣集狀態可能在多個域控制器之間錯誤地反映,從而導致不一致。如果客戶既有本地和AWS域控制器,則最好將WSFC中的所有配置映射到AWS域控制器本身,進而將其反映在所有域控制器中,並確保SAP服務器與域控制器之間存在最小延遲。

DNS IP地址在DNS中映射爲用戶友好的名稱,並且它與域控制器和Active Directory域服務(AD DS)一起工作來提供查找。 Linux和Windows集羣在此處有一個重要的區別,即如何管理集羣的虛擬IP地址。此虛擬IP有時稱爲“浮動IP”。在Linux集羣中,實施使用了覆蓋IP,而在WSFC中,每個集羣節點的IP地址都針對虛擬集羣名稱在DNS中更新,並且在集羣故障轉移期間調整了對虛擬名稱的查找。因此,DNS的更新成爲終端用戶訪問羣集的關鍵因素,如果此更新無法立即反映在所有終端用戶的計算機上,則可能導致終端用戶看到錯誤信息,即使羣集本身已經進行了故障切換。

Windows文件共享見證 每個羣集都需要一個仲裁者來確定和解決拆網分支情況,其中兩個羣集節點都可能處於競爭狀態,以確定哪個節點是活動節點。外部設備(在本例中爲FSx)通過提供作爲羣集的一部分並充當第三個節點的外部設備來解決此問題。兩個羣集節點都對見證設備執行IO操作,這兩個羣集節點與見證設備一起進行投票,決定任何時間點上的活動節點。雖然IO的量很小,但重要的是保持這種IO操作的延遲和吞吐量最小,因爲這些操作每隔幾秒鐘就會發生一次,任何對此操作的稍微延遲都可能將羣集帶入不健康狀態。

域管理員權限 在Windows安裝中,域管理員權限可以提供在Windows上安裝SAP所需的必要權限。在許多情況下,由於客戶的安全限制,不允許使用此權限,並且SAP安裝指南列出了在這種情況下需要提供的特定權限。這包括創建/刪除/修改用戶、組、計算機對象、DNS服務器記錄和其他特定組織單位(OU)中用於創建SAP系統的OU對象。

在設置羣集時,有幾個具有影響的參數需要評估:

RegisterAllProvidersIP 此參數確定羣集跨越其他子網的所有IP地址是否由羣集在DNS中註冊,還是僅註冊活動節點IP。值爲1(默認值)會在DNS中註冊所有IP地址。在AWS中使用此配置時存在問題,特別是對於ASCS/ERS羣集,因爲它會導致多個IP地址映射到單個主機名,並且解析不一致。

此配置對於MS-SQL Always On羣集非常有效,因爲數據庫羣集設計旨在嘗試連接到可用IP地址的多個連接,通過設置MultiSubnetFailover=True並利用成功的連接。

目前ASCS/ERS羣集設計不支持類似的連接過程,其中可以嘗試同一ASCS虛擬名稱的多個IP地址進行並行連接。僅成功的連接將進行進一步處理。在ASCS/ERS的情況下,這種實現不存在,這意味着沒有可用的一致和可預測的行爲。因此,需要將此值設爲0,並讓羣集在故障轉移過程中更新IP地址到DNS中。

請注意,這通常可能會在具有多個需要進行同步的DNS服務器的情況下出現問題。請參閱下面的其他參數以處理此問題。

MultiSubnetFailover 這是一個客戶端參數,允許客戶端應用程序同時嘗試與DNS中定義的不同IP地址建立多個連接到MS-SQL數據庫服務器。它避免了超時情況。然而,SAP應用層ASCS/ERS羣集當前不支持理解此參數。請注意,這與SAP應用程序服務器與MS-SQL數據庫之間的連接不同。SAP應用程序服務器可以正確理解MultiSubnetFailver參數,因此能夠在故障轉移期間處理與數據庫的連接。然而,SAP ASCS/ERS羣集沒有類似的參數來處理故障轉移期間的無縫連接。

HostRecordTTL 這是一個羣集參數,它定義客戶端操作系統上緩存條目在再次查詢DNS之前保留的時間。默認值爲1200秒。然而,建議根據AWS的建議將其降低到15秒,甚至在需要幾乎零停機時間的情況下降低到1秒。

這引入了另一個問題:DNS現在受到所有客戶端操作系統的非常頻繁的查詢影響,對於大型企業客戶的SAP應用程序,這個數量可能在數千個範圍內。無法確定該參數的通用值。適當的羣集測試應該找出最佳值。