在SQL Server故障轉移實例群集連接中排查Azure ILB連接問題
我使用以下工具來幫助我解決SQL Server故障轉移群集實例連接問題的疑難解答。特別是那些討厭的Azure ILB連接問題。每當我找到一個新工具時,我都會嘗試更新這篇文章。
NETSTAT
第一個工具是一個簡單的測試,用於驗證SQL群集IP是否正在偵聽它應該偵聽的端口。在這種情況下,SQL群集IP地址是10.0.0.201。但它使用的是端口1433的默認實例。
這裡是幫助你快速識別活動節點是否在該端口上偵聽的命令。在我們的情況下,一切看起來很正常
C: Users dave.SIOS> netstat -na |找到“1433”
TCP 10.0.0.4:49584 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49592 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49593 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.4:49595 10.0.0.201:1433 ESTABLISHED
TCP 10.0.0.201:1433 0.0.0.0:0聽
ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49592 ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49593 ESTABLISHED
TCP 10.0.0.201:1433 10.0.0.4:49595 ESTABLISHED
一旦我確定SQL正在監聽正確的端口,我使用PSPING嘗試遠程連接到端口。
PSPING
PSPing是Microsoft提供的PSTools軟件包的一部分。我通常下載該工具並將PSPing直接放在我的System32文件夾中,這樣我就可以隨時使用它而無需更改目錄。
現在,假設從ILB,集群和防火牆的角度來看,所有配置都是正確的,那麼您應該能夠從被動服務器ping SQL集群IP地址和端口1433。你會得到下面顯示的結果…
C: Users dave.SIOS> psping 10.0.0.201:1433
PsPing v2.01 - PsPing - ping,延遲,帶寬測量工具
Copyright(C)2012-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
TCP連接到10.0.0.201:1433:
5次迭代(熱身1)連接測試:
連接到10.0.0.201:1433(熱身):6.99ms
連接到10.0.0.201:1433:0.78ms
連接到10.0.0.201:1433:0.96ms
連接到10.0.0.201:1433:0.68ms
連接到10.0.0.201:1433:0.89ms
如果事情沒有正確配置,您可能會看到與以下類似的結果...
C: Users dave.SIOS> psping 10.0.0.201:1433
TCP連接到10.0.0.102:1433:
5次迭代(熱身1)連接測試:
連接到10.0.0.102:1433(預熱):
由於超時期限到期,此操作返回。
連接到10.0.0.102:1433(預熱):
由於超時期限到期,此操作返回。
連接到10.0.0.102:1433(預熱):
由於超時期限到期,此操作返回。
連接到10.0.0.102:1433(預熱):
由於超時期限到期,此操作返回。
連接到10.0.0.102:1433(預熱):
由於超時期限到期,此操作返回。
如果PSPing連接,但您的應用程序連接出現問題,則可能需要深入一點。我見過像Great Plains這樣的應用程序也想連接到445端口。如果您的應用程序無法連接,但PSPing可以很好地連接到1433。然後,您可能需要執行網絡跟踪並查看應用程序嘗試連接的其他端口。最後一步是為這些端口添加負載平衡規則。
命名實例
計劃使用命名實例?您需要確保鎖定TCP服務以使用靜態端口。 同時,您還需要確保向負載平衡器添加規則,以重定向SQL瀏覽器服務的UDP 1434。否則,您將無法連接到您的命名實例。
FIREWALL
打開TCP端口1433和59999應該涵蓋所有需要的手動步驟。但是,在解決連接問題時,我通常關閉Windows防火牆以消除防火牆,將其視為問題的可能原因。別忘了。Azure還有一個稱為網絡安全組的防火牆。如果有人將其從可能阻止流量的默認設置改變。
姓名解析
嘗試ping SQL集群名稱。它應該解析為SQL Server群集iP地址。儘管我已經看到過幾次,但與SQL群集網絡名稱關聯的DNS A記錄神奇地從DNS中消失。如果是這種情況,請繼續閱讀 – 在SQL中將SQL Custer名稱和IP地址作為A記錄進行讀取。
SQL配置管理器
在SQL配置管理器中,您應該看到列出的SQL群集IP地址和端口1433。如果碰巧你安裝了一個命名實例,你當然需要進入這裡並將端口鎖定到一個特定的端口,並使你的負載平衡規則反映該端口。由於Azure ILB僅限於每個AG的ILB限制,所以實際上我沒有看到使用命名實例的有效理由。讓自己更容易,只使用SQL的默認實例。(更新:截至2016年10月,每個ILB可以有多個IP地址,因此您可以在群集中安裝多個SQL實例。)
經過Clustering For Mere Mortals的許可轉載。