使用 Azure Stack Hub 创建高可用 SQL 数据库

重要

从 Azure Stack Hub 2108 版开始,SQL 和 MySQL 资源提供程序将提供给已获得访问权限的订阅。 如果想要开始使用此功能,或者需要从之前的版本升级,请创建支持案例,我们的支持工程师将指导你完成部署或升级过程。

作为 Azure Stack Hub 操作员,你可以配置服务器 VM 来承载 SQL Server 数据库。 通过 Azure Stack Hub 创建和管理 SQL 宿主服务器后,订阅了 SQL 服务的用户可以轻松地创建 SQL 数据库。

本文介绍了如何使用 Azure Stack Hub 快速入门模板创建 SQL Server AlwaysOn 可用性组,将其添加为 Azure Stack Hub SQL 宿主服务器,然后创建高可用 SQL 数据库。

学习内容:

  • 基于模板创建 SQL Server AlwaysOn 可用性组。
  • 将 SQL Server AlwaysOn 可用性组配置为 Azure Stack Hub SQL 宿主服务器。
  • 创建高可用 SQL 数据库。

将使用可用的 Azure Stack 市场项创建并配置包含两个 VM SQL Server 的 AlwaysOn 可用性组。

在开始之前,请确保已成功安装了 SQL Server 资源提供程序并且以下项在 Azure Stack 市场中可用:

重要

要使用 Azure Stack Hub 快速入门模板,需要备齐以下所有项。

  • Windows Server 2016 Datacenter。

  • Windows Server 2016 服务器映像上的 SQL Server 2016 SP1 或 SP2(企业版或开发人员版)。

    注意

    标准版本不受支持。 通过 SQL Server Standard 版本设置 SQL Server AlwaysOn 可用性组时,只能为一个可用性组创建一个数据库。 此限制使 Standard 版本不适用于我们的方案。 有关更多详细信息,请查看此处的文档。

  • SQL Server IaaS 扩展 1.3.20180 或更高版本。 SQL IaaS 扩展会为所有 Windows 版本安装市场 SQL Server 项所需的必要组件。 它允许在 SQL 虚拟机 (VM) 上配置 SQL 特定的设置。 如果未在本地市场安装该扩展,则 SQL 的预配将会失败。

若要详细了解如何向 Azure Stack 市场中添加项,请参阅 Azure Stack Hub 市场概述

创建 SQL Server AlwaysOn 可用性组

执行本部分中的步骤,通过使用 sql-2016-alwayson Azure Stack Hub 快速入门模板来部署 SQL Server AlwaysOn 可用性组。 此模板在 Always On 可用性组中部署两个 SQL Server Enterprise 或 Developer 实例。 它创建以下资源:

  • 一个网络安全组。
  • 一个虚拟网络。
  • 四个存储帐户(一个用于 Active Directory (AD),一个用于 SQL,一个用于文件共享见证,另一个用于 VM 诊断)。
  • 四个公共 IP 地址(一个用于 AD,两个用于单个 SQL VM,另一个用于绑定到 SQL AlwaysOn 侦听器的公共负载均衡器)。
  • 一个用于 SQL VM 的外部负载均衡器,该 VM 的公共 IP 已绑定到 SQL AlwaysOn 侦听器。
  • 一个 VM (Windows Server 2016),配置为包含单个域的新林的域控制器。
  • 两个 VM (Windows Server 2016),配置有 SQL Server 2016 SP1 或 SP2 Enterprise 或 Developer Edition 并加入了群集。 它们必须是市场映像。
  • 一个 VM (Windows Server 2016),配置为群集的文件共享见证。
  • 一个包含 SQL 和文件共享见证 VM 的可用性集。
  1. 登录到用户门户:

    • 对于集成系统部署,门户地址将根据解决方案的区域和外部域名而有所不同。 它将采用 https://portal.<region>.<FQDN> 格式。
    • 对于 Azure Stack 开发工具包 (ASDK),门户地址为 https://portal.local.azurestack.external
  2. 选择“+创建资源”>“自定义”,然后选择“模板部署”。

    Custom template deployment in Azure Stack Hub administrator portal

  3. 在“自定义部署”边栏选项卡上,选择“编辑模板”>“快速入门模板”,然后在可用自定义模板的下拉列表中选择“sql-2016-alwayson”模板。 选择“确定”,然后选择“保存”

    Edit template in Azure Stack Hub administrator portal

  4. 在“自定义部署”边栏选项卡上,选择“编辑参数”并查看默认值。 根据需要修改这些值以提供全部所需的参数信息,然后选择“确定”。

    至少:

    • 为 ADMINPASSWORD、SQLSERVERSERVICEACCOUNTPASSWORD 和 SQLAUTHPASSWORD 参数提供复杂的密码。
    • 对于 DNSSUFFIX 参数,以全小写字母输入用于反向查找的 DNS 后缀(对于 2107 版之前的 ASDK 安装,此后缀为 azurestack.external)。

    Edit parameters in Azure Stack Hub administrator portal

  5. 在“自定义部署”边栏选项卡上,选择要使用的订阅,然后为自定义部署创建新的资源组或选择现有的资源组。

    接下来,选择资源组的位置(对于 2107 版之前的 ASDK 安装,请选择“本地”),然后单击“创建”。 系统将验证自定义部署设置,然后开始部署。

    Choose subscription in Azure Stack Hub administrator portal

  6. 在用户门户中,选择“资源组”,然后选择针对自定义部署创建的资源组的名称(在本示例中为 resource-group)。 查看部署状态,确保所有部署已成功完成。

    接下来,查看资源组项,并选择“SQLPIPsql<资源组名称>”公共 IP 地址项。 记录负载均衡器的公共 IP 地址和完整 FQDN。 你需要将此信息提供给 Azure Stack Hub 操作员,以便他们可以利用此 SQL AlwaysOn 可用性组创建一个 SQL 宿主服务器。

    注意

    模板部署需要几个小时才能完成。

启用自动种子设定

在模板成功部署并配置 SQL AlwaysON 可用性组之后,必须在可用性组中的每个 SQL Server 实例上启用自动种子设定

当你创建可以自动设定种子的可用性组时,SQL Server 会自动为该组中的每个数据库创建次要副本,不需要你进行任何其他的手动干预。 此度量值可确保 AlwaysOn 数据库的高可用性。

使用这些 SQL 命令为 AlwaysOn 可用性组配置自动种子设定功能。 根据需要,将 <PrimaryInstanceName> 替换为主实例 SQL Server 名称,将 <SecondaryInstanceName> 替换为辅助实例 SQL Server 名称,将 <availability_group_name> 替换为 AlwaysOn 可用性组名称。

在主 SQL 实例上:

ALTER AVAILABILITY GROUP [<availability_group_name>]
    MODIFY REPLICA ON '<PrimaryInstanceName>'
    WITH (SEEDING_MODE = AUTOMATIC)
GO

ALTER AVAILABILITY GROUP [<availability_group_name>]
    MODIFY REPLICA ON '<SecondaryInstanceName>'
    WITH (SEEDING_MODE = AUTOMATIC)
GO

Primary SQL instance script

在辅助 SQL 实例上:

ALTER AVAILABILITY GROUP [<availability_group_name>] GRANT CREATE ANY DATABASE
GO

Secondary SQL instance script

配置包含的数据库身份验证

将包含的数据库添加到可用性组之前,请确保在托管可用性组可用性副本的每个服务器实例上,包含的数据库身份验证服务器选项已设置为 1。 有关详细信息,请参阅包含的数据库身份验证

使用以下命令为可用性组中的每个 SQL Server 实例设置包含的数据库身份验证服务器选项:

EXEC sp_configure 'contained database authentication', 1
GO
RECONFIGURE
GO

Set contained database authentication

配置 Azure Stack Hub SQL 宿主服务器

创建并正确配置 SQL Server AlwayOn 可用性组后,Azure Stack Hub 操作员必须将其配置为 Azure Stack Hub SQL 宿主服务器。

在创建 SQL AlwaysOn 可用性组的资源组(SQLPIPsql<资源组名称>)时,请确保使用先前记录的 SQL 负载均衡器的公共 IP 或公共 IP 的完整 FQDN。 此外,你还需要知道用于访问 AlwaysOn 可用性组中的 SQL 实例的 SQL Server 身份验证凭据。

注意

此步骤必须由 Azure Stack Hub 操作员从 Azure Stack Hub 管理员门户运行。

使用 SQL AlwaysOn 可用性组的负载均衡器侦听器公共 IP 和 SQL 身份验证登录信息,Azure Stack Hub 操作员可以使用 SQL AlwaysOn 可用性组创建 SQL 宿主服务器

此外,请确保你已创建计划和套餐,使得用户可以创建 SQL AlwaysOn 数据库。 操作员需要将 Microsoft.SqlAdapter 服务添加到计划并专门为高可用数据库创建新配额。 有关创建计划的详细信息,请参阅服务、计划、套餐和订阅概述

提示

部署 SQL Server 资源提供程序之前,无法将 Microsoft.sqladapter 服务添加到计划中。

创建高可用 SQL 数据库

在 Azure Stack Hub 操作员创建、配置并添加 SQL AlwaysOn 可用性组作为 Azure Stack Hub SQL 宿主服务器之后,订阅中包含 SQL Server 数据库功能的租户用户可以创建支持 AlwaysOn 功能的 SQL 数据库。 他们可以按照本部分中的步骤创建这些数据库。

注意

从 Azure Stack Hub 用户门户以订阅中提供了 SQL Server 功能(Microsoft.SQLAdapter 服务)的租户用户身份运行这些步骤。

  1. 登录到用户门户:

    • 对于集成系统部署,门户地址将根据解决方案的区域和外部域名而有所不同。 它将采用 https://portal.<region>.<FQDN> 格式。
    • 对于 Azure Stack 开发工具包 (ASDK),门户地址为 https://portal.local.azurestack.external
  2. 选择“+创建资源”>“数据 + 存储”,然后选择“SQL 数据库”。

    提供所需的数据库属性信息。 此信息包括名称、排序规则、最大大小,以及要用于部署的订阅、资源组和位置。

    Create SQL database in Azure Stack Hub user portal

  3. 选择“SKU”,然后选择要使用的相应 SQL 宿主服务器 SKU。 在此示例中,Azure Stack Hub 操作员创建了“企业高可用性”SKU,以支持 SQL AlwaysOn 可用性组的高可用性。

    Select SKU in Azure Stack Hub user portal

  4. 选择“登录名”>“创建新的登录名”,然后提供要用于新数据库的 SQL 身份验证凭据。 完成后,选择“确定”,然后选择“创建”以开始数据库部署过程。

    Create login in Azure Stack Hub user portal

  5. 当 SQL 数据库部署成功完成时,查看数据库属性以发现用于连接到新的高可用数据库的连接字符串。

    View connection string in Azure Stack Hub user portal

后续步骤

更新 SQL 资源提供程序