Sql-Server-2014
故障轉移後偵聽器 IP 未更改
我們有一個多子網 AlwaysOn 可用性組。有 2 個子網,它們都列在集群和偵聽器上。每當我通過偵聽器名稱進行故障轉移和 ping 操作時,它仍會顯示故障轉移之前的舊 IP 地址。任何專家意見來克服這一點將不勝感激。我已設置 RegisterAllProvidersIP -Value 1。
故障轉移後,客戶端無法連接,因為偵聽器正在獲取舊 IP 地址。幾分鐘後,它會選擇正確的一個並且客戶端連接。
由於 DNS 記錄上的生存時間 (TTL),會發生此行為。客戶端不會在每次嘗試連接到伺服器時進行 DNS 查找。它首先在其 DNS 記憶體中查找是否有記憶體條目。您可以通過執行查看記憶體中的內容
ipconfig /displaydns
。執行此命令後,您將在每條記錄上看到“生存時間”屬性。這表明記錄將保持記憶體的秒數。因此,在舊記錄超時記憶體之前,您的客戶端將不會連接到新 IP 地址。如果您深入研究 Microsoft 文件,他們建議將偵聽器 DNS 記錄的生存時間設置為 5 分鐘,以最大限度地減少這種延遲。
此外,如果使用的 SQL 客戶端支持“多子網故障轉移”,則需要啟用該選項。啟用此選項後,客戶端將嘗試連接到為偵聽器名稱註冊的所有 IP 地址。因此,為了使其正常工作,您將始終為偵聽器主機名註冊兩個 IP 地址。