连接到可用性组侦听器时间歇性超时

连接到可用性组侦听器时间歇性超时

我在数据库服务器上运行的 SQL Server 可用性组中有一个数据库。

如果我登录到我的 Web 服务器并通过数据库服务器 IP 直接连接到主数据库,则每次连接都是即时的。

如果我通过可用性组侦听器名称或可用性组侦听器的 IP 连接到主数据库,它将每 4 次中有 1 次立即连接,而其他 3 次则超时。即时与超时似乎是随机的。

如果相关的话,我们正在 Azure VM 上运行 SQL Server 2014。我已经花了 8 多个小时,所以任何帮助都将不胜感激!

答案1

看来问题与 DNS 有关。当我将可用性组端点 URL 更改为内部 IP 地址而不是 FQDN 时,问题就解决了。因此,对于遇到此问题的其他任何人来说,这都是值得尝试的(也可以适用于只读路由)。以下几条 SQL 语句可能会有所帮助:

查询当前设置

SELECT ag.name as "Availability Group", ar.replica_server_name as "When Primary Replica Is", rl.routing_priority as "Routing Priority", ar2.replica_server_name as "RO Routed To",  ar.secondary_role_allow_connections_desc, ar2.read_only_routing_url ,*
FROM sys.availability_read_only_routing_lists rl inner join sys.availability_replicas ar on rl.replica_id = ar.replica_id inner join sys.availability_replicas ar2 on rl.read_only_replica_id = ar2.replica_id inner join sys.availability_groups ag on ar.group_id = ag.group_id ORDER BY ag.name, ar.replica_server_name, rl.routing_priority

更新端点 URL

ALTER AVAILABILITY GROUP [AvailabilityGroupName] 
MODIFY REPLICA ON 'ReplicaName' WITH (ENDPOINT_URL = 'TCP://<Internal IP>:<Port>')

我还不确定为什么会出现这种情况,或者为什么我的网络 DNS 没有将其解析为内部地址,而是被域的通配符 Route53 DNS CNAME 记录接收。如果我弄清楚了,我会发布它,以防它有用。感谢 Bruno 之前的帮助!

相关内容