我在应用程序端的AlwaysOn设置中无法连接到SQL Server 2016 SP1。
群集中有两个Windows服务器:
在每个节点上有两个SQL实例:
因此,有4个实际的SQL实例A \ X,A \ Y,B \ X和B \ Y。现在,有两个AlwaysOn组:
用户正在使用侦听器XAG报告应用程序的经常性连接问题。我没有从连接到XAG的第二个应用程序的用户和连接到YAG的第二个应用程序的用户获得类似的反馈。根据检查,每次侦听器都处于联机状态,但是XAG侦听器将变得无响应。通过设法使它(侦听器)脱机并从Cluster Manager中手动使其联机,我们设法找到了临时解决方法。
我注意到扩展事件中的多个连接超时错误和自动故障转移。事件查看器中没有相关的错误。
我的一般假设是,当两个AG组在一个Windows服务器上都具有主副本时,存在端口冲突,因为它们是使用同一端口的不同进程的一部分。我知道他们为侦听器使用了不同的IP地址,但是它们又属于两个不同的SQL实例,这些实例的IP地址为同一Windows节点,并且使用相同的默认端口。我的假设是正确的还是我错了?还是我们应该更深入地研究网络配置-ARP表等?
我的假设基于MS文档:
如果将默认端口1433用于可用性组侦听器VNN,则仍然需要确保群集节点上没有其他服务正在使用此端口;否则,这将导致端口冲突。
如果SQL Server实例之一已经在侦听TCP端口 1433通过实例侦听器,没有其他服务 (包括SQL Server的其他实例)在计算机上 监听端口1433,这不会导致与 可用性组侦听器。这是因为可用性组 侦听器可以在同一服务进程内共享同一TCP端口。 但是,不应同时使用多个SQL Server实例(并排) 配置为在同一端口上侦听。
编辑 根本原因是群集所在的EPG上的ARP泛洪和未启用GARP检测。