Date: 4月 22, 2024
分步操作 – OCI 中的 SQL Server 2019 故障转移群集实例 (FCI)
介绍
如果您在 Oracle 云基础设施 (OCI) 中部署关键业务应用程序,那么了解并利用 OCI 提供的可用性 SLA(服务级别协议)以获得最佳正常运行时间和可靠性至关重要。 OCI 的 SLA 根据您选择的部署策略而有所不同:
跨可用性域部署:当您在同一 OCI 区域内的不同可用性域中部署两个或多个虚拟机 (VM) 时,OCI 提供 99.99% 的可用性 SLA。
跨故障域部署:如果跨故障域部署虚拟机,OCI 提供 99.95% 的可用性 SLA。需要注意的是,并非每个 OCI 区域都有多个可用性域,因此在某些区域,跨故障域部署将是您唯一的选择。
单一虚拟机部署:对于涉及单个虚拟机的部署,SLA 为 99.9%。
此框架意味着 OCI 根据您部署 VM 的方式保证一定级别的外部连接:
请务必注意,SLA 涵盖虚拟机本身的可用性,而不是其上运行的应用程序或服务的可用性。为了确保应用程序可用性,需要采取额外的措施,例如应用程序监视、恢复计划、数据复制和事务复制(对于 SQL Server 等数据库)。策略可能包括负载平衡、集群或数据复制,以有效管理应用程序可用性。
为了满足 OCI 中 99.99% 可用性 SLA 的标准,必须跨多个可用性域部署虚拟机。这篇文章将指导您设计 OCI 基础设施,以促进跨可用性域的 SQL Server 故障转移集群实例,从而确保关键业务应用程序的最大正常运行时间和可靠性。
创建 VCN 和子网
在本指南中,我假设您对 Oracle 云基础设施 (OCI) 有一定的了解并对网络概念有基本的了解。我将通过描述来说明常见的配置任务,并在必要时提供额外的指导来应对 OCI 网络中遇到的一些常见挑战。
从深思熟虑的网络计划开始至关重要。本文档不会涵盖云网络规划的复杂性,因此以下示例应仅被视为多种可能性之一。您的网络配置可能会有很大差异。但是,一个重要的考虑因素是规划至少使用三个可用性域,为每个集群节点分配一个,为文件共享见证分配另一个。集群所需的重要一点是每个可用性域必须位于不同的子网中。
尽管我们没有涵盖跨故障域而不是可用性域的配置,但这同样适用于跨故障域的集群 – 所有节点必须驻留在不同的子网中。
在我们的场景中,我们将在 OCI 中的单个虚拟云网络 (VCN) 内跨三个不同的可用性域设置三个子网。
VCN:10.0.0.0/16
- AD1:10.0.0.0/18
- AD2:10.0.64.0/18
- AD3:10.0.128.0/18
OCI 的用户界面可能会发生变化,但在撰写本文时,在 OCI 控制台中创建新 VCN 和三个子网的过程非常简单。具体细节可以在 OCI 文档或通过其用户界面找到,它会指导您完成 VCN 和子网创建的必要步骤。
创建VCN
在 VCN 中创建三个子网
创建 Internet 网关
互联网网关是我们的实例访问互联网的方式。在您的网络中,您可能不希望实例能够访问互联网,但在本示例中,我们将启用它并将其添加到我们的默认路由表中。
编辑默认安全列表
编辑路由表
编辑路由表,以便所有发往 VCN 外部的流量都通过 Internet 网关进行路由。
创建网络安全组
编辑安全列表
这些设置允许跨可用性域不受限制的访问,并允许从任何地方进行 RDP 访问。您可以考虑限制哪些 IP 地址可以 RDP 到您的实例,甚至设置一个专门用于从公共网络进行 RDP 访问的“跳转虚拟机”。
编辑 DHCP 选项
为了使 Active Directory 正常工作,您必须在 DHCP 选项中将 DC1 设置为主 DNS 服务器,如下所示。在本例中,我们将其设置为 10.0.0.100,这是我们正在配置的域控制器的静态 IP。您还应该将您的域添加到自定义搜索域。在本例中,我们将使用名为 datakeeper.local 的域,稍后我们将在配置域控制器时构建该域。
配置虚拟机
现在 VCN 已配置完毕,是时候开始配置虚拟机了。在此示例中,我们将使用 Windows Server 2022 和 SQL Server 2019。但是,本文中描述的步骤在所有版本的 Windows Server 和 SQL Server 中几乎相同,因此无论使用哪个版本,您都不应该遇到任何问题。您计划使用的 Windows 或 SQL Server。
在开始之前,制定计划再次很重要。在这种情况下,您需要规划您的服务器名称、IP 地址及其可用区布局。如前所述,每个集群节点和文件共享见证都必须驻留在不同的可用区中。
在示例配置中,我们将在实例 (DC1) 中部署 Active-Directory,该实例也将充当文件共享见证。
AD1 – DC1 (10.0.0.100)
AD2 – SQL1 – (10.0.64.100, 10.0.64.101, 10.0.64.102)
AD3 – SQL2 – (10.0.128.100, 10.0.128.101, 10.0.128.102)
您可能已经注意到,每个集群节点(SQL1、SQL2)都有三个 IP 地址。第一个地址是实例的私有IP地址。另外两个 IP 地址将作为辅助地址添加到每个实例上。这些 IP 地址包含与 SQL Server FCI 网络名称资源关联的核心群集 IP 地址和虚拟 IP 地址。
当我们配置集群节点时,我们将使用不包含 SQL Server 软件的基本 Windows Server 2022 映像。相反,我们将下载 SQL Server 安装介质并使用永久 SQL Server 许可证,而不是 Marketplace 上提供的“即用即付”许可证。
以下部分说明了配置本示例中使用的三个虚拟机的过程。
在FD1中配置DC1
选择实例类型时,您必须根据工作负载适当调整实例类型。这与您调整物理服务器大小以在本地使用时所做的类似,但不同之处在于,如果您首次过度配置或配置不足,或者您的工作负载随着时间的推移增加或减少。
指定实例详细信息时,请确保选择正确的 VCN 和子网以进行正确放置。在第一个屏幕上,您还可以指定要与该实例关联的静态 IP。
在 FD2 中配置 SQL1
如前所述,此示例使用 Windows Server 2022 的基本安装。稍后将下载 SQL Server 2019 并用于 SQL Server FCI 安装。
在 FD3 中配置 SQL2
添加额外的卷
集群中的每台服务器都需要至少一个额外的卷。这些卷对于 SQL Server FCI 的存储需求至关重要,并由 SIOS DataKeeper 进行复制。
多卷
您可以添加多个卷来分隔数据、日志和备份。
存储类型:多种存储类型可供选择,以满足不同的需求。
附着方法
有多种方法可以将存储连接到服务器。
配置示例
下面,我们提供了屏幕截图,展示了多种可能的存储配置之一。这是一个实际示例,有助于理解设置过程。此过程应在 SQL1 和 SQL2 上完成。
创建块卷
首先,在正确的可用性域中为 SQL1 和 SQL2 创建块卷。
附加卷
现在卷已创建,您必须将它们附加到实例。
需要记住的要点
设置灵活。您可以根据您的具体需求配置一个或多个卷。
考虑适合您的配置的不同存储类型和连接方法。
添加辅助 IP 地址
为了使 Windows Server 故障转移群集在 OCI 中正常工作,您必须将群集 IP 地址添加为附加到 SQL1 和 SQL1 的虚拟网络接口 (VNIC) 上的辅助地址。您还记得,我们讨论过在每个集群节点上使用以下 IP 地址。
SQL1 | SQL2 | |
主要地址 | 10.0.64.100 | 10.0.128.100 |
集群IP 1(核心集群资源) | 10.0.64.101 | 10.0.128.101 |
集群IP 2(SQL Server集群IP) | 10.0.64.102 | 10.0.128.102 |
在 SQL1 和 SQL2 上,编辑附加的 VNIC 以添加辅助地址。
创建域
为了实现弹性,您应该跨不同的可用区配置多个 AD 控制器,但出于本指南的目的,我们将仅配置一个 AD 控制器。按照下面的屏幕截图在 DC1 上配置 AD。
使用实例详细信息部分中列出的凭据登录。系统将提示您重置密码。
启用 Active Directory 域服务
将服务器升级为域控制器
在开始此过程之前,请在服务器上启用本地管理员帐户并设置密码。如果不这样做,当您尝试升级域控制器时,您将收到此消息。
启用管理员帐户并设置密码后,继续进行部署后配置
在启用 Active Directory 域服务之前,您必须启用本地管理员帐户并使用该帐户登录。
使用您最喜欢的 RDP 程序,使用与实例关联的公共 IP 地址连接到 DC1。添加 Active Directory 域服务角色。
安装完成后,将此服务器提升为域控制器。
出于我们的目的,我们将创建一个新域。
重新启动 DC1 并继续下一部分。
将 SQL1 和 SQL2 添加到域
准备存储
将 SQL1 和 SQL2 添加到域后,使用您创建的域管理员帐户连接到实例以完成其余的配置步骤。您需要做的第一件事是附加并格式化我们添加到 SQL1 和 SQL2 的 EBS 卷,如下所示。
配置故障转移集群功能
在 SQL1 和 SQL2 上启用故障转移群集功能。
在 SQL1 和 SQL2 上运行此 PowerShell 命令
安装-WindowsFeature-名称故障转移群集-IncludeManagementTools
验证您的集群
从 SQL1 或 SQL2 运行此 PowerShell 命令
测试集群-节点 sql1,sql2
根据您使用的 Windows Server 版本,您将看到一些有关网络和可能存储的警告。网络警告可能会告诉您每个集群节点都可以通过单个接口访问。早期版本的 Windows 会警告您缺少共享存储。
您可以忽略这两个错误,因为它们在 OCI 托管的集群中是预期的。只要您没有收到错误,就可以继续下一部分。如果您收到任何错误,请修复它们,然后再次运行验证并继续下一部分。
创建集群
接下来,您将创建集群。在下面的示例中,您会注意到我使用了我们计划使用的两个 IP 地址:10.0.64.101 和 10.0.128.101。您可以从任一群集节点运行此 Powershell。
新建集群 -名称 cluster1 -节点 sql1,sql2 -静态地址 10.0.64.101, 10.0.128.101
请注意:
不要尝试通过 WSFC GUI 创建集群。您会发现,由于实例使用 DHCP,GUI 不会为您提供为集群分配 IP 地址的选项,而是会分发重复的 IP 地址。
添加文件共享见证
为了维持集群仲裁,您需要添加见证人。在 OCI 中,您要使用的见证类型是文件共享见证。文件共享见证必须驻留在与两个群集节点不同的故障域中的服务器上。
在下面的示例中,将在驻留在 FD1 中的 DC1 上创建文件共享见证。
在 DC1 上,创建文件共享并分配集群名称对象 (CNO) 对该文件夹的读写权限。在您创建的文件夹的“共享”和“安全”选项卡上添加 CNO 的权限,在下面的示例中,我创建了一个名为“见证”的文件夹。
创建文件夹并向 CNO 分配适当的权限后,请在 SQL1 或 SQL2 上运行以下 PowerShell 命令。
设置 ClusterQuorum -Cluster cluster1 -FileShareWitness \\dc1\Witness
当您在 SQL1 或 SQL2 上启动故障转移群集管理器时,您的群集现在应如下所示。
创建 SQL Server FCI
安装DataKeeper集群版
在继续执行后续步骤之前,您需要在 SQL1 和 SQL2 上安装 DataKeeper Cluster Edition。下载安装可执行文件并在两个节点上运行 DataKeeper 安装程序。请参阅SIOS文档有关安装的具体指导。
创建 DataKeeper 卷资源
在任一集群节点上启动 DataKeeper UI 并创建 DataKeeper 卷资源,如下所示。
连接到两台服务器,首先是 SQL1,然后是 SQL2
如果您已连接到两台服务器并且存储配置正确,则服务器概述报告应如下所示。
单击创建作业以启动作业创建向导
DataKeeper 支持同步和异步复制。对于同一区域内的可用区之间的复制,请选择同步。如果您想跨区域甚至跨云提供商复制,请选择异步
这里点击“是”,将DataKeeper Volume资源注册到集群的Available Storage中
DataKeeper 卷 D 现在显示在故障转移群集管理器的可用存储中。
在 SQL1 上安装 SQL Server FCI 的第一个节点
现在核心集群已创建,并且 DataKeeper 卷资源位于可用存储中,是时候在第一个集群节点上安装 SQL Server 了。如前所述,此处的示例说明了使用 SQL 2019 和 Windows 2022 的群集配置,但无论您尝试部署哪个版本的 Windows Server 或 SQL Server,此示例中描述的所有步骤实际上都是相同的。
按照下面的示例在 SQL1 上安装 SQL Server
您在下面指定的名称是客户端访问点。这是应用程序服务器想要连接到 SQL Server FCI 时将使用的名称。
在此屏幕上,您将添加我们之前在规划部分中确定的 SQL1 辅助 IP 地址第1部分这个系列的。
在此示例中,我们将 tempdb 保留在 D 驱动器上。但是,为了获得最佳性能,建议您将 tempdb 放置在非复制卷上。
在 SQL2 上安装 SQL Server FCI 的第二个节点
现在是在 SQL2 上安装 SQL Server 的时候了。
在两个群集节点上安装 SQL Server 后,故障转移群集管理器应如下所示。
安装 SQL Server Management Studio
在 SQL Server 版本 2016 及更高版本上,您必须作为单独的选项下载并安装 SSMS,如下所示。注意:在 SQL Server 的早期版本中,SQL Server Management Studio (SSMS) 是您可以在 SQL 安装期间选择安装的一个选项。
安装 SSMS 后,通过客户端访问点连接到集群。您的 SQL Server FCI 应该如下所示。
多子网注意事项
在 OCI 中运行 SQL Server FCI 的最大考虑因素之一是群集节点驻留在不同的子网中。 Microsoft 开始通过在 Windows Server 2008 R2 中添加“OR”功能来考虑群集节点可能驻留在不同子网中的事实,如 Microsoft文档。
取自SQL Server 多子网集群 (SQL Server)
文档中描述的重要内容是网络名称资源上的 RegisterAllProvidersIP 概念,在创建 SQL Server FCI 时默认启用该概念。如上所述,启用此功能后,将在 DNS 中使用网络名称资源注册两条 A 记录,每个 IP 地址对应一条记录。
使用“OR”功能,只有与活动子网关联的 IP 地址才会在线,而另一个将显示为离线。如果您的客户端支持将 multisubnetfailover=true 添加到连接字符串,则将同时尝试两个 IP 地址,并且客户端将自动连接到活动节点。这是最简单的,也是多子网集群中客户端重定向的默认方法。
该文档接着说,如果您的客户端不支持 multisubnetfailover=true 功能,则您应该“尝试将每个附加 IP 地址的客户端连接字符串中的连接超时调整为 21 秒。这可确保客户端的重新连接尝试在能够循环访问多子网 FCI 中的所有 IP 地址之前不会超时。”
禁用 RegisterAllProvidersIP 是另一个可行的选项。通过禁用 RegisterAllProvidersIP,您在 DNS 中将只有一条 A 记录。每次集群故障转移时,DNS A 记录都会更新为与名称资源关联的活动集群 IP 地址。
此方案配置的缺点是您的客户端将缓存旧 IP 地址,直到生存时间 (TTL) 到期。为了最大限度地减少重新连接的延迟,建议您更改名称资源上的 TTL。描述了这个过程这里下面显示了将 TTL 设置为 5 分钟的示例。
获取 ClusterResource -名称 sqlcluster |设置 ClusterParameter -名称 HostRecordTTL -值 300
请记住,对 AD 集成 DNS 服务器的更改也可能需要一些时间才能传播到整个林。
概括
本技术指南全面概述了在 Oracle 云基础设施 (OCI) 中设置 SQL Server 2019 故障转移集群实例 (FCI)。首先强调了解 OCI 可用性 SLA 的重要性,该 SLA 根据部署策略而有所不同:跨可用性域部署为 99.99%,跨故障域部署为 99.95%,单个虚拟机部署为 99.9%。该指南强调,SLA 涵盖虚拟机可用性,而不是其上运行的应用程序或服务,因此需要采取额外的措施来确保应用程序可用性。
该指南详细介绍了在 OCI 中创建虚拟云网络 (VCN) 和子网的初始步骤,强调需要一个能够容纳至少三个可用性域以实现集群目的的网络规划。每个可用性域必须位于不同的子网中,这一要求也适用于跨故障域的集群。它提供了用于在单个 VCN 内跨不同可用性域设置三个子网的特定配置。
此外,该指南还描述了创建互联网网关以及编辑默认安全列表和路由表以促进跨可用性域的访问和安全的过程。它还介绍了用于 Active Directory 兼容性的 DHCP 选项配置,并概述了使用 Windows Server 2022 和 SQL Server 2019 配置虚拟机的步骤,强调了规划服务器名称、IP 地址和可用区放置的重要性。
然后,该指南深入研究了添加额外卷以满足 SQL Server FCI 存储需求,详细介绍了创建块卷并将其附加到实例的过程。它还指导如何在 OCI 中配置 Windows Server 故障转移群集的辅助 IP 地址。
接下来,本指南介绍了域控制器设置,包括启用 Active Directory 域服务以及将服务器升级为域控制器。它逐步介绍了在 SQL1 和 SQL2 上准备存储和启用故障转移群集功能,以及群集验证和创建过程。
该指南进一步讨论了添加文件共享见证以维护集群仲裁以及安装 DataKeeper Cluster Edition 以进行卷复制。它提供了在群集节点和 SQL Server Management Studio 上安装 SQL Server 的分步方法,以及多子网部署的注意事项。
总之,本指南提供了在 OCI 中部署和配置 SQL Server 2019 FCI 的详细蓝图,涵盖从网络设置和 VM 配置到集群、存储配置和域控制设置等各个方面,确保关键业务应用程序的正常运行时间和可靠性最大化。
经许可转载安全操作系统