适用范围:SQL Server
SQL Server 多子网故障转移群集是一种配置,其中每个故障转移群集节点都连接到不同的子网或一组不同的子网。 这些子网可位于同一位置或在地理上分散的地点中。 地理分散站点中的群集有时称为 拉伸群集。 由于所有节点都无法访问共享存储,因此应在多个子网上的数据存储之间复制数据。 复制数据时,有多个可用数据副本。 因此,多子网故障转移群集除了具备高可用性之外,还提供了灾难恢复解决方案。
SQL Server 多子网故障转移群集(两个节点,两个子网)
下图表示 SQL Server 中的双节点双子网故障转移群集实例(FCI)。
多子网故障转移群集实例配置
下面是使用多个子网的 SQL Server FCI 的一些示例:
SQL Server FCI SQLCLUST1 包括 Node1 和 Node2。 节点 1 连接到 Subnet1。 Node2 连接到 Subnet2。 SQL Server 安装程序将此配置视为多子网群集,并将 IP 地址资源依赖项设置为
OR。SQL Server FCI SQLCLUST2包括 Node1、Node2 和 Node3。 Node1 和 Node2 连接到 Subnet1。 Node3 连接到 Subnet2。 SQL Server 安装程序将此配置视为多子网群集,并将 IP 地址资源依赖项设置为
OR。 因为 Node1 和 Node2 位于同一子网上,所以此配置还提供本地高可用性。SQL Server FCI SQLCLUST3包括 Node1 和 Node2。 Node1 位于 Subnet1 上。 Node2 位于 Subnet1 和 Subnet2 上。 SQL Server 安装程序将此配置视为多子网群集,并将 IP 地址资源依赖项设置为
OR。SQL Server FCI SQLCLUST4包括 Node1 和 Node2。 Node1 连接到 Subnet1 和 Subnet2。 Node2 也连接到 Subnet1 和 Subnet2。 SQL Server 安装程序将 IP 地址资源依赖项设置为
AND。备注
此配置不被视为多子网故障转移群集配置,因为群集节点位于同一组子网上。
IP 地址资源注意事项
在多子网故障转移群集配置中,IP 地址不归故障转移群集中的所有节点所有,在 SQL Server 启动期间可能并非全部处于联机状态。 从 SQL Server 2012(11.x)开始,可以将 IP 地址资源依赖项设置为 OR。 这样做可使 SQL Server 在至少有一个有效的 IP 地址可以绑定到时处于联机状态。
备注
在低于 SQL Server 2012(11.x)的 SQL Server 版本中,在多站点群集配置中使用拉伸 V-LAN 技术公开单个 IP 地址,以便跨站点进行故障转移。 现在,SQL Server 可以跨不同子网群集节点,因此可以在多个站点之间配置 SQL Server 故障转移群集,而无需实现拉伸 V-LAN 技术。
IP 地址资源或依赖项注意事项
如果将 IP 地址资源依赖项 OR设置为以下故障转移行为,可能需要考虑以下故障转移行为:
如果节点上当前拥有 SQL Server 群集资源组的某个 IP 地址发生故障,则在该节点上有效的所有 IP 地址失败之前,不会自动触发故障转移。
发生故障转移时,如果 SQL Server 可以绑定到当前节点上有效的至少一个 IP 地址,则 SQL Server 会联机。 在启动时未绑定到 SQL Server 的 IP 地址将列在错误日志中。
当 SQL Server FCI 与 SQL Server 数据库引擎的独立实例并排安装时,请小心避免 IP 地址上的 TCP 端口号冲突。 当两个数据库引擎实例配置为使用默认 TCP 端口(1433)时,通常会发生冲突。 若要避免冲突,请将一个实例配置为使用非默认固定端口。 在独立实例上配置固定端口通常更容易。 将数据库引擎配置为使用不同的端口可防止出现意外的 IP 地址/TCP 端口冲突,该冲突会阻止 SQL Server FCI 无法连接到备用节点时启动实例。
故障转移期间的客户端恢复延迟
默认情况下,多子网 FCI 为其网络名称启用 RegisterAllProvidersIP 群集资源。 在多子网配置中,网络名称的联机和脱机 IP 地址都在 DNS 服务器上注册。 然后,客户端应用程序从 DNS 服务器检索所有已注册的 IP 地址,并尝试按顺序或并行连接到地址。 这意味着多子网故障转移中的客户端恢复时间不再取决于 DNS 更新延迟。 默认情况下,客户端会按顺序尝试 IP 地址。 当客户端在其连接字符串中使用可选 MultiSubnetFailover=True 参数时,它会同时尝试 IP 地址并连接到响应的第一台服务器。 此配置可帮助最大程度地减少发生故障转移时的客户端恢复延迟。 有关详细信息,请参阅 Always On 客户端连接(SQL Server)和创建或配置可用性组侦听器(SQL Server)。
使用旧客户端库或非Microsoft数据提供程序,无法在连接字符串中使用 MultiSubnetFailover 参数。 为了帮助确保您的客户端应用程序在 SQL Server中以最佳方式使用多子网 FCI,请尝试按照 21 秒的间隔为其他每个 IP 地址调整客户端连接字符串中的连接超时。 此配置可确保客户端的重新连接尝试不会超时,然后才能循环访问多子网 FCI 中的所有 IP 地址。
SQL Server Management Studio 和 sqlcmd 的默认客户端连接超时期限为 15 秒。
备注
如果使用多个子网并具有静态 DNS,则需要准备好一个进程来更新与侦听器关联的 DNS 记录,然后再执行故障转移。 否则网络名称不会联机。
相关内容
| Description | Article |
|---|---|
| 安装 SQL Server 故障转移群集 | 创建新的 SQL Server 故障转移群集(设置) |
| 就地升级现有 SQL Server 故障转移群集 | 升级 SQL Server 故障转移群集实例(安装程序) |
| 维护 SQL Server 故障转移群集 | 在 SQL Server 故障转移群集中添加或删除节点(安装程序) |
| 使用故障转移群集管理管理单元查看 Windows Server 故障转移群集事件和日志 | 查看故障转移群集的事件和日志 |
| 使用 Windows PowerShell 为 Windows Server 故障转移群集中的所有节点(或特定节点)创建日志文件 | Get-ClusterLog 故障转移群集 cmdlet |