AlwaysOn侦听器端口配置

时间:2020-01-21 00:46:58

标签: sql-server port listener alwayson

我在应用程序端的AlwaysOn设置中无法连接到SQL Server 2016 SP1。

群集中有两个Windows服务器:

  • 节点A,IP地址x.x.x.3
  • 节点B,IP地址x.x.x.4

在每个节点上有两个SQL实例:

  • X使用端口14035
  • Y使用端口14033

因此,有4个实际的SQL实例A \ X,A \ Y,B \ X和B \ Y。现在,有两个AlwaysOn组:

  • 实例A \ X和B \ X的XAG,其侦听器使用默认端口1433并具有IP x.x.x.7
  • 使用侦听器使用默认端口1433并具有IP x.x.x.6的实例A \ Y和B \ Y的YAG

用户正在使用侦听器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实例(并排) 配置为在同一端口上侦听。

来源:https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover?view=sql-server-ver15

编辑 根本原因是群集所在的EPG上的ARP泛洪和未启用GARP检测。

0 个答案:

没有答案