15.7 多子网故障转移群集
15.7.1 多子网
SQL Server 2012 引入了拉伸群集(Stretch Clusters),支持跨地理上分散的站点进行群集。每个故障转移群集节点都连接到其他子网(或子网组),因此被称为多子网故障转移群集。
在多子网群集中,由于没有所有节点都可以访问的共享存储,因此多个子网上的数据存储之间需要复制数据。这种部署模式,使得数据库有多个副本,从而提供了异地容灾功能。
当某个主节点上的 IP 地址之一出现失败时,在该节点上有效的所有 IP 地址都失败前,将不会自动触发故障转移。当发生故障转移时,如果 SQL Server 可以绑定到当前节点上有效的至少一个 IP 地址,则它将进入联机状态。
15.7.2 IP 地址资源
在 Windows Server 2003 中,故障转移群集的资源之间的依赖关系均为 AND。SQL Server 2008 R2 和以前的版本中,SQL Server 在启动时将遍历故障转移群集中的所有 IP 地址并尝试与它们全部绑定。如果绑定失败,则 SQL Server 的启动也会失败。因此,SQL Server 只能借助拉伸VLAN来启用多站点故障转移群集。
Windows Server 2008 允许将故障转移群集的资源之间的依赖关系设为 AND 或 OR。SQL Server 2012 在安装群集时可以智能检测多子网环境并自动将 IP 地址资源依赖关系设置为 OR。另外,SQL Server 2012 在启动时将不再需要绑定到不处于联机状态的所有 IP 地址。
15.7.3 客户端连接
客户端在其连接字符串中必须使用新的参数: MultiSubnetFailover=True。
默认情况下,客户端应用程序会从 DNS 服务器检索所有已注册的 IP 地址,尝试按顺序或并行连接到这些地址,并将连接到第一台响应的服务器。
对于旧版本的客户端驱动程序或第三方数据访问接口,由于不能在连接字符串中使用 MultiSubnetFailover 参数,为了延长客户端连接所需的时间,建议为额外的每个 IP 地址增加 15秒的超时期限。例如,默认的连接超时期限为15秒,故障转移群集有3个具有IP地址的站点,那么新的 ConnectionTimeout 值建议为:15 + (3-1) * 21 = 57 秒。