你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 容器应用沙盒提供用于运行代码的独立环境。 每个沙盒都在轻量级虚拟机(微型虚拟机,microVM)中运行,该虚拟机可在不到一秒内启动,并可在挂起时保留其内存状态。 该服务通过配置的功能以及平台代表你管理的功能支持沙盒工作负荷的可靠性。
使用 Azure 时,可靠性是共同的责任。 Microsoft提供了一系列功能来支持复原和恢复。 你负责了解这些功能如何在你使用的所有服务中工作,并选择满足业务目标和运行时间目标所需的功能。
本文介绍如何让容器应用沙盒具备应对暂时性故障、可用区故障、整个区域范围内的故障以及服务维护的弹性。 它还介绍了有关服务级别协议(SLA)的备份和还原选项和密钥信息。
Important
Container Apps Sandboxes 当前处于预览阶段。 有关适用于测试版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 Microsoft Azure 预览版的补充使用条款。
提高可靠性的生产部署建议
对于生产工作负载,我们建议您:
在沙盒内存之外存储持久数据,并选择与恢复目标匹配的存储冗余选项。 对于在沙盒停止运行时仍需持久保存的数据,请使用沙盒卷。 为了提高对区域级故障的弹性,请使用可将数据复制到另一区域的外部数据存储。
使用Azure Blob 存储时,异地冗余存储(GRS)将数据复制到配对区域。 对于非配对区域,请部署单独的存储账户,并配置受支持的复制方法,例如块 Blob 的对象复制。 有关详细信息,请参阅Azure Blob 存储的自定义多区域解决方案。
如果单区域部署无法满足正常运行时间目标,请跨多个区域部署独立的沙盒组。 有关详细信息,请参阅 对区域范围的故障的复原能力。
可靠性体系结构概述
本部分介绍从可靠性的角度来看,服务工作原理最相关的一些重要方面。 本部分介绍逻辑体系结构,其中包括部署和使用的某些资源和功能。 它还讨论了物理架构,该架构提供了服务内部运作方式的详细信息。
逻辑体系结构
Azure 容器应用为应用、作业、动态会话和沙盒提供不同的计算选项。 沙盒组不需要容器应用环境。 有关其他容器应用组件的可靠性的详细信息,请参阅Azure 容器应用中的可靠性。
容器应用沙盒中的主要资源包括:
沙盒组:沙盒组是沙盒的顶级区域管理边界,使用
Microsoft.App/sandboxGroups资源类型。 所有沙盒、磁盘映像、快照、卷和敏感配置值(机密)均限定到一个沙盒组。沙盒: 每个 沙盒 都是一个轻型隔离的 microVM,它从磁盘映像或快照运行,并有自己的 CPU、内存、本地磁盘和网络边界。
磁盘映像是一个开放容器倡议(OCI)容器映像,经转换后可用作沙盒根文件系统。
快照是在某一时间点对沙盒完整状态的捕获,并且可独立于源沙盒持久保存。
沙盒的状态可以 运行 或 停止。 当沙盒停止(自动或按请求)时,它会释放其计算资源。 内存模式 保留沙盒的完整内存映像和本地磁盘。 磁盘模式 仅保留本地磁盘,因此在恢复沙盒时,microVM 及其进程将重启。
卷: 本地磁盘属于某个独立沙盒。 沙盒卷提供独立于各个沙盒而存在的持久存储。 可以同时将Azure Blob 存储卷装载到多个沙盒中,而Azure 磁盘存储支持的数据磁盘卷一次只能装载到一个沙盒中。 后端存储服务决定卷数据的持久性和恢复选项。
有关沙盒体系结构和资源的详细信息,请参阅Azure 容器应用沙盒概述。
物理体系结构
沙盒在Microsoft运行的多个独立计算群集上运行。 你负责配置你部署的沙盒组、沙盒及其他资源。 Microsoft负责群集部署、配置、容量管理、运行状况监视和维护。 不选择、部署、配置或管理群集。 该服务会在健康的群集上调度新的沙盒,并重启已停止的沙盒,同时将放置位置避开不健康的群集。
Microsoft维护服务配置、沙盒元数据和项目(如磁盘映像和快照)的冗余状态存储。
暂时性故障的复原能力
暂时性故障是指组件发生短暂的间歇性故障。 这些故障经常出现在云之类的分布式环境中,在运营过程中比较常见。 暂时性故障在短时间内自行纠正。 应用程序通常可以通过重试受影响的请求来处理暂时性故障,这一点很重要。
与任何云托管的 API、数据库和其他组件通信时,所有云托管的应用程序都应遵循 Azure 暂时性故障处理指南。 有关详细信息,请参阅有关处理暂时性故障的建议。
使用容器应用沙盒时,请考虑解决方案的以下部分的暂时性故障:
沙盒管理操作: 当自动化管理沙盒组、沙盒或相关资源时,重试因暂时性故障而失败的请求,并使用指数退避。 限制重试次数,并仅重试安全重复的操作。
沙盒中运行的代码: 实现对外部 API、数据库和其他服务的调用的暂时性故障处理。 按照每个依赖项的重试指南进行操作,因为可安全重复的重试行为和操作因服务而异。
应对可用区故障的弹性
容器应用沙盒不支持将沙盒组部署到特定可用区,也不支持为沙盒组启用区域冗余。 若要使您的工作负载能够抵御可用区故障,请在多个区域分别部署独立的沙盒组。 有关详细信息,请参阅 对区域范围的故障的复原能力。
对区域范围的故障的复原能力
容器应用沙盒是单区域服务。 如果某个区域不可用,则该区域中的沙盒组及其中包含的沙盒也都将不可用。 该服务不会跨区域复制沙盒组或沙盒,也不会自动故障转移到另一个区域。 但是,可以在多个区域中部署单独的沙盒组。 你负责在各个区域提供所需的依赖项,并管理工作负载分配和故障转移。 有关详细信息,请参阅 用于复原的自定义多区域解决方案。
在整个区域发生故障时,你可能会丢失仅保存在运行中沙盒内存中的任何状态。 受影响区域内的沙盒组、沙盒以及由服务管理的工件在该区域恢复之前将继续不可用。
沙盒卷提供可在单个沙盒生命周期结束后仍会保留的存储。 在整个区域发生故障时,卷的可用性和恢复能力取决于底层存储服务及其配置。 容器应用沙盒不提供卷数据的跨区域复制或故障转移支持。 而是,后端存储服务在经过配置后会提供这些能力。 例如,有关 Azure Blob 存储卷的信息,请参阅Azure Blob 存储中的可靠性。
用于复原的自定义多区域解决方案
Azure 容器应用沙盒不会协调多区域部署或在区域之间复制沙盒组、沙盒或其相关资源。 若要创建自定义多区域解决方案,需要承担以下责任:
区域部署和依赖项: 在计划使用的每个区域中部署单独的沙盒组。 保留每个区域中可用的配置、磁盘映像、机密和其他依赖项。
故障检测和工作负荷恢复: 配置应用程序或业务流程层,以检测区域不可用的时间,将新的沙盒创建和工作负荷处理定向到正常的区域,并确定如何重启中断的工作。
流量路由:如果客户端通过应用程序公开的区域特定终结点进行连接,请使用全局负载均衡服务(例如Azure Front Door或Azure 流量管理器)将流量路由到正常的终结点。
数据复制和恢复: 在支持跨区域复制和恢复的外部数据存储中存储故障转移后所需的任何状态。 如果后端存储服务为卷数据提供跨区域复制功能,则由该服务决定复制和故障转移行为。 Azure 容器应用沙盒不会在区域之间复制卷数据或对其进行故障转移。
备份和还原
不要将沙盒内存或本地磁盘用作唯一的持久数据存储。 暂停沙盒会保留其本地磁盘,并在内存模式下保留其内存状态。 您还可以创建独立于源沙盒而保留的快照。 暂停状态和快照仍仅限于区域级沙盒组,并非跨区域备份。
对于需要在单个沙盒生命周期结束后仍保留的数据,请使用沙盒卷。 后端存储服务及其配置决定卷数据的备份和恢复能力。 对于你管理的外部数据存储,你负责配置备份和跨区域恢复以满足持久性和恢复目标。
若要在意外删除或整个区域发生故障后重新创建沙盒部署,请将沙盒组配置存储在纳入版本控制的基础设施即代码模板中,例如 Bicep 或 Terraform。 将源磁盘映像保留在满足恢复要求的注册表中。
对于大多数解决方案,不应只依赖于备份。 请改用本指南中所述的其他功能来支持复原要求。 但是,备份可以防范其他方法没有的一些风险。 有关详细信息,请参阅什么是冗余、复制和备份?。
服务维护期间的系统弹性能力
Microsoft定期应用服务更新并执行其他维护。 Azure平台会自动处理这些活动,确保维护是无缝且透明的。 在维护期间,可能会观察到短暂的中断。 通常,这些中断持续几秒钟。 确保客户端应用程序配置为处理 暂时性故障 ,使其能够灵活应对短暂中断。
当维护影响正在运行的沙盒时,平台会保留其状态,将其移动到正常的计算容量,并自动恢复它。 对于使用 内存模式的沙盒,平台将保留内存和本地磁盘状态。 对于使用 磁盘模式的沙盒,平台仅保留本地磁盘状态。
服务级别协议
Azure 容器应用沙盒不提供可用性服务级别协议(SLA)。 为您的沙盒卷以及您的解决方案所使用的外部数据存储提供支持的存储服务可能具有单独的 SLA。 有关详细信息,请参阅 联机服务的服务级别协议。