Availability-Groups

改善 AlwaysOn 故障轉移時間

  • November 26, 2016

我已經在不同的子網上設置了一個帶有主副本和輔助副本的 AlwaysOn,但我被迫使用 Registerallprovidersip 設置為 1。這導致偵聽器在 DNS 中只有 0 個 IP 地址,這意味著我在受 DNS 複製的支配時發生故障轉移事件,因為偵聽器的 IP 需要一段時間才能更新。

有沒有人在類似的情況下找到了改善故障轉移時間的方法?

您應該在更改記錄的生存時間 (TTL) 的同時修改 registerallprovidersip 設置。

如果不修改預設 TTL,註冊的生命週期太長。遺憾的是,仍然存在延遲,但顯著降低 TTL 有幫助。

理想情況下,您應該了解如何讓客戶端連接指定多子網故障轉移,而不必執行此解決方法。但是隨著 TTL 的降低,你應該沒問題,我已經和幾個客戶一起做了,一切都很好。它仍然不會是瞬時的。

您可以在此處查看有關這些設置相互配合工作的更多資訊。

我處於類似情況……其中我們受到 DNS 更新的支配,我的公司有 20 分鐘的全球政策。我們有[HostRecordTTL] = 300 and [RegisterAllProvidersIP] = 0由於遺留應用程序。

下面的腳本將為所有主副本(故障轉移後的主副本)生成命令:

##### Author: Kin Shah ##############################################################
#run below tsql to update the cluster network name when the failover happens.
# In my company the global DNS cache updates every 20 mins .. 
# This was used to re-register / force the Listener device register with the local DC
# registers the Network Name resources of the local cluster with a DNS server  and does not interrupt cluster availability.
#CommandToRun_PowerShell column in the script output will provide the command to be run on the primary replica (the primary after failover) !

SELECT
  'Get-ClusterResource ' +AGC.name+'_'+AGL.dns_name + ' | Update-ClusterNetworkNameResource' as CommandToRun_PowerShell-- this is the meat !!
, RCS.replica_server_name
, ARS.role_desc
, AGL.dns_name
FROM
sys.availability_groups_cluster AS AGC
 INNER JOIN sys.dm_hadr_availability_replica_cluster_states AS RCS
  ON
   RCS.group_id = AGC.group_id
 INNER JOIN sys.dm_hadr_availability_replica_states AS ARS
  ON
   ARS.replica_id = RCS.replica_id
 INNER JOIN sys.availability_group_listeners AS AGL
  ON
   AGL.group_id = ARS.group_id
WHERE
ARS.role_desc = 'PRIMARY'

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