Azure Stack Hub 上的应用程序服务 24R1 发行说明
这些发行说明介绍了 Azure Stack Hub 上的 Azure 应用程序服务 24R1 发行版中的改进和修复,以及任何已知问题。 已知问题分为与部署、更新过程直接相关的问题,以及内部版本(安装后)的问题。
重要
在部署或更新应用程序服务资源提供程序 (RP) 之前,如有必要,请将 Azure Stack Hub 更新为受支持的版本。 请务必阅读 RP 发行说明,了解新功能、修补程序以及可能影响部署的任何已知问题。
支持的最低 Azure Stack Hub 版本 | 应用程序服务 RP 版本 |
---|---|
2311 及更高版本 | 24R1 安装程序(发行说明) |
内部版本参考
Azure Stack Hub 上的应用程序服务 24R1 的内部版本号为 102.0.2.5
有什么新变化?
Azure Stack Hub 上的 Azure 应用程序服务 24 R1 为 Azure Stack Hub 引入了新的更新。
- Kestrel 和 YARP(另一种反向代理)现在为 Azure Stack Hub 前端上的应用程序服务提供支持,与在公共云方面的投资保持一致。 有关这意味着什么以及它如何影响公有云服务的详细信息,请阅读应用程序服务团队博客中的详细信息 -“重任在肩:将 Kestrel + YARP 引入 Azure 应用程序服务”
- 更新了许多应用程序堆栈,带来最新的 .NET、Java、Tomcat 等长期支持 (LTS) 版本。
- 租户可使用运行状况检查功能来监控实例的运行状况
先决条件
在开始部署之前,请参阅准备工作文档。
在开始将 Azure Stack 上的 Azure 应用程序服务升级到 24R1 之前,请满足以下先决条件:
确保 Azure Stack Hub 已更新到 1.2311.1.22 或更高版本。
确保 Azure Stack Hub 管理门户的 Azure 应用服务管理中所有角色都处于 就绪 状态。
在 Azure Stack Hub 管理门户中使用应用服务管理备份应用服务机密。
备份应用程序服务和 SQL Server Master 数据库:
- AppService_Hosting;
- AppService_Metering;
- Master
备份租户应用内容文件共享。
重要
云操作员负责文件服务器和 SQL Server 的维护和操作。 资源提供程序不管理这些资源。 云操作员负责备份应用程序服务数据库和租户内容文件共享。
同步发布市场的自定义脚本扩展版本 1.9.3。
更新
基于 Azure Stack 的 Azure 应用程序服务 Update 24R1 包含以下改进和修复:
针对应用程序服务租户、管理员、函数门户和 Kudu 工具的更新。 与 Azure Stack 门户 SDK 版本一致。
将 Azure Functions 运行时更新为 v1.0.21719。
针对核心服务的更新,用于提高可靠性和错误消息传递,以便更轻松地诊断常见问题。
对以下应用程序框架和工具的更新:
.NET Framework 4.8.1
ASP.NET Core
- 8.0.7
- 8.0.8
- 6.0.29
Eclipse Temurin OpenJDK 8
- 8u302
- 8u312
- 8u322
- 8u332
- 8u345
- 8u362
- 8u392
- 8u412
- 8u422
Microsoft OpenJDK 11
- 11.0.12.7.1
- 11.0.13.8
- 11.0.14.1
- 11.0.15.10
- 11.0.16.1
- 11.0.18.10
- 11.0.21.9
- 11.0.23.9
- 11.0.24.8
Microsoft OpenJDK 17
- 17.0.11.9
- 17.0.1.12
- 17.0.2.8
- 17.0.3.7
- 17.0.4.1
- 17.0.6.1
- 17.0.9.8
- 17.0.12.7
Microsoft OpenJDK 21
- 21.0.1.12
- 21.0.3.9
- 21.0.4.7
MSBuild
- 15.9.21.664
- 16.4.0
- 16.7.0
- 16.11.2
- 17.11.2
MSDeploy
- 3.5.120530.385
- 2.5.1270717.34
NodeJS
- 10.24.1
- 12.22.12
- 14.20.0
- 16.16.0
- 18.12.1
- 18.19.1
- 20.9.0
npm
- 6.4.1
- 6.13.4
- 6.14.11
- 6.14.12
- 6.14.15
- 6.14.16
- 6.14.17
- 7.21.1
- 8.1.0
- 8.19.2
- 10.1.0
- 10.2.4
Tomcat
- 8.5.20
- 8.5.57
- 8.5.58
- 8.5.79
- 8.5.82
- 8.5.85
- 8.5.96
- 8.5.100
- 9.0.0
- 9.0.27
- 9.0.31
- 9.0.37
- 9.0.63
- 9.0.65
- 9.0.71
- 9.0.83
- 9.0.91
- 9.0.96
- 10.0.21
- 10.0.23
- 10.0.27
- 10.1.5
- 10.1.16
- 10.1.25
- 10.1.31
- 11.0.0
Git 2.43.0
已将 Kudu 更新到 102.10502.001。
持续更新辅助功能和可用性
对所有角色的基础操作系统的更新:
Windows Server 的累积更新现在会在部署和升级过程中应用到控制器角色。
就地同步密码套件,并保留因客户干预而进行的任何修改。
此版本中已修复的问题
一些客户遇到了与应用程序服务托管表锁定有关的数据库性能问题,而本版本对性能进行了改进。
改进使用记录服务的所有权,以便在使用多个角色和大量辅助角色时强化服务
由于不断尝试将 Windows Server 2016 更新应用到 Windows Server 2022 而导致 Windows 更新卡死,反之亦然
解决了 Windows 更新 KB5034439 无法完成并阻止角色进入“就绪”状态的问题
解决了客户使用较新版本的自定义脚本扩展时安装程序出现故障的问题
对应用程序服务角色的跟踪信息进行了审查和修剪,以提高所提供信息的质量,并减轻数据库的负担
作为部署的一部分,前端安装了集中 SSL 证书支持功能,租户无需操作员干预即可绑定证书
虚拟网络集成选项现在默认在门户中禁用。
解决了为应用程序日志启用 Blob 存储的问题
改善交换插槽时的交换体验,防止超时
在凭据轮换的选择中,将描述从管理服务器改为管理/控制器角色,以便更明确地说明正在采取的行动
更新前步骤
- 从 Azure Stack Hub 上的 Azure 应用程序服务 2022 H1 更新开始,字母 K 现在是保留的 SKU 字母,如果你使用字母 K 定义了自定义 SKU,请在升级前联系支持部门协助解决这种情况。
查看更新的已知问题,并采取规定的操作。
部署后步骤
重要
如果已经为应用程序服务资源提供程序提供 SQL Always On 实例,则必须将 appservice_hosting 和 appservice_metering 数据库添加到可用性组并同步数据库,以免在进行数据库故障转移时丢失服务。
已知问题(更新)
在升级期间,应用程序停机。
重要
由于 Web 场中的通信格式发生更改,在升级期间,所有角色都进入修复模式,直到它们与控制器的版本匹配。 因此,我们建议在此升级期间声明维护时段,并在升级期间为应用程序停机做好准备。
在你将 appservice_hosting 和 appservice_metering 数据库转换为包含数据库的情况下,如果登录没有成功迁移到包含用户,则升级可能会失败。
将 appservice_hosting 和 appservice_metering 数据库在部署后转换为独立数据库的客户,若未成功将数据库登录名迁移到独立用户,可能会遇到升级失败。
在将基于 Azure Stack Hub 的 Azure 应用程序服务安装升级到 2020 Q3 之前,客户必须对托管 appservice_hosting 和 appservice_metering 的 SQL Server 执行以下脚本。 此脚本是非破坏性的,不会导致停机。
必须在满足以下条件的情况下运行此脚本:
此脚本由具有系统管理员权限的用户运行,例如 SQL SA(系统管理员)帐户;
如果使用 SQL Always On,请确保从包含了以下格式的所有应用程序服务登录名的 SQL 实例中运行该脚本:
- appservice_hosting_FileServer
- appservice_hosting_HostingAdmin
- appservice_hosting_LoadBalancer
- appservice_hosting_Operations
- appservice_hosting_Publisher
- appservice_hosting_SecurePublisher
- appservice_hosting_WebWorkerManager
- appservice_metering_Common
- appservice_metering_Operations
- 所有 WebWorker 登录名 - 采用 WebWorker_<instance ip address> 形式
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
- 在 Azure Stack 管理门户中,导航到“ControllersNSG”网络安全组。
- 默认情况下,已对所有应用程序服务基础结构角色禁用远程桌面访问。 将“Inbound_Rdp_3389”规则操作修改为“允许”访问。
- 导航到包含应用程序服务资源提供程序部署的资源组。 默认情况下,资源组以
AppService.<region>
格式命名,并连接到 CN0-VM。 - 启动“Web 云管理控制台”。
- 检查 Web 云管理控制台 -> Web 云屏幕,并验证两个控制器是否都已就绪。
- 选择设置。
- 查找 ApplicationClientId 设置。 检索值。
- 在 Azure Stack 管理门户中,导航回“ControllersNSG”网络安全组。
- 修改“Inbound_Rdp_3389”规则以拒绝访问。
使用新的重定向 URI 更新 Entra ID 应用程序
- 登录到 Azure 门户,访问在部署时将 Azure Stack Hub 连接到的 Entra ID 租户。
- 使用 Azure 门户并导航到 Microsoft Entra ID。
- 在租户中搜索之前检索的
ApplicationClientId
。 - 选择应用程序。
- 选择“身份验证”。
- 在现有列表:
https://azsstamp.sso.appservice.<region>.<DomainName>.<extension>
中再添加一个重定向 URI。
已知问题(安装后)
如 Azure Stack 上的 Azure 应用程序服务部署文档所述,当应用程序服务部署在现有虚拟网络中,且文件服务器仅在专用网络上可用时,工作人员将无法到达文件服务器。
如果选择部署到现有虚拟网络和内部 IP 地址以连接到文件服务器,则必须添加出站安全规则,以便在工作子网和文件服务器之间启用 SMB(服务器消息块)流量。 转到管理门户中的 WorkersNsg 并添加具有以下属性的出站安全规则:
- 源:任意
- 源端口范围:*
- 目标:IP 地址
- 目标 IP 地址范围:文件服务器的 IP 范围
- 目标端口范围:445
- 协议:TCP
- 操作:允许
- 优先级:700
- 姓名:Outbound_Allow_SMB445
为了消除辅助角色与文件服务器通信时的延迟,我们还建议在辅助角色 NSG(网络安全组)中添加以下规则,以便在使用 Active Directory 保护文件服务器时,允许向 Active Directory 控制器发送出站 LDAP(轻量级目录访问协议)和 Kerberos 流量。 例如,如果使用快速启动模板部署了 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 应用程序服务不支持此功能。
后续步骤
- 有关 Azure 应用程序服务的概述,请参阅基于 Azure Stack 的 Azure 应用程序服务概述。
- 若要详细了解如何完成基于 Azure Stack 的应用程序服务的部署准备,请参阅基于 Azure Stack 的应用程序服务的准备工作。