所讨论的环境由 AD 域和 2 个 AZ SQL VM 组成。SQL 服务器版本是 SQL 2022 Standard - CU 2。目前每个 AZ SQL VM 上有三个数据库实例,这些实例中的数据库在(基本)AlwaysON AG 中工作,用于非系统数据库。
最近,我与 Microsoft 合作,利用 Azure 中的所有 SQL 服务器托管和他们的建议,充分利用 Azure IaaS SQL 代理的功能是安装默认实例以及 3 个命名实例。我做到了。
现在对于这 3 个实例,情况如下:
- SQL Server VM 的子网中有地址 A、B
- 每个实例和该实例中每个数据库的侦听器的地址为 C、D、E、F ....
- 2 个实例中的侦听器在 TCP 端口 > 49152 上运行
- 最后一个实例的侦听器在端口 1433 上运行,但地址不同于 A 和 B
我的问题 在按照 Microsoft 的建议安装默认 SQL 实例后,当连接到端口 1433 上的侦听器时,我以某种方式结束了默认实例,而不是在 TCP 1433 上运行的侦听器所属的实例。
/* EDIT 01 */ 回答 Sean 的宝贵问题:
为了到达在 1433 上侦听的 AG 侦听器(但在与服务器地址不同的 IP 上),我使用了 <Listener's DNS name> 并在默认实例中结束 - 两者都在 1433 上运行但具有不同的 IP。卸载默认实例后,所有实例都将重新开始工作。
所有命名实例都在动态端口上侦听,默认实例在 1433 上侦听。在 1433 上,一个命名实例的侦听器也在侦听,但这些侦听器每个都有单独的 IP 地址。网络设置符合 MSFT 指南 - AZ SQL VM 前面的 Azure 负载平衡器,以便 AG 正常工作。我没有触摸负载均衡器来反映默认实例在 1433 上侦听,因为该默认实例没有任何 AG。
/* 编辑 01 结束 */
有谁知道为什么?
您遇到了与我回答相同的问题,请忽略浏览器方面。本质上,该实例默认设置为侦听所有 IP,并且由于它是这样设置的并且您有多个实例,其他 ip/port 组合将无法绑定,因此谁先拥有组合就是谁流量将被路由。
这些是您在同一组服务器上使用多个 SQL Server 实例时将遇到的问题,引用我自己的话......
您还发现在将 Azure IaaS 与 AG 与 ILB 一起使用时还有其他注意事项(或者执行 AWS 要求的操作,即每个节点都需要在其自己的子网中),这也需要唯一的端口,因此我不会使用动态端口作为你有其他情况。