注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室时,请将这些值替换为特定于您的云环境的值。
在 OCI 上部署 Microsoft SQL Server Always On 可用性组,以实现高可用性和灾难恢复
简介
Microsoft SQL Server 的部署是 Oracle Cloud Infrastructure (OCI) 中的一个常见用例。与 OCI 部署中的常见情况一样,客户需要具有高度弹性的架构来满足业务连续性要求。因此,了解如何部署 SQL Server 以实现高可用性和灾难恢复成为这些客户的当务之急。
有几种 SQL Server 业务连续性解决方案。本教程中讨论的解决方案由 SQL Server 管理员始终在可用性组上广泛采用。还可以将 SQL Server Always On 故障转移集群实例 (FCI) 等解决方案部署在 OCI 上,但本教程中未包含这些解决方案。
本教程以客户用例为灵感,通过将 SQL Server Always On 可用性组部署在 OCI 上的三个关键要素集中在一个文档中,实现差异化。
-
部署 SQL Server Always On 可用性组所需的体系结构。在 OCI 上部署 SQL Server 有一些细节,客户需要了解这些细节,以确保其 SQL Server Always On 可用性组部署成功。
-
部署 SQL Server Always On 可用性组时所需的先决条件。
-
用于部署双节点 SQL Server Always On 可用性组的逐步过程。这构成了教程的大部分内容。对于使用两个以上节点的部署,可以使用相同的过程。本教程介绍了使用 Windows 操作系统图形界面的过程,这使得它适合非高级用户。如果您是高级用户,则可以使用 Windows PowerShell 实施配置。
体系结构
本教程使用以下体系结构:
-
单个区域:部署由单个 OCI 区域组成。部署可以扩展到其他 OCI 区域,但此类配置不在本教程的范围内。
-
专用子网:除了 OCI 堡垒虚拟机 (VM) 外,所有资源都放置在专用区域子网中。
-
多个子网上的 SQL Server 节点:根据 Microsoft 建议,SQL Server 部署的两个节点中的每个节点都放置在不同的子网中。有关更多信息,请参见 Prerequisites for availability groups in multiple subnets (SQL Server on Azure VMs) 。SQL Server Always On 可用性组可以部署在单个子网中,但这不是 Microsoft 建议的体系结构。此外,它还需要使用 OCI 不支持的负载平衡器和功能(直接返回服务器)。
-
Windows Server Failover Cluster Quorum Witness(Windows Server 故障转移群集法定见证):始终在可用性组上在 Windows Server 故障转移群集 (WSFC) 上运行。WSFC 需要使用群集法定见证,其中有多个部署选项。本教程使用文件共享见证,因为它非常适合 OCI 部署。为此,将根据体系结构图预配法定见证 VM。
-
所需的 SQL Server IP:每个 SQL Server VM 都需要主虚拟网络接口卡 (Virtual Network Interface Card,VNIC) 中的以下 IP。
- 主 IP:操作系统访问(在 VM 预配时自动创建)。
- 辅助 IP 1: Windows Server 故障转移群集 IP。要在本教程中创建。
- 辅助 IP 2: SQL Server Always On 可用性组监听程序。要在本教程中创建。
-
需要账户
- 域管理员:域管理员执行本教程中的所有配置任务。还需要将此帐户配置为每个 SQL Server VM 上的本地管理员,以及每个 SQL Server 实例的 SQL Server 系统管理员固定服务器角色的成员。
- 服务帐户:用于 SQL Server 服务对两个 SQL Server 节点进行操作。
目标
创建和配置以下各项:
-
SQL Server Always On 可用性组所需的用户和帐户。
-
始终在可用性组的 Windows Server 故障转移集群。
-
SQL Server Always On 可用性组。
先决条件
-
网络
-
访问 OCI 租户和区间以放置所有资源。
-
根据体系结构图配置的网络。
- 1 个 VCN。
- 1 个公共子网和 4 个专用子网。
-
配置用于实施 SQL Server Always On 可用性组的安全列表规则 -
1433
和5022
端口已打开。 -
为在 OCI 中实施 Active Directory 配置的安全列表规则,如 OCI 白皮书在 OCI 中创建 Active Directory 域服务中所述。
-
我们可以使用本教程中显示的无类域间路由 (Classless Inter-Domain Routing,CIDR) 块,也可以根据您的云网络团队的建议选择 CIDR 块。
-
-
服务器
-
公共子网中的 1 个堡垒 VM,确保您可以连接到在专用子网上运行的 VM。
-
专用子网中的 1 个域控制器 VM。
-
专用子网中的 1 个法定 VM。
-
2 个 SQL Server VM,每个 VM 位于不同的专用子网中。
-
在 OCI 中运行 SQL Server 的方法有两种: OCI Marketplace Image 和 Bringing Your Own Microsoft License (BYOL) 。您可以随心所欲地使用。本教程假设我们有一个 SQL Server 默认实例安装(每个 VM 都安装一个 SQL Server)。
-
如果使用 OCI Marketplace 映像,预配过程将安装具有 opc 用户的 SQL Server。当我们将每个节点连接到域时,我们需要确保域管理员是本地管理员的一部分,这样我们就可以连接到 SQL Server Management Studio 上的每个 SQL Server 数据库实例。
-
在 SQL Server 节点 VM 上安装 SQL Server Management Studio。
-
-
Active Directory 域先决条件
-
域控制器添加到域控制器 VM 的功能和角色。
-
由 OS 管理员配置的域。本教程中的域控制器具有根域名
mssql.acme
。我们可以使用您选择的根域名配置域。 -
您可以查阅有关在 OCI 中创建 Active Directory 域服务的 OCI 白皮书。
-
已向域中添加 SQL Server VM 和法定 VM。
-
本教程的排除项
-
多区域:多区域部署是可能的,但超出了本教程的范围。有关详细信息,请参阅跨 Azure 区域配置多子网可用性组 - Azure VM 上的 SQL Server 。
-
存储:对于本教程,每个 VM 的引导卷将用作数据库的 SQL Server 系统信息库、备份和日志(它们都映射到
C:\
驱动器)。根据具体要求,您可能需要为数据库、备份和日志使用和配置单独的卷。我们需要注意的是,WSFC 使用来自169.254.\*
地址空间的 IP 进行内部通信,该 IP 与 OCI 地址空间重叠以公开 iSCSI 块设备。这将需要创建静态 IP 路由以在每个 SQL Server 节点 VM 中公开 iSCSI 目标门户。此类配置不在本教程的范围内。有关更多信息,请参见 Failover Clustering Networking Basics and Fundamentals 。 -
高可用性见证文件共享:本教程使用单个 VM 来共享法定见证文件。高可用性见证文件共享不在本教程的范围内。有关如何部署的详细信息,请参阅在 OCI 上部署高可用性 Windows 文件服务器。
任务 1:配置辅助 IP
对于每个 SQL Server 节点 VM,创建 Windows Server 故障转移集群和“始终启用”可用性组监听程序所需的辅助 IP。
-
在 OCI 控制台中,转至 SQL Server 节点 1 VM,然后在资源菜单中选择附加的 VNIC 。
-
选择主要 VNIC,然后在资源菜单中选择 IPv4 地址。
-
选择添加辅助专用 IP 地址,然后输入向 VNIC 添加新专用 IP 的详细信息。单击创建,我们将看到与此 VNIC 关联的新辅助 IP。这是 WSFC IP。
-
在同一 VNIC 中重复步骤 1 到 3,为“始终启用”可用性组监听程序创建另一个辅助 IP。
-
对其他 SQL Server 节点 VM 重复步骤 1 到 4。
任务 2:创建 SQL Server 服务帐户
SQL Server 需要使用专用域帐户。在此任务中,我们将创建此客户。稍后在教程中,我们使用此帐户在每个节点上配置 SQL Server 服务。
-
使用域管理员帐户登录到域控制器,然后导航到 Active Directory Users and Computers 。
-
展开您为此教程配置的域。
-
右键单击用户,然后选择新建用户以创建新用户。
-
输入以下详细信息,然后单击下一步。
-
输入此域帐户的密码,然后单击下一步。
-
复查详细信息,然后单击完成。
任务 3:配置见证文件共享
如上所述,本教程中的体系结构使用文件共享见证来实施法定见证。在此任务中,我们将创建一个共享文件夹。在后续任务中,我们将使用此共享文件夹配置 Windows Server 故障转移群集。
-
使用域管理员帐户登录到法定 VM 并创建见证人文件夹。
-
右键单击创建的文件夹,然后选择属性。在共享选项卡上,单击共享并选择所有人以共享文件夹。如果希望更严格,请选择在任务 2 中创建的 SQL Server 服务帐户。
-
我们将看到该文件夹已共享,单击完成。
任务 4:配置 Windows Server 故障转移群集
SQL Server Always On 可用性组在 Windows Server 故障转移集群 (WSFC) 技术上运行。在此任务中,我们将:
-
将 WSFC 角色添加到 SQL Server VM。
-
使用在任务 1 中创建的辅助 IP 和在任务 3 中创建的法定文件共享见证创建和配置群集。“始终在可用性组”功能将在后续任务中使用此集群。
任务 4.1:将 WSFC 角色添加到 SQL Server VM
-
使用域管理员登录到 SQL Server 节点 1 VM,打开服务器管理器,然后在仪表盘上单击添加角色和功能。
-
单击下一步继续执行安装类型。
-
选择基于角色或基于功能的安装,然后单击下一步。
-
在选择目标服务器中,选择服务器池中的服务器和 SQL Server 节点 1,然后单击下一步以继续。
-
在功能中,选择故障转移群集。执行此操作后,将显示一个窗口,然后单击添加功能。
-
在确认安装选择中,查看详细信息并单击安装以确认安装。
-
安装完成后,关闭向导。
-
要确认安装,请在搜索栏上键入 Failover Cluster Manager 。您可以打开它,并看到它尚未包含集群。
-
在其他 SQL Server 节点 VM 中重复步骤 1 到 8。
任务 4.2:创建集群
-
使用域管理员帐户登录到 SQL Server 节点 1 VM,然后打开 Failover Cluster Manager(故障转移群集管理器)。您将发现没有正在运行的集群。
-
右键单击 Failover Cluster Manager(故障转移集群管理器)并选择 Create Cluster...(创建集群 ...),这将打开 Create Cluster Wizard(创建集群向导)。
-
打开创建集群向导后,单击下一步以继续。
-
单击浏览并选择 SQL Server 节点 1 和 SQL Server 节点 2 VM。
-
确认已选择相应的节点,然后单击下一步。
-
选择 Yes,When I click Next,run the configuration tests,and return to the process of creating the cluster ,然后单击 Next 。
-
选择运行所有测试,然后单击下一步。
-
在 Confirmation 窗口中,单击 Next 。
等待所有测试完成。
-
单击 Finish(完成)。
-
输入 Cluster Name 并考虑 NetBIOS 约束条件。
-
在创建集群之前确认集群,然后单击下一步。
-
成功创建群集后,单击完成。
-
打开 Failover Cluster Manager(故障转移群集管理器),您将能够看到新创建的群集。
-
请注意, Cluster Core Resources 部分中的群集状态为 Offline 。展开资源并查找尚未配置的群集 IP 地址。我们将在几步后做到这一点。
任务 4.3:配置群集
-
在设置群集 IP 之前,我们将配置法定见证人。右键单击群集名称,选择 More Actions(更多操作)和 Configure Cluster Quorum Settings...(配置群集法定设置 ...)。这将打开配置向导。
-
在 Configure Cluster Quorum Wizard 窗口中,单击 Next 继续操作。
-
选择选择法定见证人,然后单击下一步。
-
选择配置文件共享见证人,然后单击下一步。
-
输入在任务 3 中配置的文件共享路径,然后单击下一步。
-
查看法定配置设置,然后单击 Next 。
-
将配置法定见证人。成功完成配置后,单击完成以关闭向导。
-
我们将任务 1 中创建的 IP 关联到集群。这将启动集群并使其运行。在 Failover Cluster Manager(故障转移群集管理器)上,展开 Cluster Core Resources(群集核心资源),右键单击状态为 Failed(失败)的 IP 地址,然后单击 Properties(属性)。
-
在一般信息选项卡中,指定在任务 1 中为此节点配置的静态 IP 地址,然后单击应用。
-
对其他 IP 重复步骤 8 和 9。您将正确设置群集。当群集名称资源联机时,它将使用新的 Active Directory 计算机对象更新域控制器服务器。现在,我们已准备好转到“始终启用”可用性组配置。
任务 5:为示例数据库配置始终可用组
在此任务中,我们将:
-
向集群在域中创建的虚拟计算机对象帐户授予适当的权限,这将允许集群创建“始终在可用性组”所需的资源。
-
在节点中启用“始终启用可用性组”功能。
-
为示例数据库配置“始终启用”可用性组。
-
为“始终启用”可用性组创建监听程序。
任务 5.1:向集群域计算机对象授予权限
-
使用域管理员帐户登录到域控制器,然后打开 Active Directory 用户和计算机。
-
单击查看并选择高级功能以查看高级功能。
-
右键单击计算机,然后选择属性。
-
转到 Security(安全)选项卡,然后单击 Add(添加)。
-
在 Users,Computers,Service Accounts,or Groups 向导中,单击 Object Types... 。
-
选择 Computers(计算机)并单击 OK(确定)。
-
输入集群的名称,然后单击确定。现在,我们将在组或用户名列表中看到集群计算机对象。
-
选择群集计算机对象,然后单击高级以配置权限。
-
在权限选项卡上,选择群集计算机对象,然后单击编辑。
-
选择创建计算机对象权限条目,然后单击确定。
-
现在,我们返回计算机的高级安全设置,然后依次单击应用和确定。因此,集群的计算机帐户具有“始终启用”可用性组工作所需的权限。
任务 5.2:在节点中启用“Always On(始终启用)”可用性组
-
使用域管理员帐户登录到 SQL Server 节点 1 VM,然后打开 SQL Server Configuration Manager 。
-
单击 SQL Server Services(SQL 服务器服务),右键单击 SQL Server (MSSQL SERVER) ,然后选择 Properties(属性)。
-
在始终在可用性组上选项卡上,选择启用始终在可用性组上。请注意已在任务 4.2 中创建的群集的名称,即 Windows Server Failover Cluster ,然后单击 Apply 。将显示用于重新启动服务的警告消息。单击确定以应用更改。将重新启动服务。
-
如果 SQL Server 服务未自动重新启动,则可以手动重新启动它,右键单击 SQL Server 服务并单击重新启动。
-
右键单击 SQL Server 服务,选择属性并转至登录选项卡。选择此帐户并输入在任务 2 中创建的 SQL Server 帐户详细信息。单击 Apply(应用),然后单击 OK(确定)。
-
对 SQL Server 节点 2 VM 重复步骤 1 到 5。
任务 5.3:为始终在可用性组创建和备份示例数据库
-
使用域管理员帐户登录到 SQL Server 节点 1 VM,打开 SQL Server Management Studio 并连接到该节点中的 SQL Server 实例。
-
选择新查询并使用创建数据库查询创建示例数据库,如下图中所示。
-
在对象浏览器上展开数据库,我们将找到在步骤 2 中创建的示例数据库。右键单击它,单击任务,然后单击备份 ... 。
-
选择完全作为备份类型。检查并确认备份目标,然后单击确定。
-
我们将看到一条消息,通知备份已成功完成。单击确定。
任务 5.4:为示例数据库创建可用性组
-
备份已创建,我们已准备好开始配置可用性组。右键单击始终在高可用性上,然后选择新建可用性组向导 ... 。
-
在创建新可用性组中,单击下一步以继续。
-
输入可用性组名称,选择 Windows Server Failover Cluster 作为集群类型,然后单击下一步。
-
选择在任务 5.3 中创建的示例数据库,然后单击下一步。
-
在 Specify Replicas(指定副本)窗口中,单击 Specify Replicas(指定副本)和 Add Replica...(添加副本 ...)以选择节点 2 副本。在窗口中,输入节点 2 服务器 VM 的名称,然后单击连接。
-
现在,我们将看到两个副本,一个具有主角色,另一个具有辅助角色。我们可以根据需求更改可用性模式。单击下一步,我们会注意到监听程序选项卡。现在跳过它。我们将在本教程的后面部分中配置监听程序。
-
在 Select Data Synchronization(选择数据同步)中,选择 Automatic seeding(自动植入)并单击 Next(下一步)。
-
将运行配置验证。我们可以看到,除了监听程序配置之外,所有验证结果都成功。单击下一步。
-
在概要中,单击完成以完成可用性组的创建和配置。
-
在结果中,我们将看到一条消息,通知您可用性组配置已成功完成。单击关闭。
可用性组已创建,我们可以在对象浏览器上查看其详细信息。
任务 5.5:创建可用性组监听程序
在本任务中,我们将为在任务 5.4 中创建的可用性组创建监听程序。监听程序是一个虚拟网络名称,用于在“始终启用”可用性组配置上提供与数据库的连接。它允许客户端连接到副本,而无需知道 SQL Server 的物理实例名称。由于监听程序路由流量,因此在发生故障转移后无需修改客户机连接字符串。
-
在对象浏览器上,展开可用性组和任务 5.4 中创建的可用性组,然后右键单击可用性组监听程序并选择添加监听程序 ... 。
-
为监听程序输入监听程序 DNS 名称,在网络模式中指定端口
1433
和 Static IP 。单击添加 ... 可添加在任务 1 中创建的监听程序 IP。 -
确保所连接节点的子网是选定的子网,然后输入 IPv4 地址,并在任务 1 中为监听程序创建辅助 IP,然后单击确定。
-
要添加第二个 IP,请再次单击 Add... 。确保选定的子网是其他节点的子网,并输入在任务 1 中为其他节点创建的辅助 IP 的 IP 地址。单击确定。
-
确认可以看到已配置的两个 IP,然后单击 OK(确定)完成监听程序创建。
-
转到对象浏览器,并确认监听程序出现在可用性组监听程序文件夹中。
在 SQL Server Management Studio 中,我们现在可以连接到监听程序,就像连接到任何 SQL Server 节点一样。您的“始终启用”可用性组配置已完成,并且您有一个监听程序来促进应用程序连接。您的部署现在可以进行故障转移,您可以手动执行。
相关链接
确认
- Authors - Ricardo Malhado(首席云解决方案架构师),Raphael Teixeira(首席云解决方案架构师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Deploy Microsoft SQL Server Always On Availability Groups for HA and DR on OCI
F92898-01
February 2024
Copyright © 2024, Oracle and/or its affiliates.