Azure Stack Hub 上的应用服务 25R1 发行说明

这些发行说明介绍了 Azure Stack Hub 25R1 版本中 Azure 应用服务的改进和修复,以及任何已知问题。 已知问题分为与部署、更新过程直接相关的问题,以及内部版本(安装后)的问题。

重要

在部署或更新应用服务资源提供程序(RP)之前,如有必要,请将 Azure Stack Hub 更新为受支持的版本。 请务必阅读 RP 发行说明,了解可能影响部署的新功能、修补程序和任何已知问题。

支持的最低 Azure Stack Hub 版本 应用服务 RP 版本
2311 及更高版本 25R1 Installer 25R1 离线包发行说明

内部版本参考

Azure Stack Hub 25R1 上的应用服务内部版本号为 102.10.2.11

有什么新鲜事吗?

Azure Stack Hub 25 R1 上的 Azure 应用服务为 Azure Stack Hub 带来了新的更新,并在以前发布的 24R1(24R1 发行说明)的基础上生成。 客户无需先部署 24R1 即可直接安装 25R1。

  • .NET 8 和 9 的更新。
  • Azure Stack Hub 资源提供程序上的应用服务更新。
  • 解决 [客户遇到 24R1 的问题](## 在此版本中修复的问题)。

重要

使用 Azure Stack Hub 25R1 上的 Azure 应用服务,操作员必须通过完整脱机安装或升级路径进行部署或更新。 在部署文档或更新文档中提供了下载链接,链接指向安装程序、辅助脚本以及离线包的 zip 文件。

先决条件

在开始部署之前,请参阅准备工作文档

开始将 Azure Stack 上的 Azure 应用服务升级到 25R1 之前:

  • 确保 Azure Stack Hub 已更新到 1.2311.1.22 或更高版本。

  • 确保 Azure Stack Hub 管理门户的 Azure 应用服务管理中所有角色都处于 就绪 状态。

  • 在 Azure Stack Hub 管理门户中使用应用服务管理备份应用服务机密。

  • 备份应用程序服务和 SQL Server Master 数据库:

    • AppService_Hosting;
    • AppService_Metering;
    • 主节点
  • 备份租户应用内容文件共享。

    重要

    云操作员负责文件服务器和 SQL Server 的维护和操作。 资源提供程序不管理这些资源。 云操作员负责备份应用程序服务数据库和租户内容文件共享。

  • 同步发布市场的自定义脚本扩展版本 1.9.3

更新

Azure Stack Update 25R1 上的 Azure 应用服务包含以下改进和修复:

  • 针对应用程序服务租户、管理员、函数门户和 Kudu 工具的更新。 与 Azure Stack 门户 SDK 版本一致。

  • 将 Azure Functions 运行时更新为 1.0.23001

  • 针对核心服务的更新,用于提高可靠性和错误消息传递,以便更轻松地诊断常见问题。

  • 对以下应用程序框架和工具的更新:

    • .NET Framework 3.5 和 4.8.1
    • ASP.NET Core
      • 9.0.3
      • 9.0.201
      • 8.0.407
      • 8.0.14
    • MSBuild
      • 17.12.0
    • MSDeploy
      • 3.5.140404
      • 3.5.140521
    • NodeJS
      • 10.15.2
      • 14.20.0
      • 16.16.0
      • 18.20.4
      • 18.20.7
      • 20.9.0
      • 20.18.3
      • 22.5.1
      • 22.14.0
    • npm
      • 6.4.1
      • 10.7.0
      • 10.8.2
      • 10.9.2
    • Git 2.46.0
    • VC14 可转发组件 14.40.33810
    • SQL Native Client 11.0.2100.60
    • 将 Kudu 更新为 103.0.1.100
    • 持续辅助功能和可用性更新
  • 对所有角色的基础操作系统的更新

  • Windows Server 的累积更新现在会在部署和升级过程中应用到控制器角色

  • 就地同步密码套件,并保留客户通过支持进行干预后所执行的任何修改。

此版本中已修复的问题

此版本中新修复的问题:

  • 升级期间不应再预期应用程序停机。 在 24R1 中,由于在升级期间 Web 服务器集群中的通信格式更改导致的问题,引起了重大停机。 此更新中对通信变更的处理进行了修改,因此在 25R1 中不会导致停机。

  • 解决 Kudu 和 SCM 站点的基于角色的访问控制和单一登录时遇到的问题

  • 进一步改进使用情况记录服务,以更有效地处理使用记录提交期间的故障和中断

  • 解决了 Kudu 中由于作业卡住而无法启动新 Web 作业的问题。

  • 解决了在使用部署模板横向扩展应用服务计划时未检查工作者限制的问题

  • 解决了在管理服务器证书中的所有名称均为通配符格式时,在配置中设置了无效的数据服务终结点的问题。

  • 在资源提供程序数据平面的所有连接字符串上强制实施 tcp 前缀,并确保所有角色在轮换期间都接收更新的连接字符串

  • 租户门户中已启用健康检查功能

更新前步骤

  • 自 Azure Stack Hub 上的 Azure 应用程序服务 2022 H1 更新起,字母 K 现在是保留的 SKU 字母。如果你有使用字母 K 定义的自定义 SKU,请在升级前联系支持人员,让其协助你解决此问题。

查看更新的已知问题,并采取规定的操作。

部署后步骤

重要

如果应用服务资源提供程序配置了 SQL Always On 实例,则必须 将appservice_hosting和appservice_metering数据库添加到可用性组。 添加后,您必须同步化数据库,以防止在发生数据库故障转移时服务中断。

已知问题(更新)

  • 在你将 appservice_hosting 和 appservice_metering 数据库转换为包含数据库的情况下,如果登录没有成功迁移到包含用户,则升级可能会失败。

    将 appservice_hosting 和 appservice_metering 数据库在部署后转换为独立数据库的客户,若未成功将数据库登录名迁移到独立用户,可能会遇到升级失败。

    在将 Azure Stack Hub 上的 Azure 应用服务安装升级到 2020 年第三季度版本之前,客户必须在托管 appservice_hosting 和 appservice_metering 的 SQL Server 上执行以下脚本。 此脚本是不可破坏的,不会导致停机。

    必须在满足以下条件的情况下运行此脚本:

    • 由具有系统管理员权限的用户(例如 SQL SA(系统管理员)帐户)执行;

    • 如果使用 SQL Always On,请确保从包含了以下格式的所有应用程序服务登录名的 SQL 实例中运行该脚本:

      • appservice_hosting_FileServer
      • 应用服务_托管_托管管理员
      • appservice_hosting_LoadBalancer
      • 应用服务托管_操作
      • 应用服务_托管_发布者
      • appservice_hosting_SecurePublisher
      • appservice_hosting_WebWorkerManager
      • appservice_metering_Common
      • appservice_metering_Operations (应用服务计量操作)
      • 所有 WebWorker 登录名,其格式为 WebWorker_<实例 IP 地址>
              USE appservice_hosting
              IF EXISTS(SELECT * FROM sys.databases WHERE Name=DB_NAME() AND containment = 1)
              BEGIN
              DECLARE @username sysname ;  
              DECLARE user_cursor CURSOR  
              FOR
                  SELECT dp.name
                  FROM sys.database_principals AS dp  
                  JOIN sys.server_principals AS sp
                      ON dp.sid = sp.sid  
                      WHERE dp.authentication_type = 1 AND dp.name NOT IN ('dbo','sys','guest','INFORMATION_SCHEMA');
                  OPEN user_cursor  
                  FETCH NEXT FROM user_cursor INTO @username  
                      WHILE @@FETCH_STATUS = 0  
                      BEGIN  
                          EXECUTE sp_migrate_user_to_contained
                          @username = @username,  
                          @rename = N'copy_login_name',  
                          @disablelogin = N'do_not_disable_login';  
                      FETCH NEXT FROM user_cursor INTO @username  
                  END  
                  CLOSE user_cursor ;  
                  DEALLOCATE user_cursor ;
                  END
              GO
      
              USE appservice_metering
              IF EXISTS(SELECT * FROM sys.databases WHERE Name=DB_NAME() AND containment = 1)
              BEGIN
              DECLARE @username sysname ;  
              DECLARE user_cursor CURSOR  
              FOR
                  SELECT dp.name
                  FROM sys.database_principals AS dp  
                  JOIN sys.server_principals AS sp
                      ON dp.sid = sp.sid  
                      WHERE dp.authentication_type = 1 AND dp.name NOT IN ('dbo','sys','guest','INFORMATION_SCHEMA');
                  OPEN user_cursor  
                  FETCH NEXT FROM user_cursor INTO @username  
                      WHILE @@FETCH_STATUS = 0  
                      BEGIN  
                          EXECUTE sp_migrate_user_to_contained
                          @username = @username,  
                          @rename = N'copy_login_name',  
                          @disablelogin = N'do_not_disable_login';  
                      FETCH NEXT FROM user_cursor INTO @username  
                  END  
                  CLOSE user_cursor ;  
                  DEALLOCATE user_cursor ;
                  END
              GO
      
  • 必须在创建的标识应用程序中添加一个新的重定向 URL,以支持单点登录 (SSO) 场景(例如 Kudu)。

检索身份验证应用程序客户端 ID

  1. 在 Azure Stack 管理门户中,导航到 ControllersNSG 网络安全组。
  2. 默认情况下,对所有应用服务基础结构角色禁用远程桌面访问。 将“Inbound_Rdp_3389”规则操作修改为“允许”访问。
  3. 导航到包含应用服务资源提供程序部署的资源组。 默认情况下,资源组以格式 AppService.<region>命名,并连接到 CN0-VM
  4. 启动 Web 云管理控制台
  5. 检查 Web 云管理控制台 -> Web 云屏幕,并验证两个控制器是否都已就绪
  6. 选择“设置”。
  7. 查找 ApplicationClientId 设置。 检索值。
  8. 在 Azure Stack 管理门户中,导航回“ControllersNSG”网络安全组。
  9. 修改“Inbound_Rdp_3389”规则以拒绝访问。

使用新的重定向 URI 更新 Entra ID 应用程序

  1. 登录到 Azure 门户,访问在部署时将 Azure Stack Hub 连接到的 Entra ID 租户。
  2. 使用 Azure 门户,导航到 Microsoft Entra ID
  3. 在租户中搜索之前检索的 ApplicationClientId
  4. 选择应用程序。
  5. 选择身份验证
  6. 在现有列表: 中再添加一个https://azsstamp.sso.appservice.<region>.<DomainName>.<extension>

已知问题(安装后)

  • 在现有虚拟网络中部署应用服务时,工作实例无法访问文件服务器。 文件服务器仅在专用网络上可用,如 Azure Stack 上的 Azure 应用服务部署文档中所述。

    在初始部署期间,如果选择将部署到现有虚拟网络并使用内部 IP 地址,则可以连接到文件服务器。 必须添加一条出站安全规则,以启用工作子网和文件服务器之间的 SMB(服务器消息块)流量。 转到管理门户中的 WorkersNsg 并添加具有以下属性的出站安全规则:

    • 源:任何
    • 源端口范围:*
    • 目标:IP 地址
    • 目标 IP 地址范围:文件服务器的 IP 范围
    • 目标端口范围:445
    • 协议:TCP
    • 操作:允许
    • 优先级:700
    • 名称:Outbound_Allow_SMB445
  • 若要在工作实例与文件服务器通信时消除延迟,我们还建议将以下规则添加到工作 NSG(网络安全组)。 此规则允许出站 LDAP(轻量目录访问协议)和 Kerberos 流量在使用 Active Directory 保护文件服务器时流向 Active Directory 控制器。 例如,如果使用快速入门模板部署 HA 文件服务器和 SQL Server。

    转到管理门户中的 WorkersNsg 并添加具有以下属性的出站安全规则:

    • 源:任何
    • 源端口范围:*
    • 目标:IP 地址
    • 目标 IP 地址范围:AD 服务器的 IP 范围,例如,使用快速开始模板 10.0.0.100、10.0.0.101
    • 目标端口范围:389,88
    • 协议: 任何
    • 操作:允许
    • 优先级:710
    • 名称:Outbound_Allow_LDAP_and_Kerberos_to_Domain_Controllers

云管理员在操作基于 Azure Stack 的 Azure 应用程序服务时的已知问题

  • 自定义域在离线环境中不受支持。

    应用程序服务针对公共 DNS(域名系统)终结点执行域所有权验证。 因此,在离线方案中不支持自定义域。

  • 不支持 Web 和函数应用的虚拟网络集成。

    向 Web 和函数应用中添加虚拟网络集成的功能显示在 Azure Stack Hub 门户中,但如果租户尝试进行配置,则会收到内部服务器错误。 Azure Stack Hub 上的 Azure 应用程序服务不支持此功能。

后续步骤