在我的场景中,每个服务器中有两个服务器,其中两个是Server实例:
我在以下实例之间创建了可用性组:
我创造了两个听众:
问题是,当我试图连接侦听器1时,它会将我连接到可用性组1,但当我尝试使用Listener 2时,它也会将我连接到可用性组1,而不是可用性组2。
我不明白我做错了什么。
发布于 2019-05-06 10:24:28
的TCP端口配置造成的。
如果Server的一个实例已通过实例侦听器侦听TCP端口1433,并且在侦听端口1433的计算机上没有其他服务(包括Server的其他实例),则这不会导致与可用性组侦听器发生端口冲突。这是因为可用性组侦听器可以在同一服务进程中共享相同的TCP端口。但是,不应将Server的多个实例(并排)配置为在同一端口上侦听。
简而言之,只要将实例的tcp端口更改为1533、1633等不同的端口,就可以让两个侦听器监听端口1433。
您还可以使用与1433不同的端口号,但是需要在连接字符串(S)中指定这些端口号。
在“一个实例,一个侦听器”的情况下,您可以对两者使用相同的端口。
发布于 2019-05-07 00:25:14
最可能的原因是您的端口配置。每个服务器上至少有一个实例将运行在一个非标准端口上(除了1433),但是如果您的两个侦听器都配置了默认配置,它们将监听端口1433。这将导致端口冲突,而先启动并开始侦听该端口的SQL实例将响应连接。
根据您的描述,我推测两个服务器上的实例1都在监听端口1433,而两个侦听器也在监听。当您通过任一侦听器名称进行连接时,它在端口1433上连接,在这两种情况下都是实例1,因为您不能跨Server实例共享端口。
要解决此问题,首先应将Server实例配置为使用非默认端口(链接)。最后,您应该重新配置侦听器以使用不同的端口(链接)。侦听器端口可以与实例端口相同,但它们不能与同一服务器上的其他实例或侦听器发生冲突。因此,监听器1可以使用与实例1相同的端口,但必须与实例2和侦听器2不同。
注意,当使用非默认端口时,需要在连接字符串- Server=tcp:Listener1,1456;Database=MyDB;IntegratedSecurity=SSPI中指定端口号。
https://dba.stackexchange.com/questions/237470
复制相似问题