在 Azure Stack Hub 上部署 SQL Server 资源提供程序

重要

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

可以使用 Azure Stack Hub SQL Server 资源提供程序来将 SQL 数据库公开为 Azure Stack Hub 服务。

SQL 资源提供程序以服务的形式在 Windows Server 2016 Server Core 虚拟机上运行。

SQL 资源提供程序作为服务在专用的附加组件 RP Windows Server 上运行。

重要

只有资源提供程序才应在托管 SQL 或 MySQL 的服务器上创建项目。 在主机服务器上创建但不是由资源提供程序创建的项不受支持,可能导致状态不匹配。

先决条件

如果已安装资源提供程序,则可能已完成以下先决条件,可跳过此部分。 否则,请在继续之前完成以下步骤:

  1. 向 Azure 注册 Azure Stack Hub 实例(如果尚未这样做)。 此步骤是必需的,因为需要连接到 Azure 并将项目从 Azure 下载到市场。

  2. 如果不熟悉 Azure Stack Hub 管理员门户的“市场管理”功能,请参阅从 Azure 下载市场项并将其发布到 Azure Stack Hub。 此文逐步讲解如何将项目从 Azure 下载到 Azure Stack Hub 市场。 它涵盖了联网场景和离线场景。 如果 Azure Stack Hub 实例已断开连接或部分连接,则在准备安装时还需要完成其他先决条件操作。

  3. 更新 Azure Active Directory (Azure AD) 主目录。 从内部版本 1910 开始,必须在主目录租户中注册新应用程序。 此应用将允许 Azure Stack Hub 使用 Azure AD 租户成功创建和注册更新的资源提供程序(如事件中心等)。 这是在升级到内部版本 1910 或更高版本之后需要执行的一次性操作。 如果此步骤未完成,则商城资源提供程序安装会失败。

SQL Server 资源提供程序先决条件

  • 需要可访问以下项的计算机和帐户:

    • Azure Stack Hub 管理员门户
    • 特权终结点(只有在部署 SQL Server 资源提供程序 V1 或从 SQL Server 资源提供程序 V1 升级到 SQL Server 资源提供程序 V2 时才需要)。
    • Azure 资源管理器管理终结点 https://adminmanagement.region.<fqdn>,其中的 <fqdn> 是完全限定的域名。
    • Internet(如果 Azure Stack Hub 已部署为使用 Azure Active Directory (Azure AD) 作为标识提供者)。
  • 根据下面的版本映射表,下载受支持版本的 SQL 资源提供程序二进制文件。 对于 V2 SQL资源提供程序,请将市场项下载到 Azure Stack Hub。

    支持的 Azure Stack Hub 版本 SQL RP 版本 RP 服务正在其上运行的 Windows Server
    2108 SQL RP 版本 2.0.6.x Microsoft AzureStack 附加 RP Windows Server 1.2009.0
    2108, 2102, 2008, 2005 SQL RP 版本 1.1.93.5 Microsoft AzureStack 附加 RP Windows Server
  • 确保将所需的 Windows Server VM 下载到 Azure Stack Hub 市场。 如果需要,请根据上面的版本映射表手动下载映像。

  • 请确保满足数据中心集成先决条件:

    先决条件 参考
    正确设置了条件性 DNS 转发。 Azure Stack Hub 数据中心集成 - DNS
    资源提供程序的入站端口处于打开状态。 Azure Stack Hub 数据中心集成 - 入站端口和协议
    正确设置了 PKI 证书使用者和 SAN。 Azure Stack Hub 部署必备 PKI 先决条件
    Azure Stack Hub 部署 PaaS 证书先决条件
  • 准备证书。 (仅适用于集成系统安装。)

    • 必须提供 Azure Stack Hub 部署 PKI 要求中的“可选 PaaS 证书”部分所述的 SQL PaaS PKI 证书。 使用者可选名称 (SAN) 必须遵循以下命名模式:CN=*.dbadapter.<region>.<fqdn>,并受密码保护。 Screenshot of marketplace management downloaded packages.
    • 部署 SQL Server 资源提供程序 V1 时,将 .pfx 文件放在 DependencyFilesLocalPath 参数指定的位置。 对于 ASDK 系统,请不要提供证书。
    • 部署 SQL Server 资源提供程序 V2 时,请为以下安装步骤准备证书。

离线场景

在离线场景中部署 SQL Server 资源提供程序 V2 时,请按照将市场项下载到 Azure Stack Hub中的说明,将 SQL Server 资源提供程序项和 RP Windows 服务器加载项下载到 Azure Stack Hub 环境。

在离线场景中部署 SQL Server 资源提供程序 V1 时,请完成以下步骤下载所需的 PowerShell 模块,并手动注册存储库。

  1. 登录到已建立 Internet 连接的计算机,使用以下脚本下载 PowerShell 模块。

    Import-Module -Name PowerShellGet -ErrorAction Stop
    Import-Module -Name PackageManagement -ErrorAction Stop
    
    # path to save the packages, c:\temp\azs1.6.0 as an example here
    $Path = "c:\temp\azs1.6.0"
    
  2. 根据要部署的资源提供程序的版本,运行其中一个脚本。

    # for resource provider version >= 1.1.93.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.5.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.8.2
    
    # for resource provider version <= 1.1.47.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureRM -Path $Path -Force -RequiredVersion 2.3.0
    Save-Package -ProviderName NuGet -Source https://www.powershellgallery.com/api/v2 -Name AzureStack -Path $Path -Force -RequiredVersion 1.6.0
    
  3. 然后,将下载的包复制到 USB 设备。

  4. 登录到已断开连接的工作站,将包从 USB 设备复制到工作站中的某个位置。

  5. 将此位置注册为本地存储库。

    # requires -Version 5
    # requires -RunAsAdministrator
    # requires -Module PowerShellGet
    # requires -Module PackageManagement
    
    $SourceLocation = "C:\temp\azs1.6.0"
    $RepoName = "azs1.6.0"
    
    Register-PSRepository -Name $RepoName -SourceLocation $SourceLocation -InstallationPolicy Trusted
    
    New-Item -Path $env:ProgramFiles -name "SqlMySqlPsh" -ItemType "Directory"
    

部署 SQL 资源提供程序 V2

如果要从 V1 版本升级,请参阅文档更新 SQL Server 资源提供程序

开始安装

  1. 如果尚未登录,请登录到 Azure Stack Hub 管理员门户,选择左侧的“市场管理”,然后选择“资源提供程序”

  2. 下载了“SQL 资源提供程序”和所需的其他软件后,“市场管理”会显示状态为“未安装”的“SQL Server 资源提供程序”包。 可能还有状态显示为“已下载”的其他包。 Screenshot of marketplace management before installing the RP.

  3. 选择要安装的行。 “SQL Server 资源提供程序安装包”页面顶部显示一条蓝色横幅。 选择该横幅,开始安装。 Screenshot of marketplace management begin install.

安装必备组件

  1. 接下来,你将转到“安装”页。 选择“安装必备组件”开始安装过程。 Screenshot of marketplace management install prerequisites.

  2. 等到必备组件安装成功。 在继续下一步之前,你应该会在“安装必备组件”旁边看到一个绿色的复选标记。 Screenshot of marketplace management install prerequisites succeeded.

准备机密

  1. “2. 准备机密”步骤下,选择“添加证书”,此时会显示“添加证书”面板。 Screenshot of marketplace management prepare secrets.

  2. 选择“添加证书”上的“浏览”按钮(紧邻证书文件名字段的右侧)。 选择在完成先决条件时获取的 .pfx 证书文件。

  3. 输入在为 SQL Server 资源提供程序 SSL 证书创建安全字符串时提供的密码。 然后选择“添加” 。 Screenshot of marketplace management add certificate.

安装资源提供程序

  1. 证书安装成功后,在继续下一步之前,你应该会在“准备密钥”旁边看到一个绿色的复选标记。 现在,选择“3 安装资源提供程序”下面的“安装”按钮。 Screenshot of marketplace management start RP install.

  2. 接下来,你会看到以下页面,其中指示正在安装 SQL 资源提供程序。 Screenshot of marketplace management RP installing.

  3. 等待安装完成通知。 此过程通常要花费一小时或更长时间,具体取决于你的 Azure Stack Hub 类型。 Screenshot of marketplace management RP install in progress.

  4. 返回到“市场管理”的“资源提供程序”页,验证是否已成功安装 SQL Server 资源提供程序 。 SQL Server 资源提供程序的状态应显示为“已安装”。 Screenshot of marketplace management RP installed.

部署 SQL 资源提供程序 V1

完成所有先决条件后,运行自解压程序,将下载的安装包解压缩到临时目录。 可以在可访问 Azure Stack Hub Azure 资源管理器管理终结点和特权终结点的计算机中运行 DeploySqlProvider.ps1 脚本,以部署 SQL 资源提供程序。 DeploySqlProvider.ps1 脚本是从针对 Azure Stack Hub 版本下载的 SQL 资源提供程序二进制文件中提取的。

重要

在部署资源提供程序之前,请查看发行说明,了解新功能、修补程序以及任何可能影响部署的已知问题。

若要部署 SQL 资源提供程序,请打开一个权限提升的 PowerShell(不是 PowerShell ISE)窗口,并切换到解压缩后的 SQL 资源提供程序二进制文件所在的目录。

重要

强烈建议在运行部署或更新脚本之前,使用 Clear-AzureRmContext -Scope CurrentUser 和 Clear-AzureRmContext -Scope Process 清除缓存 。

运行 DeploySqlProvider.ps1 脚本,以完成以下任务:

  • 将证书和其他项目上传到 Azure Stack Hub 上的存储帐户。
  • 发布库包,以便可以使用库部署 SQL 数据库。
  • 发布用于部署宿主服务器的库包。
  • 使用下载的 Windows Server 2016 核心映像或 Microsoft AzureStack Add-on RP Windows Server 映像部署 VM,然后安装 SQL 资源提供程序。
  • 注册映射到资源提供程序 VM 的本地 DNS 记录。
  • 将资源提供程序注册到操作员帐户的本地 Azure 资源管理器。

注意

当 SQL 资源提供程序部署开始时,将创建 system.local.sqladapter 资源组。 可能需要花费多达 75 分钟才能完成此资源组的必需部署。 不要将任何其他资源置于 system.local.sqladapter 资源组中。

DeploySqlProvider.ps1 参数

可在命令行中指定以下参数。 如果未指定参数或任何参数验证失败,系统会提示提供所需的参数。

参数名称 说明 注释或默认值
CloudAdminCredential 访问特权终结点时所需的云管理员凭据。 必需
AzCredential Azure Stack Hub 服务管理员帐户的凭据。 使用部署 Azure Stack Hub 时所用的相同凭据。 如果用于 AzCredential 的帐户需要多重身份验证 (MFA),则脚本将失败。 必需
VMLocalCredential SQL 资源提供程序 VM 的本地管理员帐户的凭据。 必需
PrivilegedEndpoint 特权终结点的 IP 地址或 DNS 名称。 必需
AzureEnvironment 用于部署 Azure Stack Hub 的服务管理员帐户的 Azure 环境。 仅对于 Azure AD 部署是必需的。 支持的环境名称有 AzureCloud、AzureUSGovernment 或 AzureChinaCloud(如果使用的是中国 Azure AD) 。 AzureCloud
DependencyFilesLocalPath 对于集成系统,必须将证书 .pfx 文件放在此目录中。 还可以在此处复制一个 Windows Update MSU 包。 可选(对于集成系统为强制的 )
DefaultSSLCertificatePassword .pfx 证书的密码。 必需
MaxRetryCount 操作失败时,想要重试每个操作的次数。 2
RetryDuration 每两次重试的超时间隔(秒)。 120
卸载 删除资源提供程序和所有关联的资源(请参阅下面的注释)。
DebugMode 防止在失败时自动清除。

使用自定义脚本部署 SQL 资源提供程序

如果要部署 SQL 资源提供程序版本 1.1.33.0 或更早版本,则需要在 PowerShell 中安装特定版本的 AzureRm.BootStrapper 和 Azure Stack Hub 模块。

如果要部署 SQL 资源提供程序版本 1.1.47.0 或更高版本,则部署脚本会自动下载所需的 PowerShell 模块并将其安装到路径 C:\Program Files\SqlMySqlPsh。

# Install the AzureRM.Bootstrapper module, set the profile, and install the AzureStack module
# Note that this might not be the most currently available version of Azure Stack Hub PowerShell
Install-Module -Name AzureRm.BootStrapper -RequiredVersion 0.5.0 -Force
Use-AzureRmProfile -Profile 2018-03-01-hybrid -Force
Install-Module -Name AzureStack -RequiredVersion 1.6.0

注意

在断开连接的情况下,需要下载所需的 PowerShell 模块并手动注册存储库,这是先决条件。

若要在部署资源提供程序时消除任何手动配置,可以自定义以下脚本。 更改 Azure Stack Hub 部署所需的默认帐户信息和密码。

# Use the NetBIOS name for the Azure Stack Hub domain. On the Azure Stack Hub SDK, the default is AzureStack but could have been changed at install time.
$domain = "AzureStack"

# For integrated systems, use the IP address of one of the ERCS VMs
$privilegedEndpoint = "AzS-ERCS01"

# Provide the Azure environment used for deploying Azure Stack Hub. Required only for Azure AD deployments. Supported values for the <environment name> parameter are AzureCloud, AzureChinaCloud, or AzureUSGovernment depending which Azure subscription you're using.
$AzureEnvironment = "<EnvironmentName>"

# Point to the directory where the resource provider installation files were extracted.
$tempDir = 'C:\TEMP\SQLRP'

# The service admin account can be Azure Active Directory or Active Directory Federation Services.
$serviceAdmin = "admin@mydomain.onmicrosoft.com"
$AdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$AdminCreds = New-Object System.Management.Automation.PSCredential ($serviceAdmin, $AdminPass)

# Set credentials for the new resource provider VM local admin account.
$vmLocalAdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$vmLocalAdminCreds = New-Object System.Management.Automation.PSCredential ("sqlrpadmin", $vmLocalAdminPass)

# Add the cloudadmin credential that's required for privileged endpoint access.
$CloudAdminPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force
$CloudAdminCreds = New-Object System.Management.Automation.PSCredential ("$domain\cloudadmin", $CloudAdminPass)

# Change the following as appropriate.
$PfxPass = ConvertTo-SecureString 'P@ssw0rd1' -AsPlainText -Force

# For version 1.1.47.0 or later, the PowerShell modules used by the RP deployment are placed in C:\Program Files\SqlMySqlPsh
# The deployment script adds this path to the system $env:PSModulePath to ensure correct modules are used.
$rpModulePath = Join-Path -Path $env:ProgramFiles -ChildPath 'SqlMySqlPsh'
$env:PSModulePath = $env:PSModulePath + ";" + $rpModulePath 

# Change to the directory folder where you extracted the installation files. Don't provide a certificate on ASDK!
. $tempDir\DeploySQLProvider.ps1 `
    -AzCredential $AdminCreds `
    -VMLocalCredential $vmLocalAdminCreds `
    -CloudAdminCredential $cloudAdminCreds `
    -PrivilegedEndpoint $privilegedEndpoint `
    -AzureEnvironment $AzureEnvironment `
    -DefaultSSLCertificatePassword $PfxPass `
    -DependencyFilesLocalPath $tempDir\cert

资源提供程序安装脚本完成后,刷新浏览器以确保能够看到最新的更新,然后关闭当前 PowerShell 会话。

使用 Azure Stack Hub 门户验证 V1 部署

  1. 以服务管理员身份登录到管理员门户。
  2. 选择“资源组” 。
  3. 选择“system.<位置>.sqladapter”资源组。
  4. 在资源组概述摘要页上,应当没有失败的部署。
  5. 最后,在管理员门户中选择“虚拟机” ,以验证 SQL 资源提供程序 VM 是否已成功创建且正在运行。

Azure AD 的重要配置

如果 Azure Stack Hub 使用 Azure AD 作为标识提供者,请确保已安装 SQL Server 资源提供程序的 VM 具有出站 Internet 连接。

如果需要获取已安装 SQL Server 资源提供程序的 VM 的 IP(即,将 IP 添加到防火墙允许列表),则需要打开支持案例,让支持工程师使 SQL Server 资源提供程序订阅暂时可见。 然后,可以在订阅中找到该 VM 并获取其 IP。

后续步骤

添加宿主服务器