我使用微软的 Hyper-V 技术已有一段时间了,但现在我才刚刚开始尝试集群技术。
具体来说,我正在尝试实现一个容错 SQL DB。这涉及设置两个虚拟机,通过故障转移群集将它们集群化,然后以某种方式安装 SQL Server。我有两台物理机器 - 一台高端且相当强大的“重型机器”,用于容纳大多数虚拟机,另一台“备份”(重新利用的桌面)用于容纳必要的“辅助”(或故障转移)AD-DC、SQL 和 FS 虚拟机。
我认为虚拟机级别的故障转移群集如此有吸引力的主要原因是它向整个网络呈现单个 IP 和 DNS 条目 - 如果一台机器(物理或虚拟)出现故障,您可能会丢失一些 ping 并且连接会被重置,但网络应用程序(Microsoft RMS 连接到后端 SQL)仍然可以连接到可行的数据库,而无需摆弄设置。
我的第一个问题是关于 SQL Server 本身的。如果我在两个虚拟机之间有一个群集,那么在故障转移群集配置中安装 SQL Server 是否更有意义,还是我应该简单地将其安装在独立配置中并镜像数据库?例如,这个帖子建议仅镜像数据库,但我是否仅在独立虚拟机上镜像独立数据库,或者我是否可以获得集群虚拟机的网络和故障转移优势,同时仍然利用(在每个集群虚拟机上)彼此之间已镜像的独立数据库?
此外,我看过很多关于 SQL 集群的文档,但大多数都假设有一定数量的物理机(#>2)不仅用于容纳实际的 SQL VM,还用于容纳 Quorum 和 Witness 存储。我无法召集超过两台物理机。因此,我必须满足于不超过两台 VM(每台物理机一台)的 VM 集群。
另一个问题涉及 MSDTC - 分布式事务协调器。尝试安装 SQL 故障转移群集时(出于这个原因,我从未完成过),它发出了嘶嘶声,因为 MSDTC 尚未群集。尽管我搜索过,但我还没有找到在 Windows Server 2012 R2 下执行此操作的方法。我发现大量适用于 Windows 2008 和 2008 R2 的文档,但这些说明与 2012 R2 不一致(至少,无法让我成功集群 MSDTC)。另外,一些说明我发现 SQL Server 故障转移群集安装表明,数据库本身(和其他功能)需要第三个“网络设备” - 共享网络存储 (SAN)。我没有这个,也不会得到这个。我的大部分存储都存在于为所有“主”虚拟机设计的“重型升降机”上。如果该物理机器出现故障,存储也会出现故障。辅助服务器确实有足够的资源用于 AD-DC 服务器、SQL 服务器和文件服务器,因此它将处理这些虚拟机的“辅助”故障转移版本(无论是否集群)。
我的最后一个问题涉及文件服务器。如果我在两个虚拟机之间集群文件服务器(一个在我的“重型升降机”上,另一个在我的“备份”上),我如何在它们之间镜像数据?集群虚拟机仅为资源提供网络上的单一访问点,它不会在两者之间准确复制数据 - 这留给提供该数据的服务。我不确定如何确保两个集群文件服务器虚拟机之间的文件服务器数据可以正确镜像。请记住,我这里只有两个设备可用 - 我的主机和备份辅助设备。我不可能获得 SAN 或任何其他类型的网络附加存储。机器上现有的设备必须充当存储。
在此先感谢您的任何建议。
答案1
您可能希望将其分解为一系列更有针对性的问题。
如果您正在寻找无缝、应用程序透明的故障转移,那么您需要使用故障转移群集或 AlwaysOn 可用性组。如果您使用的是 SQL 2012 Enterprise,AOAG 将是唯一的选择。镜像将为您提供简单(手动)的故障转移;如果您想要自动故障转移,您必须将见证服务器添加到组合中,但即便如此,您的应用程序也必须具有故障转移意识,因为它需要使用新的 IP/名称连接到辅助服务器,这与故障转移群集/AOAG 不同。事实上,微软打算用可用性组取代传统的镜像,因此为了面向未来,我建议尽可能不要在新的部署中使用镜像。
Windows 2012 上的 SQL Server 2012 没有绝对需要一个群集的 MSDTC,但如果您需要一个,只需添加 DTC 群集角色即可:
对于故障转移群集,您需要某种类型的外部存储来存储数据库。这可以是 SAN、DAS 或(如果您有 SQL 2012)NAS。如果您不打算使用外部存储,您应该使用 AlwaysOn 可用性组因为它会为您复制数据,同时提供类似集群的故障转移功能。这仍然需要 Windows 集群,但 SQL 本身不会集群化。
集群文件服务器旨在与后端的共享存储配合使用,就像集群 SQL 实例一样。另一种选择是使用使用 DFS 命名空间进行 DFS 复制无需集群即可提供高可用性文件共享。
答案2
一个“低技术”选项是在两台主机之间实施 Hyper-V 副本。如果您没有共享存储,并且无法配置(或资助)共享存储和应用程序级故障转移(AOAG 的 SQL Server Enterprise Edition),则可以使用 Hyper-V 副本将 VM 从源主机复制到目标主机,并使两台 VM 保持同步。您可以使用 Hyper-V 副本的 VSS 选项启用应用程序一致性复制。
Hyper-V 副本的缺点是它不能在同一个故障转移群集中的主机之间使用,并且没有自动故障转移。