循序漸進:Azure中的ISCSI目標服務器群集
我最近幫助某人在Azure中構建了iSCSI目標服務器群集,並意識到我從未針對該特定配置編寫分步指南。因此,為了彌補這一點,如果您需要自己執行此操作,請按以下逐步說明進行操作。
先決條件
我假設您對Azure和Windows Server相當熟悉,所以我將為您省去一些細節。假設您至少已完成以下操作
- 在不同的可用區中分別提供兩台服務器(SQL1,SQL2)(也可以使用可用性集,但是可用區具有更好的SLA)
- 通過Azure門戶為其分配靜態IP地址
- 將服務器加入現有域
- 在兩個節點上均啟用了故障轉移群集功能和iSCSI Target服務器功能
- 將三個Azure高級磁盤添加到每個節點。
注意:這是可選的,最少需要一個磁盤。為了提高IOPS,我們將在存儲池中將三個Premium Azure磁盤條帶化,並創建一個簡單的(RAID 0)虛擬磁盤 - SIOS DataKeeper將用於提供集群中使用的複制存儲。如果您需要DataKeeper,則可以在此處請求試用。
創建本地存儲池
再次,此步驟是完全可選的,但是為了提高IOPS,我們將三個Azure Premium磁盤分條到一個存儲池中。您可能會傾向於使用動態磁盤和跨區卷,但不要這樣做!如果使用動態磁盤,則會發現存在一些一般性的不兼容性,這將阻止您以後創建iSCSI目標。
不用擔心,如果您知道可能會遇到的陷阱(如下所述),那麼創建本地存儲池將非常簡單。官方文檔可以在這裡找到。
陷阱#1-儘管文檔說存儲池中使用的捲的最小大小為4 GB,但我發現無法識別P1高級磁盤(4GB)。因此,在我的實驗室中,我使用了16GB的P3高級磁盤。
陷阱2-您必須至少具有三個磁盤才能創建存儲池。
陷阱#3-在創建集群之前先創建存儲池。如果您在創建群集後嘗試執行此操作,那麼Microsoft會為您創建群集存儲池時,您將一團糟。我們將不會創建集群存儲池,因此在創建集群之前先創建存儲池,以免造成混亂。如果必須在創建集群後添加存儲池,則必須首先從集群中逐出該節點,然後再創建存儲池。
根據此處找到的文檔,以下是屏幕快照,它們表示在兩個群集節點中的每個節點上構建本地存儲池時應看到的屏幕截圖。在構建集群之前,請在兩台服務器上完成這些步驟。
您應該在兩台服務器上都看到原始池。
右鍵單擊並選擇“新建存儲池”。
關閉此嚮導後,選擇“創建虛擬磁盤”
請注意,如果您決定結合使用Standard,Premium和Ultra SSD,則可以創建存儲層
為了獲得最佳性能,請使用簡單的存儲佈局(RAID 0)。不必擔心可靠性,因為Azure託管磁盤在後端具有三重冗餘。需要簡單才能獲得最佳性能。
為了性能起見,請使用固定配置。無論如何,您已經為完整的Premium磁盤付費,因此無需全部使用。
創建您的集群
現在每個服務器都有自己的45 GB X驅動器,我們將創建基本集群。最好通過Powershell在Azure中創建群集,以便我們可以指定靜態IP地址。如果通過GUI進行操作,您很快就會意識到Azure為您的群集IP分配了一個必須清理的重複IP地址,所以不要這樣做!
這是用於創建新集群的示例Powershell代碼。
New-Cluster-名稱mycluster -NoStorage -StaticAddress 10.0.0.100-節點sql1,sql2
輸出看起來像這樣。
PS C: Users dave.DATAKEEPER>新建群集-名稱mycluster -NoStorage
-StaticAddress 10.0.0.100-節點sql1,sql2
警告:在創建群集角色時存在問題
可能會阻止它啟動。
有關更多信息,請查看下面的報告文件。
警告:報告文件位置:C: windows cluster Reports Create Cluster
2020.05.20上的嚮導mycluster
在16.54.45.htm
名稱
----
集群
報告中的警告將告訴您沒有見證人。由於此群集中沒有共享存儲,因此您必須創建一個Cloud Witness或File Share Witness。我不會指導您完成該過程,因為這些鏈接上已對此進行了很好的記錄。
不要拖延這一步,現在就繼續創建見證人,然後再繼續下一步!
現在,您應該擁有一個基本的2節點群集,看起來像這樣。
為群集核心IP地址配置負載均衡器
Azure中的群集是唯一的,因為Azure虛擬網絡不支持免費的ARP。如果您不知道這意味著什麼,請不必擔心,您真正要知道的是無法直接訪問群集IP地址。相反,您必須使用Azure負載平衡器,它將客戶端連接重定向到活動群集節點。
為Azure中的群集配置負載均衡器有兩個步驟。第一步是創建負載均衡器。第二步是更新群集IP地址,以便它偵聽負載平衡器的運行狀況探測器,並使用255.255.255.255子網掩碼,從而可以避免IP地址與ILB衝突。
我們將首先為集群核心IP地址創建一個負載均衡器。稍後,我們將編輯負載均衡器,以解決在本文檔結尾處將創建的iSCSI群集資源IP地址。
請注意,我們使用的靜態IP地址與用於創建核心群集IP資源的地址相同。
創建負載均衡器後,您將如下所示編輯負載均衡器
將兩個群集節點添加到後端池
將兩個群集節點添加到後端池
添加健康狀況探針。在此示例中,我們使用59999作為端口。請記住該端口,下一步將需要它。
創建新的路線以重定向所有HA端口,請確保已啟用“浮動IP”。
第2步–編輯群集IP地址以與負載均衡器一起工作
如前所述,將負載均衡器配置為正常工作有兩個步驟。現在我們有了負載均衡器,我們必須在一個集群節點上運行Powershell腳本。以下是需要在群集節點之一上運行的示例腳本。
$ ClusterNetworkName =“集群網絡1”
$ IPResourceName =“集群IP地址”
$ ILBIP =“ 10.0.0.100”
導入模塊故障轉移群集
Get-ClusterResource $ IPResourceName | Set-ClusterParameter
-多個@ {地址= $ ILBIP; ProbePort = 59998; SubnetMask =“ 255.255.255.255”
; Network = $ ClusterNetworkName; EnableDhcp = 0}
除了使所有變量都適合您的環境之外,上述腳本的重要之處還在於確保將ProbePort設置為您在負載均衡器設置中為此特定IP地址定義的端口。稍後您將看到我們將為使用另一個端口的iSCSI群集IP資源創建第二個健康狀況探針。另一個重要的事情是確保將子網設置為255.255.255.255。它可能看起來錯了,但這就是需要設置的內容。
運行它後,輸出應如下所示。
PS C: Users dave.DATAKEEPER> $ ClusterNetworkName =“集群網絡1”
$ IPResourceName =“集群IP地址”
$ ILBIP =“ 10.0.0.100”
導入模塊故障轉移群集
Get-ClusterResource $ IPResourceName | Set-ClusterParameter
-多個@ {地址= $ ILBIP; ProbePort = 59999; SubnetMask =“ 255.255.255.255”
; Network = $ ClusterNetworkName; EnableDhcp = 0}
警告:屬性已存儲,但並非所有更改都會生效
直到群集IP地址脫機,然後再次聯機。
您將需要使核心群集IP資源脫機並使其重新聯機,然後它才能在負載均衡器中正常運行。
假設您在創建負載均衡器時做得正確,則兩台服務器上的服務器管理器都應將群集列為“聯機”,如下所示。
檢查兩個群集節點上的服務器管理器。您的群集在“可管理性”下應顯示為“在線”。
安裝DataKeeper
我不會在這裡完成所有步驟,但是基本上到此為止,您已經準備好在兩個集群節點上安裝SIOS DataKeeper。這是一個非常簡單的設置,只需運行設置並選擇所有默認值即可。如果您在使用DataKeeper時遇到任何問題,通常是兩件事之一。第一個問題是服務帳戶。您需要確保用於運行DataKeeper服務的帳戶位於每個節點上的Local Administrators組中。
第二個問題是關於防火牆的。儘管DataKeeper安裝將自動更新本地Windows防火牆,但是如果您的網絡已鎖定,則需要確保群集節點可以通過所需的DataKeeper端口相互通信。此外,您需要確保ILB健康狀況探針可以到達您的服務器。
一旦安裝了DataKeeper,就可以創建第一個DataKeeper作業了。對於要使用DataKeeper界面複製的每個卷,請完成以下步驟。
使用DataKeeper界面連接到兩個服務器
單擊創建新作業並為其命名
單擊“是”以在集群中註冊DataKeeper卷。
註冊該卷後,它將顯示在故障轉移群集管理器的“可用存儲”中
創建ISCSI目標服務器群集
在下一步中,我們將在集群中創建iSCSI目標服務器角色。在理想的情況下,我將擁有一個Powershell腳本來為您完成所有這些工作,但是為了節省時間,我現在僅向您展示如何通過GUI進行操作。如果您碰巧編寫了Powershell代碼,請隨時與我們其他人分享!
GUI方法存在一個問題。創建IP資源時,您將獲得一個重複的IP地址,這將導致您的群集資源在我們修復之前失敗。我還將逐步完成該過程。
轉到失敗的IP地址資源的屬性,然後選擇靜態IP,然後選擇您的網絡上未使用的IP地址。請記住該地址,我們將在下一步中更新負載均衡器時使用它。
現在,您應該可以使iSCSI群集資源聯機。
更新ISCSI目標服務器群集資源的負載均衡器
如前所述,客戶端無法直接連接到我們剛剛為iSCSI目標服務器群集創建的群集IP地址(10.0.0.110)。我們將必須更新我們之前創建的負載均衡器,如下所示。
首先添加一個新的前端IP地址,該前端IP地址使用與iSCSI Target群集IP資源使用的IP地址相同的地址。
在另一個端口上添加另一個健康狀況探針。記住這個端口號,我們將在接下來運行的powershell腳本中再次使用它
我們再添加一個負載平衡規則。確保將“前端IP地址”和“運行狀況”探針更改為使用我們剛創建的探針。還要確保啟用直接服務器返回。
允許負載平衡器工作的最後一步是在一個群集節點上運行以下Powershell腳本。確保使用新的Healthprobe端口,IP地址和IP資源名稱。
$ ClusterNetworkName =“集群網絡1”
$ IPResourceName =“ IP地址10.0.0.0”
$ ILBIP =“ 10.0.0.110”
導入模塊故障轉移群集
Get-ClusterResource $ IPResourceName | Set-ClusterParameter
-多個@ {地址= $ ILBIP; ProbePort = 59998; SubnetMask =“ 255.255.255.255”
; Network = $ ClusterNetworkName; EnableDhcp = 0}
您的輸出應如下所示。
PS C: Users dave.DATAKEEPER> $ ClusterNetworkName =“集群網絡1”
$ IPResourceName =“ IP地址10.0.0.0”
$ ILBIP =“ 10.0.0.110”
導入模塊故障轉移群集
Get-ClusterResource $ IPResourceName | Set-ClusterParameter
-多個@ {地址= $ ILBIP; ProbePort = 59998; SubnetMask =“ 255.255.255.255”
; Network = $ ClusterNetworkName; EnableDhcp = 0}
警告:屬性已存儲,但並非所有更改都會生效
直到IP地址10.0.0.0脫機,然後再次聯機。
確保使資源脫機和聯機以使設置生效。
創建您的群集ISCSI目標
在開始之前,最好檢查一下以確保兩台服務器上的服務器管理器都能看到兩個群集節點以及兩個群集名稱資源,並且在可管理性下它們都顯示為“聯機”,如下所示。
如果任一服務器在查詢這些群集名稱中的任何一個時出現問題,則後續步驟將失敗。如果有問題,我將仔細檢查創建負載平衡器和運行的Powershell腳本所採取的所有步驟。
現在,我們準備創建我們的第一個群集iSCSI目標。從任一群集節點中,按照以下說明的步驟進行操作,以作為有關如何創建iSCSI目標的示例。
當然,將其分配給將要連接到該iSSI目標的服務器。
有了它,您現在在Azure中就可以使用功能正常的iSCSI目標服務器。
如果您對此進行構建,請發表評論,我知道您打算如何使用它!
經群集的凡有凡人許可複制的文章