检查槽交换

已完成

交换两个槽时(例如,从过渡槽交换到生产槽),应用服务会完成以下过程,以确保目标槽不会出现停机:

  1. 将目标槽(例如生产槽)中的以下设置应用到源槽的所有实例:

    • 特定于槽的应用设置和连接字符串(如果适用)。
    • 持续部署设置(如果已启用)。
    • 应用服务身份验证设置(如果已启用)。

    出现其中的任何情况都会触发源槽中所有实例的重启。 在交换并预览期间,这标志着第一阶段结束。 交换操作将会暂停,你可以使用目标槽的设置验证源槽是否正常工作。

  2. 等待源槽中的每个实例完成重启。 如果有任何实例无法重启,交换操作将会还原对源槽所做的所有更改,并停止操作。

  3. 如果启用了本地缓存,则会通过对每个源槽实例上的应用程序根 ("/") 发出 HTTP 请求,来触发本地缓存初始化。 等到每个实例返回了任何 HTTP 响应。 本地缓存初始化会导致每个实例再次重启。

  4. 如果结合自定义预热启用了自动交换,则会通过对每个源槽实例上的应用程序根 ("/") 发出 HTTP 请求,来触发应用程序初始化。

    • 如果未指定 applicationInitialization,则向每个实例上的源槽的应用程序根触发 HTTP 请求。

    • 如果某个实例返回了任何 HTTP 响应,则认为该实例已预热。

  5. 如果源槽上的所有实例已成功预热,则通过交换两个槽的路由规则来交换这两个槽。 完成此步骤后,目标槽(例如生产槽)包含先前已在源槽中预热的应用。

  6. 源槽包含先前位于目标槽中的预交换应用后,通过应用所有设置并重启实例来执行相同的操作。

在执行交换操作期间的任何时候,初始化已交换应用的所有工作都在源槽上发生。 准备和预热源槽时,目标槽将保持联机,而不管交换是成功还是失败。 若要将过渡槽与生产槽交换,请确保生产槽始终是目标槽。 这样,交换操作才不会影响生产应用。

从另一个部署槽克隆配置时,可以编辑克隆的配置。 某些配置元素在交换时遵循内容(不特定于槽),而其他配置元素会在交换之后保留在同一个槽(特定于槽)。 下表显示了交换槽时可更改的设置。

已交换的设置 不交换的设置
常规设置 - 例如 Framework 版本、32/64 位、Web 套接字 发布终结点
应用设置(可以配置为停在槽中) 自定义域名
连接字符串(可以配置为停在槽中) 非公共证书和 TLS/SSL 设置
处理程序映射 缩放设置
公用证书 Web 作业计划程序
WebJobs 内容 IP 限制
混合连接 * Always On
Azure 内容分发网络 * 诊断日志设置
服务终结点 * 跨域资源共享 (CORS)
路径映射 虚拟网络集成
托管标识
以后缀 _EXTENSION_VERSION 结尾的设置

标有星号 (*) 的功能计划取消交换。

注意

若要使设置可交换,请在应用的每个槽中添加应用设置 WEBSITE_OVERRIDE_PRESERVE_DEFAULT_STICKY_SLOT_SETTINGS,并将其值设置为 0false。 这些设置要么全部可交换,要么根本不可交换。 不能仅使某些设置可交换,而使其他设置不可交换。 托管标识从不会进行交换,不受此替代应用设置影响。

若要将应用设置或连接字符串配置为粘滞到特定的槽(未交换),请转到该槽的“配置”页。 添加或编辑某个设置,然后选择“部署槽位设置”。 选中此复选框可让应用服务知道该设置不可交换。