Прерывистые тайм-ауты при подключении к прослушивателю группы доступности
У меня есть база данных в группе доступности SQL Server, работающая на сервере базы данных.
Если я захожу на свой веб-сервер и подключаюсь к основной базе данных напрямую по IP-адресу сервера базы данных, то соединение происходит мгновенно.
Если я вместо этого подключусь к первичной базе данных по имени прослушивателя группы доступности или по IP-адресу прослушивателя группы доступности, он будет подключаться мгновенно 1 из каждых 4 раз, а другой - по тайм-ауту. 3. Мгновенный тайм-аут против случайного.
Мы запускаем SQL Server 2014 на виртуальных машинах Azure, если это связано. Я уже 8 часов, поэтому любая помощь будет принята с благодарностью!
1 ответ
Похоже, что проблема оказалась связана с DNS. Когда я изменил URL-адрес конечной точки группы доступности на внутренний IP-адрес вместо полного доменного имени, проблема была решена. Так что для любого, кто ударит это, это то, что можно попробовать (может быть применимо и к маршрутизации только для чтения). Пара операторов 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 моей сети не разрешал это по внутреннему адресу, и вместо этого он был подхвачен DNS-записью Route53 подстановочного знака DNS для домена. Если я это выясню, я опубликую это на всякий случай, если это будет полезно. Спасибо Бруно за помощь ранее!