Date: 4月 14, 2019
新的Azure ILB功能允许您构建多实例SQL Server故障转移群集
在今年9月的Microsoft Ignite上,微软围绕Azure发布了一些声明。其中一个公告是内部负载平衡器上的多个VIP的普遍可用性。为什么这对SQL Server DBA如此重要?好吧,到目前为止,如果要在Azure中部署高可用性SQL Server,则每个群集或单个可用性组侦听器仅限于一个SQL Server FCI。此限制强制您为要在故障转移群集中保护的每个SQL Server实例部署新群集。如果您希望在AlwaysOn AG配置中进行自动故障转移和客户端重定向,它还会强制您将所有数据库分组到单个可用性组中。
如何摆脱这些限制?
这些新的ILB功能现已解除了这些限制。在这篇文章中,我将引导您完成在Azure中部署包含两个SQL Server实例的SQL Server FCI的过程。在以后的文章中,我将引导您完成SQL Server AlwaysOn AG的相同过程。
让我们从多实例SQL Server故障转移群集开始
如我在Azure资源管理器中部署Microsoft SQL Server 2014故障转移群集的帖子中所述,在Azure中构建基本的单实例SQL Server FCI。该帖子描述了创建多实例SQL Server故障转移群集的过程。 使用DataKeeper创建群集中使用的复制卷资源,尝试创建内部负载平衡器(ILB),然后修复SQL Server群集IP资源以使用ILB。如果您想跳过该过程并快速启动配置,您可以始终使用Azure部署模板,使用SIOS DataKeeper创建双节点SQL Server FCI假设您现在有一个基本的双节点SQL Server FCI,添加第二个命名的步骤实例如下:
- 在另一个当前未使用的卷上创建另一个DataKeeper卷资源。如果没有可用卷,则可能需要向Azure实例添加其他磁盘。作为此卷创建过程的一部分,新的DataKeeper卷资源将在群集中的可用存储中注册。有关详细信息,请参阅前面引用的文章。
- 在第一个节点上安装SQL Server的命名实例,指定我们刚刚创建的DataKeeper卷作为存储位置。
- “添加节点”到第二个节点上的群集。
- 将此新命名实例的端口号锁定到未使用的端口。在我的例子中,我使用端口1440。
将ILB调整为第二个实例
接下来,我们必须调整ILB以将流量重定向到第二个实例。以下是您需要遵循的步骤:添加前端IP地址,该地址与您用于第二个SQL Server实例的SQL群集IP地址相同,如下所示。 接下来,我们将需要添加另一个探测,因为实例可以在不同的服务器上运行。如下图所示,我添加了一个探测端口59998(而不是通常的59999)的探测器。我们需要确保新规则引用此探针。我们还需要记住该端口号,因为我们需要在此过程的最后一步更新与此实例关联的IP地址。 现在我们需要向ILB添加两个新规则来引导目标为第二个SQL实例的流量。当然我们需要添加一个规则来重定向TCP端口1440(我用于SQL命名实例的端口),但由于我们现在使用的是命名实例,我们还需要一个端口来支持SQL Server Browser服务,UDP端口1434。在下面描述SQL Server Browser服务规则的图片中,请注意前端IP地址引用了新的FrontendIP地址(10.0.0.201),端口和后端端口的UDP端口1434。在池中,您需要指定群集中的两个服务器,最后确保选择刚刚创建的新Health Probe。 我们现在将添加TCP / 1440规则。如下图所示,为端口TCP 1440添加新规则,或为SQL Server的命名实例锁定的任何端口。同样,请务必选择新的FrontEnd IP地址和新的Health Probe(59998)。此外,请确保启用了浮动IP(直接服务器返回)。
最后一步
现在已配置负载均衡器,最后一步是运行PowerShell脚本以更新与此第二个SQL Server实例关联的新群集IP地址。此PowerShell脚本只需要在其中一个群集节点上运行。
#定义变量 $ ClusterNetworkName =“” #群集网络名称 (在更高版本的Windows Server 2012上使用Get-ClusterNetwork查找名称) $ IPResourceName =“” #SQL Server的第二个实例的IP地址资源名称 $ ILBIP =“” #第二个SQL实例的IP地址, 它应该与新的前端IP地址相同 导入模块FailoverClusters #如果您使用的是Windows Server 2012或更高版本: Get-ClusterResource $ IPResourceName | Set-ClusterParameter -Multiple @ {Address = $ ILBIP; ProbePort = 59998; 子网掩码= “255.255.255.255” 网络= $ ClusterNetworkName; EnableDHCP时= 0} #如果您使用的是Windows Server 2008 R2,请使用以下命令: #cluster res $ IPResourceName / priv enabledhcp = 0 address = $ ILBIP probeport = 59998 子网掩码= 255.255.255.255
您现在在Azure中拥有一个功能齐全的多实例SQL Server FCI。如果您有任何问题要构建具有从Clusteringformeremortals.com重现的新Azure ILB功能的多实例SQL Server故障转移群集