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

重要

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

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

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

MySQL 资源提供程序作为服务在特殊的附加组件 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. 更新 Microsoft Entra 主目录。 从内部版本 1910 开始,必须在主目录租户中注册新应用程序。 此应用将允许 Azure Stack Hub 使用 Microsoft Entra 租户成功创建和注册更新的资源提供程序(如事件中心等)。 这是在升级到内部版本 1910 或更高版本之后需要执行的一次性操作。 如果此步骤未完成,则商城资源提供程序安装会失败。

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

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

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

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

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

    先决条件 参考
    正确设置了条件性 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>,并受密码保护。 证书的屏幕截图。
    • 部署 MySQL Server 资源提供程序 V1 时,将 .pfx 文件放在 DependencyFilesLocalPath 参数指定的位置。 对于 ASDK 系统,请不要提供证书。
    • 部署 MySQL Server 资源提供程序 V2 时,请为以下安装步骤准备证书。

离线场景

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

在离线场景中部署 MySQL 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" 
    

部署 MySQL 资源提供程序 V2

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

开始安装

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

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

    安装 RP 之前的市场管理的屏幕截图。

  3. 选择要安装的行。 “MySQL Server 资源提供程序安装包”页面顶部显示一条蓝色横幅。 选择该横幅,开始安装。 市场管理开始 RP 安装的屏幕截图。

安装先决条件

  1. 接下来,你将转到“安装”页。 选择“安装必备组件”开始安装过程。 市场管理安装先决条件的屏幕截图。

  2. 等到必备组件安装成功。 在继续下一步之前,你应该会在“安装必备组件”旁边看到一个绿色的复选标记。 市场管理安装先决条件成功的屏幕截图。

准备机密

  1. “2. 准备机密”步骤下,选择“添加证书”,此时会显示“添加证书”面板。 市场管理准备机密的屏幕截图。

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

  3. 输入在为 SQL Server 资源提供程序 SSL 证书创建安全字符串时提供的密码。 然后选择“添加” 。 市场管理添加证书的屏幕截图。

配置和安装资源提供程序

  1. 证书安装成功后,在继续下一步之前,你应该会在“准备密钥”旁边看到一个绿色的复选标记。 现在,选择“3 安装资源提供程序”下面的“配置 + 安装”按钮。 市场管理开始 RP 安装的屏幕截图。

  2. 接下来,需要为 MySQL 连接器提供 Azure Stack Hub Blob URI。

    • 此处查看 MySQL 连接器的 GPL 许可证并将版本 8.0.21 下载到本地文件夹。

    • 使用默认操作员订阅创建存储帐户,并创建访问级别为“Blob”或“容器”的容器。 创建存储帐户的屏幕截图。创建存储容器的屏幕截图。

    • 将 mysql-connector-net-8.0.21.msi 文件从本地文件夹上传到新创建的存储容器。 将 MySQL 连接器上传到容器的屏幕截图。

    重要

    请确保 MySQL 连接器的版本为 8.0.21。

    • 复制 Blob URI。 复制 MySQL 连接器 URI 的屏幕截图。

    • 返回到 MySQL RP 配置页。 粘贴 blob URI(例如 https://< storageAccountName.blob>.<region>.<FQDN>/<containerName>/mysql-connector-net-8.0.21.msi)到文本框,然后单击“确定”。 提供 MySQL 连接器 URI 的屏幕截图。

  3. 接下来,你会看到以下页面,其中指示正在安装 MySQL 资源提供程序。 市场管理 RP 安装的屏幕截图。

  4. 等待安装完成通知。 此过程通常要花费一小时或更长时间,具体取决于你的 Azure Stack Hub 类型。 正在进行市场管理 RP 安装的屏幕截图。

  5. 返回到“市场管理”的“资源提供程序”页,验证是否已成功安装 MySQL Server 资源提供程序 。 MySQL Server 资源提供程序的状态应显示为“已安装”。 市场管理 RP 已安装的屏幕截图。

部署 SQL 资源提供程序 V1

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

重要

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

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

重要

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

注意

如果要在断开连接的环境中部署 MySQL Server 资源提供程序 V1,请将 mysql-connector-net-6.10.5.msi 文件复制到本地路径。 使用 DependencyFilesLocalPath 参数提供路径名称。

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

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

注意

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

DeployMySqlProvider.ps1 参数

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

参数名称 说明 注释或默认值
CloudAdminCredential 访问特权终结点时所需的云管理员凭据。 必需
AzCredential Azure Stack Hub 服务管理员帐户的凭据。 使用部署 Azure Stack Hub 时所用的相同凭据。 如果用于 AzCredential 的帐户需要多重身份验证 (MFA),脚本将失败。 必需
VMLocalCredential MySQL 资源提供程序 VM 的本地管理员帐户的凭据。 必需
PrivilegedEndpoint 特权终结点的 IP 地址或 DNS 名称。 必需
AzureEnvironment 用于部署 Azure Stack Hub 的服务管理员帐户的 Azure 环境。 仅对于 Microsoft Entra 部署为必需项。 受支持的环境名称是 AzureChinaCloud AzureChinaCloud
DependencyFilesLocalPath 对于集成系统,必须将证书 .pfx 文件放在此目录中。 对于已断开连接的环境,请将 mysql-connector-net-6.10.5.msi 下载到此目录。 还可以在此处复制一个 Windows Update MSU 包。 可选(对于集成系统或断开连接的系统,则为强制 )
DefaultSSLCertificatePassword .pfx 证书的密码。 必需
MaxRetryCount 操作失败时,想要重试每个操作的次数。 2
RetryDuration 每两次重试的超时间隔(秒)。 120
卸载 删除资源提供程序和所有关联的资源(请参阅下面的注释)。
DebugMode 防止在失败时自动清除。
AcceptLicense 跳过接受 GPL 许可条款的提示。 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

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

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

如果要部署 MySQL 资源提供程序版本 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 -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 environment name is AzureChinaCloud. 
$AzureEnvironment = "<EnvironmentName>"

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

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

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

# And the cloudadmin credential 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\DeployMySQLProvider.ps1 `
    -AzCredential $AdminCreds `
    -VMLocalCredential $vmLocalAdminCreds `
    -CloudAdminCredential $cloudAdminCreds `
    -PrivilegedEndpoint $privilegedEndpoint `
    -AzureEnvironment $AzureEnvironment `
    -DefaultSSLCertificatePassword $PfxPass `
    -DependencyFilesLocalPath $tempDir\cert `
    -AcceptLicense

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

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

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

Microsoft Entra ID 的重要配置

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

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

后续步骤

添加宿主服务器