銷售: 1-800-867-1380

針對 Azure 中的可用性群組接聽程式進行疑難排解

更新日期: 2013年12月

由於 Azure 網路的複雜性和限制的緣故,在 Azure 中設定可用性群組接聽程式要比在內部部署環境更為複雜許多。本主題將協助您針對可用性群組接聽程式進行疑難排解,不論您的 AlwaysOn 可用性群組部署僅位於 Azure 還是位於使用網站間 VPN 的混合式 IT 環境中。

接聽程式組態中的某些步驟牽涉到 Azure 本身的組態,例如負載平衡的虛擬機器 (VM) 端點和 Direct Server Return。但是,Azure 目前不提供任何工具來協助驗證您的組態是否按預期方式運作。因此,您需要網路分析器來協助驗證您的組態以及排除任何問題。本主題將為您示範如何使用 Microsoft Network Monitor,針對您的可用性群組接聽程式進行疑難排解。

本節提供以下內容:

 

負載平衡的端點 (在 Azure 中設定) VM 內的組態 用戶端連接性組態
  • 設定在屬於可用性複本的所有 VM 上。

  • 公用連接埠和本機連接埠應該相同。

  • Azure 負載平衡器會使用探查連接埠來判斷哪一部伺服器為主要複本。

  • Direct Server Return (DSR) 允許與 VM 之間的直接用戶端連接。

  • 在所有叢集節點上設定 (包括不屬於可用性群組的仲裁節點):

    • 安裝必要的 Hotfix (Windows 版專屬)

  • 設定在屬於可用性複本的所有 VM 上:

    • 在防火牆中開啟探查連接埠

    • 在防火牆中開啟接聽程式連接埠

  • 在具有主要複本的電腦或 VM 上設定 (在混合式 IT 中,主要複本應該是內部部署)

    • 為可用性群組叢集服務建立用戶端存取點

    • 設定具有雲端服務 IP 的 IP 位址資源、叢集網路名稱和探查連接埠

    • 設定對 IP 位址、接聽程式名稱和接聽程式資源的相依性

    • 在 SQL Server Management Studio 中指定接聽程式連接埠

  • 如果用戶端在 Azure VM 上,請將 VM 置於另一個雲端服務中

  • 如果是相同 Active Directory 網域中的用戶端,請連接至設定的接聽程式名稱和連接埠號碼。

  • 如果是 Azure 外面的用戶端,請設定登入逾時來配合網路延遲。

若要判斷負載平衡之端點上的探查連接埠是否在 Azure VM 上正常運作,請使用網路監視器來篩選探查連接埠上的封包擷取。

當負載平衡的端點已適當設定時,Azure 負載平衡器會持續 Ping 每個 VM 以判斷該 VM 是否有主要複本,好讓它可以將用戶端連接路由傳送到正確的 VM。如果 VM 是主要複本,則叢集服務會設定探查連接埠並回應探查 Ping。網路監視器中可以看到這個流量,只要在 [顯示篩選] 窗格中套用以下篩選條件來執行封包擷取:

TCP.DstPort == 59999 OR TCP.SrcPort == 59999

第一個子句會從 Azure 負載平衡器擷取連入的 Ping,第二個子句會擷取主要複本的回應。底下的螢幕擷取畫面說明了當您在 Azure 中的主要複本上執行封包擷取時,所看到的情形:

Con Id 欄顯示與相同探查 Ping 相關的封包 (顯示為黃色)。來自 VM 的回應訊息藉由將 Seq 值中的 Ack 值遞增來認可每一則 Ping 訊息。您也可以看到負載平衡器的來源 IP 位址 (顯示為橙色)。

如果您未看到 VM 的任何回應訊息,而看到來自負載平衡器的 SynReTransmit 訊息,則表示 VM 並未回應負載平衡器,這意味著它並不是主要複本或探查 Ping 並未如預期般運作。

若要判斷可用性群組接聽程式是否在 Azure VM 上正常運作,請使用網路監視器來篩選接聽程式連接埠上的封包擷取。

當用戶端嘗試使用雲端服務的 IP 位址和接聽程式連接埠連接到可用性群組接聽程式時,Azure 會驗證連接埠是否與負載平衡的端點中的設定相同,並允許 TCP 連接到主要複本 (主要複本已經回應探查 Ping)。如果 VM 的防火牆有對應的規則,則會適當地設定用戶端存取點,而且會在您的可用性群組中設定接聽程式連接埠,可用性群組接聽程式會接受連接,用戶端就可以執行更新和查詢。網路監視器中可以看到這個流量,只要在 [顯示篩選] 窗格中套用以下篩選條件來執行封包擷取 (假設接聽程式連接埠為 10000):

TCP.DstPort == 10000 OR TCP.SrcPort == 10000

底下的螢幕擷取畫面說明了當您在 Azure 中成功連接到可用性群組接聽程式及執行單一查詢時,所看到的情形。

Con Id 欄顯示與相同用戶端連接相關的封包 (顯示為黃色)。在從 VM 傳送的封包中,您可以看到有關用戶端的主機名稱、網域和使用者名稱的資訊 (顯示為紅色)。您也可以看到用戶端在網際網路上的 IP 位址 (顯示為橙色)。在此案例中,它是不同雲端服務中的用戶端 VM,所以顯示的 IP 位址為用戶端 VM 的雲端服務 IP 位址。

下表列出當針對 Azure 中的可用性群組接聽程式進行疑難排解時的常見徵兆,以及每個徵兆的可能原因。

Tip提示
Windows Ping.exe 命令無法在 Azure 中的可用性群組接聽程式上使用。當 Ping.exe 使用 ICMP 時,負載平衡的端點只接受 TCP 連接。

 

徵兆 可能的原因 註解

探查連接埠上沒有流量 (59999)

  • 未設定負載平衡的端點

  • 未針對負載平衡的端點設定探查連接埠

  • 未開啟 VM 上的防火牆供探查連接埠使用

探查連接埠會接收 Ping 和 SynReTransmit 封包,但沒有回應

  • 目前的 VM 不是主要複本

  • 用戶端存取點中的 IP 位址資源未設定探查連接埠,或者 IP 位址資源內指定了與負載平衡的端點不同的探查連接埠

  • 用戶端存取點內的 IP 位址資源已離線

這個徵兆表示,負載平衡的端點中已適當設定探查連接埠,而且 VM 防火牆已允許連入封包。若要測試叢集服務是否在所要的連接埠上接聽,請在主要複本上的命令提示字元中執行 netstat -ab,並在清單中搜尋 rhs.exe。

接聽程式連接埠上沒有流量

  • 負載平衡的端點中的 DSR 未設定為 true

  • 負載平衡的端點中的公用連接埠和本機連接埠不同 (不支援)

  • 負載平衡的端點上設定了網路存取控制清單 (ACL),但是用戶端的公用 IP 位址不被允許或者不屬於允許範圍的一部分。

  • 用戶端未使用連接字串中的連接埠號碼,或者使用不同的連接埠號碼

  • 未開啟 VM 上的防火牆供接聽程式連接埠使用

接聽程式連接埠應該符合負載平衡的端點上所指定的公用/本機連接埠。

如需有關 Azure 中網路 ACL 的詳細資訊,請參閱關於網路存取控制清單 (ACL)

接聽程式連接埠會接收連入流量和 SynReTransmit 封包,但沒有回應

  • 叢集的用戶端存取點設定了不正確的相依性

  • 用戶端存取點中的 IP 位址資源包含了不正確的叢集網路名稱 (預設為「叢集網路 <#>」)

  • 接聽程式在 SQL Server Management Studio 中未設定連接埠號碼或者設定了不正確的連接埠號碼。

這個徵兆表示,負載平衡的端點已適當設定而且 Azure 負載平衡器已成功將用戶端的連接要求路由傳送到主要複本,但是目前沒有接聽程式主動接聽該連接埠。若要測試接聽程式是否在所要的連接埠上接聽,請在主要複本上的命令提示字元中執行 netstat -ab,並搜尋 sqlservr.exe。

為用戶端存取點設定相依性的常見錯誤就是將可用性群組資源設定為與 IP 位址資源相依。您應該將接聽程式名稱設定為與 IP 位址相依,並將可用性群組資源設定為與接聽程式名稱相依。

接聽程式只能從主要複本節點本身存取

  • 用戶端連接已將本機伺服器辨識為可用性群組資源擁有者,而且完全略過負載平衡的端點

  • 用戶端並未在不同的雲端服務 (不支援)

用戶端在容錯移轉之後喪失了與接聽程式的連接

  • 未開啟新的主要複本上的防火牆供探查連接埠 (Azure 負載平衡器找不到新的主要複本) 或接聽程式連接埠 (防火牆拒絕了用戶端連接) 使用。

  • 用戶端並未在不同的雲端服務 (不支援)

  • 可用性群組資源已離線

用戶端存取點內的所有 IP 位址資源已離線,但是接聽程式名稱在線上

  • 接聽程式名稱未設定為與 IP 位址資源相依

接聽程式名稱已離線,但是可用性群組資源在線上

  • 可用性群組資源未設定為與接聽程式名稱相依

至少有一個 IP 位址在線上,但是接聽程式名稱已離線

  • 接聽程式名稱未針對所有 IP 位址設定為 OR。

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
顯示:
© 2014 Microsoft