Sql-Server

DNN 偵聽器解析到 WSFC 和 AO AG 中的輔助伺服器

  • November 1, 2021

我有一個 Azure AO AG,它由三台伺服器(所有 WS-2019 和 SQL-2019 CU8)組成:

  • A - 子網 1 - 主體伺服器(同步)
  • B - 子網 1 - 輔助伺服器(同步)
  • C - 子網 2 - 輔助伺服器(非同步)

我已經在資源上創建了一個 DNN 偵聽器,它看起來正在執行,但是當我連接到偵聽器時,它解析到伺服器 C。我已經確認在集群和 AG 中,伺服器 A 是主體。我嘗試故障轉移到伺服器 B,這似乎工作正常,但偵聽器仍然只解析到伺服器 C。

我拿出了集群日誌,我收到了一個警告,它似乎沒有出現在Google上:

2020/11/12-15:27:48.720 WARN [RES] Distributed Network Name <6789>: Configuration: Obtaining exclude networks failed with error 2.

如果 SQL Server 使用此埠,則 DNN 偵聽器不支持預設 1433 SQL 埠。

此外,如果單個集群範圍內有多個具有 DNN 偵聽器的 AG,則應使用唯一的自定義埠配置每個 DNN 偵聽器。應將自定義埠添加到所有 AG 節點上的防火牆例外。使用 SSMS 連接時,需要指定為 DNN 偵聽器配置的自定義埠,格式為:DNSName,port。最好在 SSMS 連接屬性中明確指定 AG 數據庫,在 Additional Connection 參數中明確指定 MultiSubnetFailover=True。這對我有用。

謝爾蓋

分佈式網路名稱類似於多子網故障轉移群集中的 AG 偵聽器。它使用多個 IP 地址在 DNS 中註冊。

從 DNS 解析名稱的客戶端將收到一個 IP 地址列表,並且需要客戶端邏輯來選擇正確的地址。SQL Server 客戶端驅動程序使用 MultiSubnetFailover 連接字元串和透明網路 IP 解析功能作為備份來執行此操作。而且邏輯很簡單。客戶端將連接到已打開目標埠的 IP 地址之一。因此,DNN 必須使用集群中沒有 SQL Server(或其他程序)正在偵聽的埠。

如果您使用 ping.exe、telnet 或 test-netconnection 之類的東西進行測試,它只會連接到從 DNS 返回的第一個IP 地址,這可能不是主節點。

引用自:https://dba.stackexchange.com/questions/279628