Date: 22 4 月, 2024
逐步操作 – OCI 中的 SQL Server 2019 故障轉移群集實例 (FCI)
介紹
如果您在 Oracle 雲端基礎架構 (OCI) 中部署關鍵業務應用程序,那麼了解並利用 OCI 提供的可用性 SLA(服務等級協定)以獲得最佳正常運行時間和可靠性至關重要。 OCI 的 SLA 根據您選擇的部署策略而有所不同:
跨可用性域部署:當您在同一 OCI 區域內的不同可用性網域中部署兩個或多個虛擬機器 (VM) 時,OCI 提供 99.99% 的可用性 SLA。
跨故障域部署:如果跨故障域部署虛擬機,OCI 提供 99.95% 的可用性 SLA。需要注意的是,並非每個 OCI 區域都有多個可用性域,因此在某些區域,跨故障域部署將是您唯一的選擇。
單一虛擬機器部署:對於涉及單一虛擬機器的部署,SLA 為 99.9%。
此框架表示 OCI 根據您部署 VM 的方式保證一定程度的外部連線:
請務必注意,SLA 涵蓋虛擬機器本身的可用性,而不是其上執行的應用程式或服務的可用性。為了確保應用程式可用性,需要採取額外的措施,例如應用程式監視、復原計畫、資料複製和交易複製(適用於 SQL Server 等資料庫)。策略可能包括負載平衡、叢集或資料複製,以有效管理應用程式可用性。
為了滿足 OCI 中 99.99% 可用性 SLA 的標準,必須跨多個可用性網域部署虛擬機器。這篇文章將指導您設計 OCI 基礎設施,以促進跨可用性網域的 SQL Server 故障轉移叢集實例,從而確保關鍵業務應用程式的最大正常運作時間和可靠性。
建立 VCN 和子網
在本指南中,我假設您對 Oracle 雲端基礎架構 (OCI) 有一定的了解並對網路概念有基本的了解。我將透過描述來說明常見的配置任務,並在必要時提供額外的指導來應對 OCI 網路中遇到的一些常見挑戰。
從深思熟慮的網路計劃開始至關重要。本文檔不會涵蓋雲端網路規劃的複雜性,因此以下範例應僅被視為多種可能性之一。您的網路配置可能會有很大差異。但是,一個重要的考慮因素是規劃至少使用三個可用性域,為每個叢集節點分配一個,為檔案共用見證分配另一個。叢集所需的重要一點是每個可用性域必須位於不同的子網路中。
儘管我們沒有涵蓋跨故障域而不是可用性域的配置,但這同樣適用於跨故障域的叢集 – 所有節點必須駐留在不同的子網路中。
在我們的場景中,我們將在 OCI 中的單一虛擬雲網路 (VCN) 內跨三個不同的可用性域設定三個子網路。
VCN:10.0.0.0/16
- AD1:10.0.0.0/18
- AD2:10.0.64.0/18
- AD3:10.0.128.0/18
OCI 的使用者介面可能會發生變化,但在撰寫本文時,在 OCI 控制台中建立新 VCN 和三個子網路的過程非常簡單。具體細節可以在 OCI 文件中或透過其使用者介面找到,它會引導您完成 VCN 和子網路建立的必要步驟。
創建VCN
在 VCN 中建立三個子網
建立 Internet 網關
互聯網網關是我們的實例存取互聯網的方式。在您的網路中,您可能不希望實例能夠存取互聯網,但在本範例中,我們將啟用它並將其新增至我們的預設路由表中。
編輯預設安全列表
編輯路由表
編輯路由表,以便所有發送到 VCN 外部的流量都透過 Internet 閘道進行路由。
建立網路安全群組
編輯安全列表
這些設定允許跨可用性網域不受限制的訪問,並允許從任何地方進行 RDP 存取。您可以考慮限制哪些 IP 位址可以 RDP 到您的實例,甚至設定一個專門用於從公共網路進行 RDP 存取的「跳轉虛擬機器」。
編輯 DHCP 選項
為了讓 Active Directory 正常運作,您必須在 DHCP 選項中將 DC1 設定為主 DNS 伺服器,如下所示。在本例中,我們將其設定為 10.0.0.100,這是我們正在設定的網域控制器的靜態 IP。您還應該將您的網域新增至自訂搜尋網域。在本例中,我們將使用名為 datakeeper.local 的網域,稍後我們將在配置網域控制站時建置該網域。
配置虛擬機
現在 VCN 已配置完畢,是時候開始設定虛擬機器了。在此範例中,我們將使用Windows Server 2022 和SQL Server 2019。 。
在開始之前,制定計劃再次很重要。在這種情況下,您需要規劃伺服器名稱、IP 位址及其可用區佈局。如前所述,每個叢集節點和檔案共用見證都必須駐留在不同的可用區中。
在範例配置中,我們將在實例 (DC1) 中部署 Active-Directory,該實例也將充當檔案共用見證。
AD1 – DC1 (10.0.0.100)
AD2 – SQL1 – (10.0.64.100, 10.0.64.101, 10.0.64.102)
AD3 – SQL2 – (10.0.128.100, 10.0.128.101, 10.0.128.102)
您可能已經注意到,每個叢集節點(SQL1、SQL2)都有三個 IP 位址。第一個位址是實例的私有IP位址。另外兩個 IP 位址將會作為輔助位址新增到每個實例上。這些 IP 位址包含與 SQL Server FCI 網路名稱資源關聯的核心叢集 IP 位址和虛擬 IP 位址。
當我們配置叢集節點時,我們將使用不包含 SQL Server 軟體的基本 Windows Server 2022 映像。相反,我們將下載 SQL Server 安裝媒體並使用永久 SQL Server 許可證,而不是 Marketplace 上提供的「即用即付」許可證。
以下部分說明了配置本範例中使用的三個虛擬機器的過程。
在FD1中配置DC1
選擇執行個體類型時,您必須根據工作負載適當調整執行個體類型。這與您調整實體伺服器大小以在本地使用時所做的類似,但不同之處在於,如果您首次過度配置或配置不足,或者您的工作負載隨著時間的推移增加或減少。
指定實例詳細資料時,請確保選擇正確的 VCN 和子網路以進行正確放置。在第一個畫面上,您也可以指定要與該執行個體關聯的靜態 IP。
在 FD2 中配置 SQL1
如前所述,此範例使用 Windows Server 2022 的基本安裝。
在 FD3 中設定 SQL2
添加額外的捲
叢集中的每台伺服器都需要至少一個額外的磁碟區。這些磁碟區對於 SQL Server FCI 的儲存需求至關重要,並由 SIOS DataKeeper 複製。
多卷
您可以新增多個磁碟區來分隔資料、日誌和備份。
儲存類型:多種儲存類型可供選擇,以滿足不同的需求。
附著方法
有多種方法可以將儲存空間連接到伺服器。
配置範例
下面,我們提供了螢幕截圖,展示了多種可能的儲存配置之一。這是一個實際範例,有助於理解設定過程。此程序應在 SQL1 和 SQL2 上完成。
建立區塊卷
首先,在正確的可用性網域中為 SQL1 和 SQL2 建立區塊磁碟區。
附加卷
現在卷已創建,您必須將它們附加到實例。
需要記住的要點
設定靈活。您可以根據您的特定需求配置一個或多個磁碟區。
考慮適合您的配置的不同儲存類型和連接方法。
新增輔助 IP 位址
為了讓 Windows Server 故障轉移叢集在 OCI 中正常運作,您必須將叢集 IP 位址新增為附加到 SQL1 和 SQL1 的虛擬網路介面 (VNIC) 上的輔助位址。您還記得,我們討論過在每個叢集節點上使用以下 IP 位址。
SQL1 | SQL2 | |
主要地址 | 10.0.64.100 | 10.0.128.100 |
集群IP 1(核心集群資源) | 10.0.64.101 | 10.0.128.101 |
叢集IP 2(SQL Server叢集IP) | 10.0.64.102 | 10.0.128.102 |
在 SQL1 和 SQL2 上,編輯附加的 VNIC 以新增輔助位址。
建立網域
為了實現彈性,您應該在不同的可用區域配置多個 AD 控制器,但出於本指南的目的,我們將只配置一個 AD 控制器。請依照下面的螢幕截圖在 DC1 上設定 AD。
使用實例詳細資料部分中所列的憑證登入。系統將提示您重設密碼。
啟用 Active Directory 網域服務
將伺服器升級為網域控制器
在開始此程序之前,請在伺服器上啟用本機管理員帳戶並設定密碼。如果不這樣做,當您嘗試升級網域控制站時,您將收到此訊息。
啟用管理員帳戶並設定密碼後,繼續進行部署後配置
在啟用 Active Directory 網域服務之前,您必須啟用本機管理員帳戶並使用該帳戶登入。
使用您喜歡的 RDP 程序,使用與執行個體關聯的公共 IP 位址連接到 DC1。新增 Active Directory 網域服務角色。
安裝完成後,將此伺服器提升為網域控制站。
出於我們的目的,我們將建立一個新網域。
重新啟動 DC1 並繼續下一部分。
將 SQL1 和 SQL2 新增至網域
準備儲存
將 SQL1 和 SQL2 新增至網域後,使用您建立的網域管理員帳戶連線到執行個體以完成其餘的設定步驟。您需要做的第一件事是附加並格式化我們新增到 SQL1 和 SQL2 的 EBS 卷,如下所示。
配置故障轉移集群功能
在 SQL1 和 SQL2 上啟用故障轉移群集功能。
在 SQL1 和 SQL2 上執行此 PowerShell 命令
安裝-WindowsFeature-名稱故障轉移群集-IncludeManagementTools
驗證您的集群
從 SQL1 或 SQL2 執行此 PowerShell 命令
測試集群-節點 sql1,sql2
根據您使用的 Windows Server 版本,您將看到一些有關網路和可能儲存的警告。網路警告可能會告訴您每個叢集節點都可以透過單一介面存取。早期版本的 Windows 會警告您缺少共用儲存。
您可以忽略這兩個錯誤,因為它們在 OCI 託管的叢集中是預期的。只要您沒有收到錯誤,就可以繼續下一部分。如果您收到任何錯誤,請修復它們,然後再次執行驗證並繼續下一部分。
建立集群
接下來,您將建立叢集。在下面的範例中,您會注意到我使用了我們計劃使用的兩個 IP 位址:10.0.64.101 和 10.0.128.101。您可以從任一群集節點執行此 Powershell。
新叢集 -名稱 cluster1 -節點 sql1,sql2 -靜態位址 10.0.64.101, 10.0.128.101
請注意:不要嘗試透過 WSFC GUI 建立叢集。您會發現,由於執行個體使用 DHCP,GUI 不會為您提供為叢集指派 IP 位址的選項,而是會散佈重複的 IP 位址。
新增文件共享見證
為了維持集群仲裁,您需要新增見證人。在 OCI 中,您要使用的見證類型是檔案共用見證。檔案共享見證必須駐留在與兩個群集節點不同的故障域中的伺服器上。
在下面的範例中,將在駐留在 FD1 中的 DC1 上建立檔案共用見證。
在 DC1 上,建立檔案共用並指派叢集名稱物件 (CNO) 對該資料夾的讀寫權限。在您建立的資料夾的「共用」和「安全性」標籤上新增 CNO 的權限,在下面的範例中,我建立了一個名為「見證」的資料夾。
建立資料夾並向 CNO 指派適當的權限後,請在 SQL1 或 SQL2 上執行下列 PowerShell 命令。
設定 ClusterQuorum -Cluster cluster1 -FileShareWitness \\dc1\Witness
當您在 SQL1 或 SQL2 上啟動故障轉移群集管理器時,您的群集現在應如下所示。
建立 SQL Server FCI
安裝DataKeeper集群版
在繼續執行後續步驟之前,您需要在 SQL1 和 SQL2 上安裝 DataKeeper Cluster Edition。下載安裝執行檔並在兩個節點上執行 DataKeeper 安裝程式。請參閱SIOS文檔有關安裝的具體指導。
建立 DataKeeper 卷資源
在任一叢集節點上啟動 DataKeeper UI 並建立 DataKeeper 磁碟區資源,如下所示。
連接到兩台伺服器,首先是 SQL1,然後是 SQL2
如果您已連接到兩台伺服器且儲存配置正確,則伺服器概述報告應如下所示。
按一下建立作業以啟動作業建立精靈
DataKeeper 支援同步和非同步複製。對於同一區域內的可用區之間的複製,請選擇同步。如果您想跨區域甚至跨雲端提供者複製,請選擇非同步
這裡點選“是”,將DataKeeper Volume資源註冊到叢集的Available Storage中
DataKeeper 磁碟區 D 現在顯示在故障轉移群集管理器的可用儲存中。
在 SQL1 上安裝 SQL Server FCI 的第一個節點
現在核心叢集已創建,且 DataKeeper 磁碟區資源位於可用儲存中,是時候在第一個叢集節點上安裝 SQL Server 了。如前所述,此處的範例說明了使用 SQL 2019 和 Windows 2022 的群集配置,但無論您嘗試部署哪個版本的 Windows Server 或 SQL Server,此範例中描述的所有步驟實際上都是相同的。
請依照下面的範例在 SQL1 上安裝 SQL Server
您在下方指定的名稱是客戶端存取點。這是應用程式伺服器想要連接到 SQL Server FCI 時將使用的名稱。
在此畫面上,您將新增我們先前在規劃部分中確定的 SQL1 輔助 IP 位址第1部分這個系列的。
在此範例中,我們將 tempdb 保留在 D 磁碟機上。但是,為了獲得最佳效能,建議您將 tempdb 放置在非複製磁碟區上。
在 SQL2 上安裝 SQL Server FCI 的第二個節點
現在是在 SQL2 上安裝 SQL Server 的時候了。
在兩個群集節點上安裝 SQL Server 後,故障轉移群集管理器應如下所示。
安裝 SQL Server Management Studio
在 SQL Server 版本 2016 及更高版本上,您必須以單獨的選項下載並安裝 SSMS,如下所示。注意:在 SQL Server 的早期版本中,SQL Server Management Studio (SSMS) 是您可以在 SQL 安裝期間選擇安裝的選項。
安裝 SSMS 後,透過用戶端存取點連接到叢集。您的 SQL Server FCI 應該如下所示。
多子網路注意事項
在 OCI 中執行 SQL Server FCI 的最大考慮因素之一是群集節點駐留在不同的子網路中。 Microsoft 開始透過在 Windows Server 2008 R2 中新增「OR」功能來考慮群集節點可能駐留在不同子網路中的事實,如 Microsoft文件。
取自SQL Server 多子網路叢集 (SQL Server)
文件中所述的重要內容是網路名稱資源上的 RegisterAllProvidersIP 概念,在建立 SQL Server FCI 時預設啟用該概念。如上所述,啟用此功能後,將在 DNS 中使用網路名稱資源註冊兩個 A 記錄,每個 IP 位址對應一筆記錄。
使用“OR”功能,只有與活動子網路關聯的 IP 位址才會在線,而另一個將顯示為離線。如果您的用戶端支援將 multisubnetfailover=true 新增至連接字串,則將同時嘗試兩個 IP 位址,且用戶端將自動連接到活動節點。這是最簡單的,也是多子網路叢集中客戶端重定向的預設方法。
該文件接著說,如果您的用戶端不支援 multisubnetfailover=true 功能,則您應該「嘗試將每個附加 IP 位址的用戶端連接字串中的連線逾時調整 21 秒。這可確保客戶端的重新連線嘗試在能夠循環存取多子網路 FCI 中的所有 IP 位址之前不會逾時。
停用 RegisterAllProvidersIP 是另一個可行的選項。透過停用 RegisterAllProvidersIP,您在 DNS 中將只有一筆 A 記錄。每次群集故障轉移時,DNS A 記錄都會更新為與名稱資源關聯的活動群集 IP 位址。
此方案配置的缺點是您的用戶端將快取舊 IP 位址,直到生存時間 (TTL) 到期。為了最大限度地減少重新連線的延遲,建議您變更名稱資源上的 TTL。描述了這個過程這裡下面顯示了將 TTL 設定為 5 分鐘的範例。
取得 ClusterResource -名稱 sqlcluster |設定 ClusterParameter -名稱 HostRecordTTL -值 300
請記住,對 AD 整合 DNS 伺服器的變更也可能需要一些時間才能傳播到整個林。
概括
本技術指南全面概述了在 Oracle 雲端基礎架構 (OCI) 中設定 SQL Server 2019 故障轉移叢集執行個體 (FCI)。首先強調了解 OCI 可用性 SLA 的重要性,該 SLA 根據部署策略而有所不同:跨可用性域部署為 99.99%,跨故障域部署為 99.95%,單一虛擬機部署為 99.9%。該指南強調,SLA 涵蓋虛擬機器可用性,而不是其上執行的應用程式或服務,因此需要採取額外的措施來確保應用程式可用性。
該指南詳細介紹了在 OCI 中建立虛擬雲端網路 (VCN) 和子網路的初步步驟,強調需要一個能夠容納至少三個可用性域以實現叢集目的的網路規劃。每個可用性域必須位於不同的子網路中,這項要求也適用於跨故障域的叢集。它提供了在單一 VCN 內跨不同可用性域設定三個子網路的特定配置。
此外,該指南還描述了建立網際網路閘道以及編輯預設安全性清單和路由表以促進跨可用性網域的存取和安全性的過程。它還介紹了用於 Active Directory 相容性的 DHCP 選項配置,並概述了使用 Windows Server 2022 和 SQL Server 2019 配置虛擬機器的步驟,強調了規劃伺服器名稱、IP 位址和可用區放置的重要性。
然後,該指南深入研究了新增額外磁碟區以滿足 SQL Server FCI 儲存需求,詳細介紹了建立區塊磁碟區並將其附加到執行個體的過程。它還指導如何在 OCI 中設定 Windows Server 故障轉移叢集的輔助 IP 位址。
接下來,本指南介紹了網域控制器設置,包括啟用 Active Directory 網域服務以及將伺服器升級為網域控制站。它逐步介紹了在 SQL1 和 SQL2 上準備儲存和啟用故障轉移群集功能,以及群集驗證和建立過程。
該指南進一步討論了新增檔案共用見證以維護叢集仲裁以及安裝 DataKeeper Cluster Edition 以進行磁碟區複製。它提供了在叢集節點和 SQL Server Management Studio 上安裝 SQL Server 的逐步方法,以及多子網路部署的注意事項。
總而言之,本指南提供了在OCI 中部署和配置SQL Server 2019 FCI 的詳細藍圖,涵蓋從網路設定和VM 配置到叢集、儲存配置和網域控制設定等各個方面,確保關鍵業務應用程式的正常運作時間和可靠性最大化。
經許可轉載安全作業系統