连接 AlwaysOn AG 侦听器问题

erd*_*ola 7 sql-server availability-groups connectivity active-directory sql-server-2014

我是微软技术的新手,我在 SQL Server 2014 的连接部分遇到了问题。这可能是一个简单的问题,但我被卡住了。

我有4台服务器。其中之一是 Active Directory 域控制器,一个是应用程序服务器,另一个用于 SQL Server。由于这是一个连接问题,服务器的 IP 是; -AD DC:10.6.0.100(也是 DNS 服务器) -APP:10.6.0.110 -SQL 1:10.6.0.120 -SQL 2:10.6.0.121

我已经成功创建了一个故障转移集群 (DBCLUSTER) 并将 FC 的 IP 地址设置为10.6.0.130(这不是实际的服务器 IP,我真的不明白这部分..)。

后来,我为 sql 服务器创建了一个 AlwaysOn 可用性组。我已经成功创建了没有侦听器的 AG。我可以从彼此连接到服务器,数据库同步没有问题。然后,我创建了一个监听器(AG侦听),并设置它的IP为10.6.0.131(这是实际的服务器IP,?)和它的端口设置为5525。它没有给任何问题。

所以我想测试连通性。当我想从APP服务器直接连接到SQL 1SQL 2 时,我可以毫无问题地连接。但是当我尝试连接到AG-LISTENER 时,它在网络上找不到它。当我检查 DNS 记录时。我可以看到它托管在10.6.0.131 上

当我尝试从AD-DC、APP、SQL 2服务器ping AG-LISTENER 时,它响应目标主机无法访问(它正在 ping 10.6.0.131,但响应来自 AD-DC、APP 和 SQL 2 的 IP)服务器)。它可以从 SQL 1 服务器连接,这是 AG 的主要服务器。

我检查了防火墙,没有问题。但我认为这是一个我不知道的网络问题。

PS:服务器在 Windows Server 2012 上运行,而不是托管在 Azure 上。

解决方案

问题的原因是服务提供商的网络拓扑。发现IP的10.6.0.0/32可以被其他客户的其他服务器使用。所以他们为我们分配了另一个只有我们可以访问的 IP 块,它的作用就像一个魅力。

Tho*_*ger 5

它可以从 SQL 1 服务器连接,这是 AG 的主要服务器。

通过“连接”,您的意思是它可以从ping 吗?AG-LISTENERSQL1

听起来您的问题可能出在您为侦听器选择的端口号上。通过选择 5525,您选择了一个非默认端口(1433 将是默认端口)。

那么当您尝试连接到侦听器时,您的连接字符串是什么样的?我猜它看起来像这样:

data source = ag-listener; initial catalog = ...
Run Code Online (Sandbox Code Playgroud)

您在这里有两个选择。您可以明确使用侦听器的端口号:

data source = ag-listener,5525; initial catalog = ...
Run Code Online (Sandbox Code Playgroud)

同样,如果您使用 SQL Server Management Studio (SSMS) 对此进行测试,那么对于“连接到服务器”对话框,不要ag-listener输入“服务器名称”文本框,而是输入ag-listener,5525.

或者,您可以将侦听器正在侦听的端口更改为 1433(在考虑此更改之前,请阅读以下 BOL 参考):

alter availability group YourAvailabilityGroupName
modify listener 'AG-LISTENER'
(
    port = 1433
);
Run Code Online (Sandbox Code Playgroud)

值得注意的是何时可以使用默认端口(1433)。看一下BOL 上的参考资料,解释何时可以和不可以将 1433 用于侦听器(摘录复制/粘贴如下以供参考):

您可以将默认端口配置为 1433,以便简化客户端连接字符串。如果使用 1433,则无需在连接字符串中指定端口号。此外,由于每个可用性组侦听器将具有单独的虚拟网络名称,因此可以将在单个 WSFC 上配置的每个可用性组侦听器配置为引用相同的默认端口 1433。

(为简洁起见省略了部分)

如果您对可用性组侦听器 VNN 使用默认端口 1433,您仍然需要确保集群节点上没有其他服务正在使用此端口;否则这会导致端口冲突。

编辑:如果以上不是您的问题(从您下面的评论中可以看出),那么在您查看日志后,我会说下一个最佳行动方案是开始查看网络流量以查看是什么(并且不是)正在发生。您可以使用像netmon这样的网络监控工具来完成此操作。

我会做的另一件事,我意识到你说防火墙不是问题,但我会看看端口是否真的在监听(我最喜欢的工具是portqry)。