SIOS SANless clusters

SIOS SANless clusters High-availability Machine Learning monitoring

  • Home
  • 產品
    • SIOS DataKeeper for Windows
    • SIOS Protection Suite for Linux
  • 新闻与活动
  • 伺服器集群简单化
  • 成功案例
    • 台灣成功案例
  • 聯繫我們
  • English
  • 中文 (中国)
  • 中文 (台灣)
  • 한국어
  • Bahasa Indonesia
  • ไทย

在Azure中的Windows Server 2008 R2上配置SQL Server 2008 R2故障轉移群集實例

24 4 月, 2019 by Jason Aw Leave a Comment

循序漸進:如何在Azure中的Windows Server 2008 R2上配置SQL Server 2008 R2故障轉移群集實例

介紹

2019年7月9日,對SQL Server 2008和2008 R2的支持將結束。這意味著定期安全更新的結束。但是,如果將這些SQL Server實例移動到Azure,Microsoft將為您提供三年的擴展安全更新,無需額外費用。如果您當前正在運行SQL Server 2008/2008 R2並且在7月9日截止日期之前無法更新到SQL Server的更高版本,那麼您將希望利用此優惠而不是冒著面臨未來安全漏洞的風險。未修補的SQL Server實例可能導致數據丟失,停機或破壞性數據洩露。

在Azure中運行SQL Server 2008/2008 R2時將面臨的挑戰之一是確保高可用性。在本地,您可能正在運行SQL Server故障轉移群集(FCI)實例以實現高可用性,或者您可能正在虛擬機中運行SQL Server,並且依賴VMware HA或Hyper-V群集來獲取可用性。遷移到Azure時,這些選項都不可用。 Azure中的停機是非常可能的,您必須採取措施來緩解。

為了減少停機的可能性並獲得Azure 99.95%或99.99%SLA的資格,您必須利用SIOS DataKeeper。DataKeeper克服了Azure缺乏共享存儲的問題,並允許您在Azure中構建SQL Server FCI,利用每個實例上的本地連接存儲。SIOS DataKeeper不僅支持本指南中記錄的SQL Server 2008 R2和Windows Server 2008 R2,它支持從2008 R2到Windows Server 2019的任何版本的Windows Server以及從SQL Server 2008到SQL Server 2019的任何版本的SQL Server 。

本指南將介紹在Azure中創建在Windows Server 2008 R2上運行的雙節點SQL Server 2008 R2故障轉移群集實例(FCI)的過程。儘管SIOS DataKeeper還支持跨可用區或區域的群集,但本指南假設每個節點都位於同一個Azure區域,但位於不同的故障域中。將使用SIOS DataKeeper代替創建SQL Server 2008 R2 FCI通常所需的共享存儲。

在Azure中創建第一個SQL Server實例

本指南將利用Azure Marketplace中發布的Windows Server 2008R2映像上的SQL Server 2008R2SP3。

配置第一個實例時,您必須創建新的可用性集。在此過程中,請確保將Fault Domains的數量增加到3。這允許兩個群集節點和文件共享見證每個節點駐留在它們自己的故障域中。

為每個實例添加其他磁盤。建議使用Premium或Ultra SSD。禁用用於SQL日誌文件的磁盤上的緩存。在用於SQL數據文件的磁盤上啟用只讀緩存。有關存儲最佳實踐的其他信息,請參閱Azure虛擬機中的SQL Server性能指南。

如果尚未配置虛擬網絡,請允許創建嚮導為您創建新虛擬網絡。

創建實例後,請進入IP配置並使專用IP地址靜態。這是SIOS DataKeeper所必需的,也是群集實例的最佳實踐。

確保將虛擬網絡配置為將DNS服務器設置為本地Windows AD控制器。這是為了確保您能夠在以後的步驟中加入域。

在Azure中創建結束SQL Server實例

按照上面的相同步驟。除了確保將此實例放在您使用第一個實例創建的同一虛擬網絡和可用性集中。

創建文件共享見證(FSW)實例

為了使Windows Server故障轉移群集(WSFC)以最佳方式工作,您需要創建另一個Windows Server實例並將其放在與SQL Server實例相同的可用性集中。通過將其置於同一可用性集中,可確保每個群集節點和FSW位於不同的故障域中。因此,如果整個故障域脫機,確保您的群集保持在線。此實例不需要SQL Server。它可以是一個簡單的Windows Server,因為它需要做的就是託管一個簡單的文件共享。

此實例將託管WSFC所需的文件共享見證。此實例不需要具有相同的大小,也不需要附加任何其他磁盤。它的唯一目的是託管一個簡單的文件共享。它實際上可以用於其他目的。在我的實驗室環境中,我的FSW也是我的域控制器。

卸載SQL Server 2008 R2

配置的兩個SQL Server實例中的每一個都已經安裝了SQL Server 2008 R2。但是,它們作為獨立的SQL Server實例安裝,而不是群集實例。在我們安裝集群實例之前,必須從每個實例中卸載SQL Server。最簡單的方法是運行SQL安裝程序,如下所示。

運行setup.exe / Action-RunDiscovery時,您將看到所有預安裝的內容 

setup.exe / Action-RunDiscovery

運行setup.exe / Action =卸載/ FEATURES = SQL,AS,RS,IS,工具/ INSTANCENAME = MSSQLSERVER啟動卸載過程

setup.exe / Action = Uninstall / FEATURES = SQL,AS,RS,IS,Tools / INSTANCENAME = MSSQLSERVER

運行setup.exe / Action-RunDiscovery確認卸載已完成

setup.exe / Action-RunDiscovery

在第二個實例上再次運行此卸載過程。

將實例添加到域

所有這三個實例都需要添加到Windows域中。

添加Windows故障轉移群集功能

需要將故障轉移群集功能添加到兩個SQL Server實例中

Add-WindowsFeature故障轉移 - 群集

關閉Windows防火牆

為簡單起見,請在安裝和配置SQL Server FCI期間關閉Windows防火牆。有關保護Azure資源的建議,請參閱Azure網絡安全最佳實踐。可以在此處找到所需Windows端口的詳細信息,此處的SQL Server端口和此處的SIOS DataKeeper端口,我們稍後將配置的內部負載均衡器還需要端口59999訪問。因此,請務必在安全配置中考慮到這一點。

NetSh Advfirewall設置allprofiles狀態

安裝Windows Server 2008 R2 SP1的Convenience Rollup更新

為了在Azure中配置Windows Server 2008 R2實例,需要進行關鍵更新(kb2854082)。該更新以及更多內容包含在Windows Server 2008 R2 SP1的便捷匯總更新中。在每個SQL Server實例上安裝此更新。

格式化存儲

配置兩個SQL Server實例時附加的其他磁盤需要格式化。對每個實例上的每個卷執行以下操作。

微軟最佳實踐說如下……

“NTFS分配單元大小:格式化數據磁盤時,建議您對數據和日誌文件以及TempDB使用64 KB的分配單元大小。”

運行群集驗證

運行集群驗證以確保一切準備好進行集群。

您的報告將包含有關存儲和網絡的警告。您可以忽略這些警告,因為我們知道沒有共享磁盤,並且服務器之間只存在單個網絡連接。您可能還會收到有關網絡綁定順序的警告,該警告也可以忽略。如果您遇到任何錯誤,您必須在繼續之前解決這些錯誤。

創建群集

在Azure中創建集群的最佳實踐是使用Powershell,如下所示。Powershell允許我們指定靜態IP地址,而GUI方法則不允許。不幸的是,Azure的DHCP實現與Windows Server Failover Clustering不兼容。如果您使用GUI方法,您將使用重複的IP地址作為群集IP地址。這不是世界末日,但你需要在我展示時解決這個問題。

正如我所說,Powershell方法通常效果最好。但是,出於某種原因,它似乎在Windows Server 2008 R2上失敗,如下所示。

New-Cluster -Name cluster1 -Node sql1,sql2 -StaticAddress 10.1.0.100 -NoStorage

您可以嘗試這種方法,如果它適合您 – 太棒了!我需要回過頭來再研究一下,看看它是不是僥倖。如果Powershell不工作,我需要探索的另一個選項是Cluster.exe。運行cluster / create /?使用不推薦使用的cluster.exe命令提供用於創建集群的正確語法。

但是,如果Powershell或Cluster.exe使您失敗,則以下步驟說明瞭如何通過Windows Server Failover Clustering UI創建群集,包括修復將分配給群集的重複IP地址。

請記住,您在此處指定的名稱只是群集名稱對象(CNO)。這不是SQL客戶端用於連接群集的名稱;我們將在稍後的步驟中定義SQL Server群集設置期間。 

此時,已創建群集,但由於重複的IP地址問題,您可能無法使用Windows Server Failover Clustering UI連接到群集。

修復重複的IP地址

如前所述,如果使用GUI創建集群,則無法為集群選擇IP地址。由於您的實例配置為使用DHCP(Azure中需要),因此GUI希望使用DHCP自動為您分配IP地址。遺憾的是,Azure的DHCP實現無法按預期工作,並且群集將分配其中一個節點已使用的相同地址。雖然群集將正確創建,但在解決此問題之前,您將很難連接到群集。

要解決此問題,請從其中一個節點運行以下命令,以確保在該節點上啟動群集服務。

淨啟動clussvc / fq

在同一節點上,您現在應該能夠連接到Windows Server Failover Clustering UI,在那裡您將看到IP地址無法聯機。

打開群集IP地址的屬性並將其從DHCP更改為靜態,並為其分配未使用的IP地址。

將Name資源聯機

添加文件共享見證

接下來我們需要添加文件共享見證。在我們配置為FSW的第三台服務器上,創建一個文件夾並共享它,如下所示。您需要在共享和安全級別授予群集名稱對象(CNO)讀/寫權限,如下所示。

創建共享後,在其中一個群集節點上運行“配置群集仲裁”嚮導,然後按照以下步驟操作。

為DataKeeper創建服務帳戶

我們幾乎準備好安裝DataKeeper。但是,在我們這樣做之前,您需要創建一個Domain帳戶並將其添加到每個SQL Server群集實例上的Local Administrators組。我們將在安裝DataKeeper時指定此帳戶。

安裝DataKeeper

在兩個SQL Server群集節點中的每個節點上安裝DataKeeper,如下所示。

這是我們將指定我們添加到每個本地域管理員組的域帳戶的位置。

配置DataKeeper

在兩個群集節點中的每個節點上安裝DataKeeper後,即可配置DataKeeper。

注 – 以下步驟中遇到的最常見錯誤與安全性相關,通常由預先存在的Azure安全組阻止所需端口。請參閱SIOS文檔以確保服務器可以通過所需的端口進行通信。

首先,您必須連接到兩個節點中的每一個。

如果一切配置正確,您應該在“服務器概述”報告中看到以下內容。

接下來,創建一個新工作並按照下面說明的步驟

在此處選擇“是”以在“可用存儲”中註冊DataKeeper卷資源

為每個卷完成上述步驟。完成後,您應該在Windows Server故障轉移群集UI中看到以下內容。

您現在已準備好將SQL Server安裝到群集中。

注 – 此時,只能在當前託管可用存儲的節點上訪問複製卷。這是預期的,所以不要擔心!

在第一個節點上安裝SQL Server

在第一個節點上,運行SQL Server安裝程序。

選擇“新建SQL Server故障轉移群集安裝”,然後按照說明執行操作。

只選擇您需要的選項。 

請注意,本文檔假定您使用的是SQL Server的默認實例。如果使用命名實例,則需要確保鎖定其偵聽的端口,並在配置負載平衡器時使用該端口。您還需要為SQL Server Browser服務(UDP 1434)創建負載平衡器規則,以便連接到命名實例。本指南不涉及這兩個要求。但是,如果您需要命名實例,那麼如果您執行這兩個額外步驟,它將起作用。

在這裡,您需要指定一個未使用的IP地址

轉到“數據目錄”選項卡並重定位數據和日誌文件。在本指南的最後,我們將討論將tempdb重定位到非鏡像DataKeeper卷以獲得最佳性能。現在,只需將其保留在其中一個群集磁盤上即可。

在第二個節點上安裝SQL

在第二個節點上再次運行SQL Server安裝程序。然後,選擇“將節點添加到SQL Server故障轉移群集”。

恭喜你,差不多完成了!但是,由於Azure缺乏對免費ARP的支持,我們需要配置內部負載均衡器(ILB)以協助客戶端重定向,如以下步驟所示。

更新SQL群集IP地址

為了使ILB正常運行,必須從其中一個集群節點運行以下命令。SQL Cluster IP使SQL Cluster IP地址能夠響應ILB運行狀況探測,同時還將子網掩碼設置為255.255.255.255,以避免IP地址與運行狀況探測衝突。

cluster res <IPResourceName> / priv enabledhcp = 0 address = <ILBIP> probeport = 59999 subnetmask = 255.255.255.255

注意 – 我不知道它是不是僥倖。有時候我運行了這個命令,它看起來很有效,但它沒有完成工作,我必須重新開始。我可以判斷它是否有效的方法是查看SQL Server IP資源的子網掩碼。如果它不是255.255.255.255那麼你知道它沒有成功運行。 它可能只是一個GUI刷新問題。請嘗試重新啟動群集GUI以驗證子網掩碼是否已更新。

成功運行後,使資源脫機並將其重新聯機以使更改生效。

創建負載均衡器

最後一步是創建負載均衡器。在這種情況下,我們假設您正在運行SQL Server的默認實例,偵聽端口1433。

創建負載均衡器時定義的專用IP地址將與SQL Server FCI使用的地址完全相同。

僅將兩個SQL Server實例添加到後端池。不要將FSW添加到後端池。

在此負載平衡規則中,您必須啟用浮動IP。

測試群集

最簡單的測試是在被動節點上打開SQL Server Management Studio並連接到群集。恭喜!你連接時你做的一切都正確!如果你無法連接,不要害怕。我寫了一篇博客文章來幫助解決問題。管理群集與管理傳統共享存儲群集完全相同。一切都通過故障轉移群集管理器控制。

可選 – 重定位TempDB

為獲得最佳性能,建議將tempdb移至本地非複制SSD。但是,SQL Server 2008 R2要求tempdb位於群集磁盤上。SIOS有一個稱為非鏡像卷資源的解決方案,可以解決這個問題。建議創建本地SSD驅動器的非鏡像卷資源並在那裡移動tempdb。請注意,本地SSD驅動器是非持久性的。您必須注意確保每次服務器重新啟動時都會重新創建包含tempdb的文件夾和該文件夾的權限。

在創建本地SSD的非鏡像卷資源後,請按照本文中的步驟重新定位tempdb。必須將該文章中描述的啟動腳本添加到每個群集節點。

經Clusteringformeremortals.com許可轉載

Filed Under: Datakeeper, 伺服器集群简单化

具有新Azure ILB功能的多實例SQL Server故障轉移群集

14 4 月, 2019 by Jason Aw Leave a Comment

新的Azure ILB功能允許您構建多實例SQL Server故障轉移群集

在今年9月的Microsoft Ignite上,微軟圍繞Azure發布了一些聲明。其中一個公告是內部負載平衡器上的多個VIP的普遍可用性。為什麼這對SQL Server DBA如此重要?好吧,到目前為止,如果要在Azure中部署高可用性SQL Server,則每個群集或單個可用性組偵聽器僅限於一個SQL Server FCI。此限制強制您為要在故障轉移群集中保護的每個SQL Server實例部署新群集。如果您希望在AlwaysOn AG配置中進行自動故障轉移和客戶端重定向,它還會強制您將所有數據庫分組到單個可用性組中。

如何擺脫這些限制?

這些新的ILB功能現已解除了這些限制。在這篇文章中,我將引導您完成在Azure中部署包含兩個SQL Server實例的SQL Server FCI的過程。在以後的文章中,我將引導您完成SQL Server AlwaysOn AG的相同過程。

讓我們從多實例SQL Server故障轉移群集開始

如我在Azure資源管理器中部署Microsoft SQL Server 2014故障轉移群集的帖子中所述,在Azure中構建基本的單實例SQL Server FCI。該帖子描述了創建多實例SQL Server故障轉移群集的過程。 使用DataKeeper創建群集中使用的複製卷資源,嘗試創建內部負載平衡器(ILB),然後修復SQL Server群集IP資源以使用ILB。如果您想跳過該過程并快速啟動配置,您可以始終使用Azure部署模板,使用SIOS DataKeeper創建雙節點SQL Server FCI假設您現在有一個基本的雙節點SQL Server FCI,添加第二個命名的步驟實例如下:

  1. 在另一個當前未使用的捲上創建另一個DataKeeper卷資源。如果沒有可用卷,則可能需要向Azure實例添加其他磁盤。作為此卷創建過程的一部分,新的DataKeeper卷資源將在群集中的可用存儲中註冊。有關詳細信息,請參閱前面引用的文章。
  2. 在第一個節點上安裝SQL Server的命名實例,指定我們剛剛創建的DataKeeper卷作為存儲位置。
  3. “添加節點”到第二個節點上的群集。
  4. 將此新命名實例的端口號鎖定到未使用的端口。在我的例子中,我使用端口1440。

將ILB調整為第二個實例

接下來,我們必須調整ILB以將流量重定向到第二個實例。以下是您需要遵循的步驟:添加前端IP地址,該地址與您用於第二個SQL Server實例的SQL群集IP地址相同,如下所示。具有新Azure ILB功能的多實例SQL Server故障轉移群集 接下來,我們將需要添加另一個探測,因為實例可以在不同的服務器上運行。如下圖所示,我添加了一個探測端口59998(而不是通常的59999)的探測器。我們需要確保新規則引用此探針。我們還需要記住該端口號,因為我們需要在此過程的最後一步更新與此實例關聯的IP地址。具有新Azure ILB功能的多實例SQL Server故障轉移群集 現在我們需要向ILB添加兩個新規則來引導目標為第二個SQL實例的流量。當然我們需要添加一個規則來重定向TCP端口1440(我用於SQL命名實例的端口),但由於我們現在使用的是命名實例,我們還需要一個端口來支持SQL Server Browser服務,UDP端口1434。在下面描述SQL Server Browser服務規則的圖片中,請注意前端IP地址引用了新的FrontendIP地址(10.0.0.201),端口和後端端口的UDP端口1434。在池中,您需要指定群集中的兩個服務器,最後確保選擇剛剛創建的新Health Probe。具有新Azure ILB功能的多實例SQL Server故障轉移群集 我們現在將添加TCP / 1440規則。如下圖所示,為端口TCP 1440添加新規則,或為SQL Server的命名實例鎖定的任何端口。同樣,請務必選擇新的FrontEnd IP地址和新的Health Probe(59998)。此外,請確保啟用了浮動IP(直接服務器返回)。具有新Azure ILB功能的多實例SQL Server故障轉移群集

最後一步

現在已配置負載均衡器,最後一步是運行PowerShell腳本以更新與此第二個SQL Server實例關聯的新群集IP地址。此PowerShell腳本只需要在其中一個群集節點上運行。

#定義變量

$ ClusterNetworkName =“”

#群集網絡名稱 
(在更高版本的Windows Server 2012上使用Get-ClusterNetwork查找名稱)

$ IPResourceName =“”

#SQL Server的第二個實例的IP地址資源名稱

$ ILBIP =“”

#第二個SQL實例的IP地址,
它應該與新的前端IP地址相同

導入模塊FailoverClusters

#如果您使用的是Windows Server 2012或更高版本:

Get-ClusterResource $ IPResourceName | 
Set-ClusterParameter -Multiple @ {Address = $ ILBIP; ProbePort = 59998;
子網掩碼=“255.255.255.255”網絡= $ ClusterNetworkName; EnableDHCP時= 0}

#如果您使用的是Windows Server 2008 R2,請使用以下命令:

#cluster res $ IPResourceName / priv enabledhcp = 0 address = $ ILBIP probeport = 59998  
子網掩碼= 255.255.255.255

您現在在Azure中擁有一個功能齊全的多實例SQL Server FCI。如果您有任何問題要構建具有從Clusteringformeremortals.com重現的新Azure ILB功能的多實例SQL Server故障轉移群集

Filed Under: Datakeeper, 伺服器集群简单化 Tagged With: 多實例SQL Server, 多實例sql server故障轉移群集

具有新Azure ILB功能的多實例SQL Server故障轉移群集

14 4 月, 2019 by Jason Aw Leave a Comment

新的Azure ILB功能允許您構建多實例SQL Server故障轉移群集

在今年9月的Microsoft Ignite上,微軟圍繞Azure發布了一些聲明。其中一個公告是內部負載平衡器上的多個VIP的普遍可用性。為什麼這對SQL Server DBA如此重要?好吧,到目前為止,如果要在Azure中部署高可用性SQL Server,則每個群集或單個可用性組偵聽器僅限於一個SQL Server FCI。此限制強制您為要在故障轉移群集中保護的每個SQL Server實例部署新群集。如果您希望在AlwaysOn AG配置中進行自動故障轉移和客戶端重定向,它還會強制您將所有數據庫分組到單個可用性組中。

如何擺脫這些限制?

這些新的ILB功能現已解除了這些限制。在這篇文章中,我將引導您完成在Azure中部署包含兩個SQL Server實例的SQL Server FCI的過程。在以後的文章中,我將引導您完成SQL Server AlwaysOn AG的相同過程。

讓我們從多實例SQL Server故障轉移群集開始

如我在Azure資源管理器中部署Microsoft SQL Server 2014故障轉移群集的帖子中所述,在Azure中構建基本的單實例SQL Server FCI。該帖子描述了創建多實例SQL Server故障轉移群集的過程。 使用DataKeeper創建群集中使用的複製卷資源,嘗試創建內部負載平衡器(ILB),然後修復SQL Server群集IP資源以使用ILB。如果您想跳過該過程并快速啟動配置,您可以始終使用Azure部署模板,使用SIOS DataKeeper創建雙節點SQL Server FCI假設您現在有一個基本的雙節點SQL Server FCI,添加第二個命名的步驟實例如下:

  1. 在另一個當前未使用的捲上創建另一個DataKeeper卷資源。如果沒有可用卷,則可能需要向Azure實例添加其他磁盤。作為此卷創建過程的一部分,新的DataKeeper卷資源將在群集中的可用存儲中註冊。有關詳細信息,請參閱前面引用的文章。
  2. 在第一個節點上安裝SQL Server的命名實例,指定我們剛剛創建的DataKeeper卷作為存儲位置。
  3. “添加節點”到第二個節點上的群集。
  4. 將此新命名實例的端口號鎖定到未使用的端口。在我的例子中,我使用端口1440。

將ILB調整為第二個實例

接下來,我們必須調整ILB以將流量重定向到第二個實例。以下是您需要遵循的步驟:添加前端IP地址,該地址與您用於第二個SQL Server實例的SQL群集IP地址相同,如下所示。具有新Azure ILB功能的多實例SQL Server故障轉移群集 接下來,我們將需要添加另一個探測,因為實例可以在不同的服務器上運行。如下圖所示,我添加了一個探測端口59998(而不是通常的59999)的探測器。我們需要確保新規則引用此探針。我們還需要記住該端口號,因為我們需要在此過程的最後一步更新與此實例關聯的IP地址。具有新Azure ILB功能的多實例SQL Server故障轉移群集 現在我們需要向ILB添加兩個新規則來引導目標為第二個SQL實例的流量。當然我們需要添加一個規則來重定向TCP端口1440(我用於SQL命名實例的端口),但由於我們現在使用的是命名實例,我們還需要一個端口來支持SQL Server Browser服務,UDP端口1434。在下面描述SQL Server Browser服務規則的圖片中,請注意前端IP地址引用了新的FrontendIP地址(10.0.0.201),端口和後端端口的UDP端口1434。在池中,您需要指定群集中的兩個服務器,最後確保選擇剛剛創建的新Health Probe。具有新Azure ILB功能的多實例SQL Server故障轉移群集 我們現在將添加TCP / 1440規則。如下圖所示,為端口TCP 1440添加新規則,或為SQL Server的命名實例鎖定的任何端口。同樣,請務必選擇新的FrontEnd IP地址和新的Health Probe(59998)。此外,請確保啟用了浮動IP(直接服務器返回)。具有新Azure ILB功能的多實例SQL Server故障轉移群集

最後一步

現在已配置負載均衡器,最後一步是運行PowerShell腳本以更新與此第二個SQL Server實例關聯的新群集IP地址。此PowerShell腳本只需要在其中一個群集節點上運行。

#定義變量

$ ClusterNetworkName =“”

#群集網絡名稱 
(在更高版本的Windows Server 2012上使用Get-ClusterNetwork查找名稱)

$ IPResourceName =“”

#SQL Server的第二個實例的IP地址資源名稱

$ ILBIP =“”

#第二個SQL實例的IP地址,
它應該與新的前端IP地址相同

導入模塊FailoverClusters

#如果您使用的是Windows Server 2012或更高版本:

Get-ClusterResource $ IPResourceName | 
Set-ClusterParameter -Multiple @ {Address = $ ILBIP; ProbePort = 59998;
子網掩碼=“255.255.255.255”網絡= $ ClusterNetworkName; EnableDHCP時= 0}

#如果您使用的是Windows Server 2008 R2,請使用以下命令:

#cluster res $ IPResourceName / priv enabledhcp = 0 address = $ ILBIP probeport = 59998  
子網掩碼= 255.255.255.255

您現在在Azure中擁有一個功能齊全的多實例SQL Server FCI。如果您有任何問題要構建具有從Clusteringformeremortals.com重現的新Azure ILB功能的多實例SQL Server故障轉移群集

Filed Under: Datakeeper, 伺服器集群简单化 Tagged With: 多實例SQL Server, 多實例sql server故障轉移群集

在Azure虛擬機上配置SQL Server故障轉移群集實例

4 4 月, 2019 by Jason Aw Leave a Comment

使用Msdtc #Sql #Azure #Msdtc在Azure虛擬機上配置SQL Server故障轉移群集實例

您可能知道我們已經包含了大量有關在Azure上構建SQL Server故障轉移群集實例(FCI)的分步指南,從SQL Server 2008到最新版本。這裡有一些鏈接可以幫助您入門。但實際上,不同版本的Windows和SQL Server之間的配置差別很小。所以我認為無論你使用什麼版本,你都能弄明白。循序漸進:如何配置MICROSOFT AZURE IAAS中的SQL SERVER FAILOVER CLUSTER INSTANCE(FCI)#SQLSERVER #AZURE #SANLESS逐步:如何配置SQL SERVER 2008 R2故障群集在AZURE中的實例我擁有什麼沒有解決的是如何處理MSDTC。微軟在這篇文章中發表了這篇文章。https://blogs.msdn.microsoft.com/sql_pfe_blog/2018/07/05/configure-sql-server-failover-cluster-instance-on-azure-virtual-machines-with-msdtc但是,僅限該文章/視頻解決SQL Server 2016及更高版本的問題。好消息是,大部分指南都可以應用於SQL Server 2008/2012/2014。在我有時間做一個正確的分步指導之前,我想記下一些基本的筆記,更多的是提醒自己。但是,您可能會發現此信息在此期間也很有用。以下步驟假定您已在Azure中創建了SQL Server FCI並對DTC資源進行了群集。有關這些步驟的詳細信息,請參閱上面的指南。以下步驟實際上只是詳細說明了Azure中所需的負載均衡器配置。

為MSDTC創建負載均衡器

MSDTC資源將需要其自己的負載均衡器。我們將向負載均衡器添加一個新的前端,而不是創建新的負載均衡器,該前端應該已經為SQL Server FCI配置。當然,此前端IP地址應與與群集MSDTC資源關聯的群集IP地址匹配。對於後端池,只需重用您創建的包含SQL集群節點的現有池。您需要創建一個專用於MSDTC資源的新健康探針。您使用的端口必須與您用於SQL資源的端口不同。不要使用59999。也許使用像49999這樣的東西。最後一步是為MSDTC創建負載平衡規則。創建一個新規則並引用我們剛剛創建的MSDTC前端和現有的後端。接下來,我們需要創建一個新的負載平衡規則。MSDTC使用臨時端口,這是一個很大的端口範圍。在創建規則時,必須選擇“HA Ports”框。最後,確保啟用了直接服務器返回。

更新MSDTC群集IP資源

像SQL Server群集IP地址一樣工作。我們需要運行一個Powershell命令,該命令將使MSDTC集群IP資源響應我們剛剛創建的探測端口49999的運行狀況探測。它還將該MSDTC群集IP地址的子網掩碼設置為255.255.255.255,以避免與我們設置的共享相同地址的負載均衡器前端發生IP地址衝突。

#define variables $ ClusterNetworkName =“”  
#群集網絡名稱(使用Get-ClusterNetwork) 
更高的Windows Server 2012查找MSDTC資源的名稱) 
$ IPResourceName =“”  
#MSDTC資源的IP地址資源名稱$ ILBIP =“”  
#內部負載均衡器(ILB)和MSDTC資源的IP地址 
導入模塊FailoverClusters 
#如果您使用的是Windows Server 2012或更高版本: 
Get-ClusterResource $ IPResourceName | SET-ClusterParameter 
-Multiple @ {Address = $ ILBIP; ProbePort = 49999; SubnetMask =“255.255.255.255”;
網絡= $ ClusterNetworkName; EnableDHCP時= 0} 
#如果您使用的是Windows Server 2008 R2,請使用以下命令:  
#cluster res $ IPResourceName / priv enabledhcp = 0 address = $ ILBIP probeport = 59999  
子網掩碼= 255.255.255.255

確認它正在工作!

您可以使用DTCPing或進入組件服務,並查看計算機>我的計算機>分佈式事務處理協調器,您應在其中看到本地DTC和群集DTC。任何分佈式事務都應出現在群集DTC中,而不是本地DTC中。查看此視頻,了解如何創建分佈式事務以進行測試的示例。

下一步

這是一個快速而骯髒的指南。對於有經驗的用戶,它應該在Azure中啟動並運行MSDTC資源。我將在不久的將來發布詳細的分步指南。在此期間,如果您遇到困難,請不要猶豫,在Twitter @daveberm上與我聯繫

經Clusteringformeremortals.com許可轉載

Filed Under: 伺服器集群简单化 Tagged With: SQL Server故障轉移群集實例

在Azure中配置SQL Server故障轉移群集實例的指南

31 3 月, 2019 by Jason Aw Leave a Comment

循序漸進:如何在Azure中配置SQL Server 2008 R2故障轉移群集實例

如果您需要指南在Azure中配置SQL Server故障轉移群集實例,您可能仍在使用SQL Server 2008/2008 R2。並且,如果將SQL Server 2008/2008 R2移動到Azure,則希望利用Microsoft提供的擴展安全更新。我之前在這篇博文中寫過關於這個主題的文章。您可能想知道如何在遷移到Azure後確保SQL Server故障轉移群集實例保持高可用性。今天,大多數人將業務關鍵型SQL Server 2008/2008 R2配置為其數據中心中的群集實例(SQL Server FCI)。在查看Azure時,您可能已經意識到由於缺少共享存儲,您似乎無法將SQL Server FCI引入Azure雲。然而,由於SIOS DataKeeper,情況並非如此。 SIOS DataKeeper使您能夠在Azure,AWS,Google Cloud或其他任何無法使用共享存儲的位置或您希望配置共享存儲無意義的多站點群集的位置構建SQL Server故障轉移群集實例。自1999年以來,DataKeeper一直在為Windows和Linux啟用SANless集群。Microsoft在其文檔中記錄了SIOS DataKeeper在SQL Server故障轉移群集實例中的使用:Azure虛擬機中SQL Server的高可用性和災難恢復。 我之前寫過有關SQL Server FCI在Azure中運行的文章,但我從未發布過特定於SQL Server 2008/2008 R2的循序漸進指南。好消息是它在SQL 2008/2008 R2和SQL 2012/2014/2016/2017以及即將發布的2019年一樣好用。此外,無論Windows Server(2008/2012/2016/2019)或SQL Server(2008/2012/2014/2016/2017)的版本如何,配置過程都足夠相似,本指南應足以讓您完成任何操作配置。如果我的任何指南都沒有涵蓋您的SQL或Windows風格,請不要害怕跳進並構建SQL Server FCI並參考本指南,我想您會發現任何差異,如果您遇到困難在Twitter @daveberm上與我聯繫,我很樂意幫助你。本指南使用SQL Server 2008 R2和Windows Server 2012 R2。截至撰寫本文時,我沒有在Windows Server 2012 R2上看到SQL 2008 R2的Azure Marketplace映像,因此我不得不手動下載並安裝SQL 2008 R2。我個人更喜歡這種組合,但如果您需要使用Windows Server 2008 R2或Windows 212,那就沒問題了。如果您使用Windows Server 2008 R2,請不要忘記安裝適用於Windows Server 2008 R2 SP1的kb3125574Convenience匯總更新。或者,如果您遇到Server 2012(而不是R2),則需要kb2854082中的修補程序。 不要被這篇文章所愚弄,該文章說你必須在SQL Server 2008 R2實例上安裝kb2854082。如果您開始搜索Windows Server 2008 R2的更新,您會發現只有Server 2012的版本可用。Server 2008 R2的特定修補程序包含在Windows Server 2008 R2 SP1的匯總便捷匯總更新中。

提供無效的實例

我不會在這裡詳細介紹一些屏幕截圖,特別是因為Azure門戶UI經常會經常更改,所以我拍攝的任何屏幕截圖都會很快變得陳舊。相反,我將只介紹您應該了解的重要主題。

故障域或可用區域?

為了確保您的SQL Server實例具有高可用性,您必須確保您的群集節點位於不同的故障域(FD)或不同的可用區(AZ)中。您的實例不僅需要駐留在不同的FD或AZ中,而且您的文件共享見證(見下文)也需要駐留在與您的群集節點所在的FD或AZ不同的FD或AZ中。這是我的看法。AZ是最新的Azure功能,但到目前為止它們僅在少數幾個地區得到支持。AZ給你一個更高的SLA(99.99%)然後FD(99.95%),並保護你免受我在我的Azure Outage Post-Mortem後期描述的那種雲中斷。 如果您可以在支持AZ的區域中部署,那麼我建議您使用AZ。在本指南中,我使用了AZ,當您進入有關配置負載均衡器的部分時,您會看到這些AZ。但是,如果使用FD,則所有內容都將完全相同,但負載均衡器配置將引用可用性集而不是可用區。

什麼是文件分享證明你問的?

Windows Server故障轉移群集(WSFC)要求您配置“見證”以確保故障轉移正常運行,而無需詳細說明。Windows Server Failover Clustering支持三種見證:磁盤,文件共享,雲。由於我們在Azure中,因此無法使用磁盤見證。Cloud Witness僅適用於Windows Server 2016及更高版本,因此我們可以使用文件共享見證。如果您想了解有關群集仲裁的更多信息,請查看Microsoft Press博客上的帖子,來自MVP:了解Windows Server 2012 R2中的Windows Server故障轉移群集仲裁

添加存儲到您的SQL Server實例

在配置SQL Server實例時,您需要為每個實例添加其他磁盤。最低限度,您需要一個磁盤用於SQL數據和日誌文件,一個磁盤用於Tempdb。在雲中運行時,是否應該為日誌和數據文件設置單獨的磁盤有些爭議。在後端,存儲全部來自同一個地方,您的實例大小限制了您的總IOPS。在我看來,分離日誌和數據文件確實沒有任何價值,因為您無法確保它們在兩個物理磁盤集上運行。我會留給你決定,但我把日誌和數據全部放在同一卷上。通常,SQL Server 2008 R2 FCI會要求您將tempdb放在群集磁盤上。但是,SIOS DataKeeper有一個非常好的功能,稱為DataKeeper非鏡像卷資源。本指南不包括將tempdb移動到此非鏡像卷資源,但為了獲得最佳性能,您應該執行此操作。真的沒有理由複制tempdb,因為它無論如何都是在故障轉移時重新創建的。就存儲而言,您可以使用任何存儲類型,但必要時盡可能使用託管磁盤。確保群集中的每個節點都具有相同的存儲配置。啟動實例後,您需要附加這些磁盤並將它們格式化為NTFS。確保每個實例使用相同的驅動器號。

聯網

這不是一個硬性要求,但如果可能的話,使用支持加速網絡的實例大小。此外,請確保在Azure門戶中編輯網絡接口,以便您的實例使用靜態IP地址。要使群集正常工作,您需要確保更新DNS服務器的設置,使其指向Windows AD / DNS服務器而不僅僅是某個公共DNS服務器。

安全

默認情況下,同一虛擬網絡中的節點之間的通信是敞開的,但如果您已鎖定Azure安全組,則需要知道必須在群集節點之間打開哪些端口並調整安全組。根據我的經驗,在Azure中構建群集時遇到的幾乎所有問題都是由阻塞的端口引起的。DataKeeper有一些端口需要在群集實例之間打開。這些端口如下:UDP:137,138 TCP:139,445,9999,以及10000到10025範圍內的端口故障轉移群集有自己的一組端口要求,我甚至不會嘗試在此處進行記錄。這篇文章似乎涵蓋了這一點。 http://dsfnet.blogspot.com/2013/04/windows-server-clustering-sql-server.html此外,稍後描述的Load Balancer將使用必須允許每個節點上的入站流量的探測端口。本指南中常用和描述的端口是59999。最後,如果您希望您的客戶端能夠訪問您的SQL Server實例,您需要確保您的SQL Server端口是打開的,默認情況下是1433。請記住,Windows防火牆或Azure安全組可以阻止這些端口,因此請務必檢查這兩個端口以確保它們可訪問。

加入域名

SQL Server 2008 R2 FCI的要求是實例必須駐留在同一Windows Server域中。因此,如果您還沒有這樣做,請確保已將實例加入Windows域

本地服務帳戶

安裝DataKeeper時,它會要求您提供服務帳戶。您必須創建域用戶帳戶,然後將該用戶帳戶添加到每個節點上的本地管理員組。在DataKeeper安裝期間詢問時,請將該帳戶指定為DataKeeper服務帳戶。注意 – 不要安裝DataKeeper!

域名全球安全組織

安裝SQL 2008 R2時,系統會要求您指定兩個全局域安全組。您可能希望展望SQL安裝說明並立即創建這些組。此外,創建域用戶帳戶並將它們放在每個安全帳戶中。您將指定此帳戶作為SQL Server群集安裝的一部分。

其他預先要求

您必須在兩個群集實例的每個實例上啟用故障轉移群集和.Net 3.5。啟用故障轉移群集時,還要確保啟用可選的“故障轉移群集自動化服務器”。 這是Windows Server 2012 R2中的SQL Server 2008 R2群集所必需的。

創建集群和DATAKEEPER卷資源

我們現在準備開始構建集群。第一步是創建基本群集。由於Azure處理DHCP的方式,我們必須使用Powershell創建集群,而不是集群UI。我們使用Powershell,因為它允許我們在創建過程中指定靜態IP地址。如果我們使用UI,則會看到VM使用DHCP並且它將自動分配重複的IP地址。因此,為了避免這種情況,讓我們使用Powershell,如下所示。

New-Cluster -Name cluster1 -Node sql1,sql2 -StaticAddress 10.0.0.100 -NoStorage

群集創建後,運行Test-Cluster。這在SQL Server安裝之前是必需的。

測試群集

您將收到有關存儲和網絡的警告。值得慶幸的是,您可以忽略Azure中SANless群集中的預期。但是,請在繼續之前解決任何其他警告或錯誤。創建群集後,您需要添加文件共享見證。在我們指定為文件共享見證的第三台服務器上,創建一個文件共享,並為我們剛剛創建的集群計算機對象提供讀/寫權限。在這種情況下,$ Cluster1將是在共享和NTFS安全級別都需要讀/寫權限的計算機對象的名稱。創建共享後,您可以使用配置群集仲裁嚮導(如下所示)配置文件共享見證。

安裝DATAKEEPER

在安裝DataKeeper之前等待創建基本集群非常重要,因為DataKeeper安裝會在故障轉移群集中註冊DataKeeper Volume Resource類型。如果你已經跳過槍並安裝了DataKeeper就可以了。只需再次運行安裝程序並選擇“修復安裝”。下面的屏幕截圖將引導您完成基本安裝。首先運行DataKeeper安裝程序。

您在下面指定的帳戶必須是域帳戶。它必須是每個群集節點上的Local Administrators組的一部分。

當提供SIOS許可證密鑰管理器時,您可以瀏覽到臨時密鑰。或者,如果您有永久密鑰,則可以復制系統主機ID並使用它來申請永久許可證。如果您需要刷新密鑰,SIOS許可證密鑰管理器是一個將安裝的程序,您可以單獨運行以添加新密鑰。

創建DATAKEEPER VOLUME RESOURCE

在每個節點上安裝DataKeeper後,您就可以創建第一個DataKeeper卷資源了。第一步是打開DataKeeper UI並連接到每個群集節點。

如果一切都正確完成,服務器概述報告應該如下所示。

您現在可以創建第一個Job,如下所示。

選擇源和目標後,您將看到以下選項。對於同一區域中的本地目標,您唯一需要選擇的是同步。

選擇“是”並將此卷自動註冊為群集資源。

完成此過程後,打開故障轉移群集管理器並查看磁盤。您應該在Available Storage中看到DataKeeper Volume資源。此時,WSFC將其視為普通的群集磁盤資源。

SLIPSTREAM SP3 ONTO SQL 2008 R2安裝媒體

SQL Server 2008 R2僅在帶有SQL Server SP2或更高版本的Windows Server 2012 R2上受支持。不幸的是,Microsoft從未發布過包含SP2或SP3的SQL Server 2008 R2安裝介質。相反,您必須在安裝之前將Service Pack整合到安裝介質上。如果您嘗試使用標準SQL Server 2008 R2媒體進行安裝,則會遇到各種問題。我不記得你會看到的確切錯誤。但我記得他們並沒有真正指出確切的問題。 你會浪費很多時間來弄清楚出了什麼問題。截至本文撰寫之日,Microsoft在Azure Marketplace中沒有帶有SQL Server 2008 R2產品的Windows Server 2012 R2。如果要在Azure中的Windows Server 2012 R2上運行SQL 2008 R2,請帶上自己的SQL許可證。如果他們稍後添加該圖像,或者您選擇在Windows Server 2008 R2映像上使用SQL 2008 R2,則必須先卸載現有的SQL Server獨立實例,然後再繼續。我按照本文選項1中的指導將SP3整合到我的SQL 2008 R2安裝介質上。您當然必須調整一些內容,因為本文引用的是SP2而不是SP3。確保在我們將用於群集的兩個節點的安裝介質上整合SP3。完成後,繼續下一步。

在第一個節點上安裝SQL SERVER

使用帶有SP3的SQL Server 2008 R2媒體進行整理,運行安裝程序並安裝群集的第一個節點,如下所示。

如果您使用除SQL Server的默認實例以外的任何其他內容,則本指南中將介紹一些其他步驟。最大的區別是您必須鎖定SQL Server使用的端口,因為默認情況下SQL Server的命名實例不使用1433。一旦鎖定端口,每當我們引用本指南中的端口1433時,您還需要指定該端口而不是1433,包括防火牆設置和Load Balancer設置。

這裡確保指定一個未使用的新IP地址。這是我們稍後在配置內部負載均衡器時將使用的相同IP地址。

正如我之前提到的,SQL Server 2008 R2使用AD安全組。如果您還沒有創建它們,請繼續創建它們,如下圖所示,然後再繼續執行SQL安裝中的下一步

指定先前創建的安全組。

確保您指定的服務帳戶是關聯的安全組的成員。

在此處指定SQL Server管理員。

如果一切順利,您現在可以在群集的第二個節點上安裝SQL Server。

在第二個節點上安裝SQL SERVER

在第二個節點中,運行帶有SP3安裝的SQL Server 2008 R2,然後選擇“將節點添加到SQL Server故障轉移群集實例”。

繼續安裝,如以下屏幕截圖所示。

假設一切順利,您現在應該配置一個雙節點SQL Server 2008 R2群集,其外觀如下所示。

但是,您可能會注意到只能從活動群集節點連接到SQL Server實例。問題是Azure不支持免費ARP。您的客戶端可能無法直接連接到群集IP地址。相反,客戶端必須連接到Azure負載均衡器,該負載均衡器將連接重定向到活動節點。要使此工作有兩個步驟:創建負載均衡器並修復SQL Server群集IP以響應負載均衡器探測並使用255.255.255.255子網掩碼。這些步驟如下所述。

創建AZURE負載平衡器

我將假設您的客戶端可以直接與SQL群集的內部IP地址通信。讓我們繼續在本指南中創建一個內部負載均衡器(ILB)。如果需要在公共Internet上公開SQL實例,請改用Public Load Balancer。在Azure門戶中,按照屏幕截圖創建一個新的Load Balancer,如下所示。Azure門戶UI快速變化。但是這些屏幕截圖應該為您提供足夠的信息來完成您需要做的事情。隨著我們的進展,我會召集重要的設置。在這裡,我們創建了ILB。在此屏幕上需要注意的重要事項是您必須選擇“靜態IP地址分配”。指定我們在SQL群集安裝期間使用的相同IP地址。由於我使用了可用區,我將Zone Redundant視為一種選擇。如果您使用可用性集,您的體驗將略有不同。

在後端池中,請確保選擇兩個SQL Server實例。您不希望在池中添加文件共享見證。

在這裡,我們配置健康探測器。大多數Azure文檔使用端口59999,因此我們將堅持使用該端口進行配置。

然後我們將添加一個負載平衡規則。在我們的示例中,我們希望將所有SQL Server流量重定向到活動節點的TCP端口1433。選擇浮動IP(直接服務器返回)為已啟用也很重要。

運行POWERSHELL腳本以更新SQL客戶端訪問點

現在,我們必須在其中一個群集節點上運行Powershell腳本,以允許Load Balancer Probe檢測哪個節點處於活動狀態。該腳本還將SQL群集IP地址的子網掩碼設置為255.255.255.255.255,以避免與我們剛剛創建的Load Balancer發生IP地址衝突。

#定義變量
$ ClusterNetworkName =“” 
#群集網絡名稱(在Windows Server 2012上使用Get-ClusterNetwork) 
更高的找到名字)
$ IPResourceName =“” 
#IP地址資源名稱 
$ ILBIP =“” 
#內部負載均衡器(ILB)和SQL群集的IP地址
導入模塊FailoverClusters
#如果您使用的是Windows Server 2012或更高版本:
Get-ClusterResource $ IPResourceName | SET-ClusterParameter 
-Multiple @ {Address = $ ILBIP; ProbePort = 59999; SubnetMask =“255.255.255.255”;
網絡= $ ClusterNetworkName; EnableDHCP時= 0}
#如果您使用的是Windows Server 2008 R2,請使用以下命令: 
#cluster res $ IPResourceName / priv enabledhcp = 0 address = $ ILBIP probeport = 59999  
子網掩碼= 255.255.255.255

如果正確運行,這就是輸出的樣子。

Windows服務器故障轉移群集

您可能會注意到,如果您在Windows Server 2008 R2上運行,該腳本的末尾會有一行註釋代碼。運行Windows Server 2008 R2?確保在命令提示符下運行特定於Windows Server 2008 R2的代碼,它不是Powershell。

下一步

如果你達到這一點,你不是第一個,你仍然無法遠程連接到群集。在安全性,負載均衡器,SQL端口等方面存在許多可能出錯的問題。我編寫本指南以幫助解決連接問題。事實上,我在SQL Server配置管理器中的SQL Server TCP / IP屬性方面遇到了一些奇怪的問題。當我查看屬性時,我沒有看到SQL Server群集IP地址作為其正在偵聽的地址之一。因此我必須手動添加它。我不確定這是不是異常。雖然在我從遠程客戶端連接到群集之前,我必須先解決這個問題。正如我之前提到的,您可以對此安裝進行的另一項改進是為TempDB使用DataKeeper非鏡像卷資源。       

 
 

Filed Under: Datakeeper, 伺服器集群简单化 Tagged With: SQL Server故障轉移群集

  • « Previous Page
  • 1
  • …
  • 64
  • 65
  • 66
  • 67
  • 68
  • …
  • 98
  • Next Page »

最近的帖子

  • 在 Nutanix 環境中選擇高可用性解決方案的 10 個注意事項
  • 我的伺服器是一次性的嗎?高可用性軟體如何適應雲端最佳實踐
  • 災難頻傳世界的資料復原策略
  • DataKeeper 與棒球:災難復原的策略性舉措
  • SQL Server 停機風險預算

最熱門的帖子

加入我們的郵件列表

Copyright © 2025 · Enterprise Pro Theme on Genesis Framework · WordPress · Log in