在阅读文档:https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-steps,第4步时,指定了以下内容:
如果通过自定义预热启用了自动交换,则触发应用程序 通过向以下位置的应用程序根目录(“ /”)发出HTTP请求来启动 源插槽的每个实例。
如果未指定applicationInitialization,则触发HTTP请求 到每个实例上源插槽的应用程序根目录。
如果实例返回任何HTTP响应,则认为该实例已预热 上。
这是否意味着1)必须启用自定义热身才能使交换调用root(或任何其他url),或者2)如果未启用自定义热身,则需要调用root?无论1)还是2):如果未指定任何内容,则返回的所有状态代码都会告诉交换过程该插槽已预热?
更新 我阅读文档的方式(https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#swap-operation-steps):
... App Service does the following to ensure that the target slot doesn't experience downtime:
1. ...
2. ...
3. ...
4. If auto swap is enabled with custom warm-up, **[AppService will]** trigger Application Initiation by making an HTTP request to the application root ("/") on each instance of the source slot.
If applicationInitialization isn't specified, **[AppService will]** trigger an HTTP request to the application root of the source slot on each instance.
If an instance returns any HTTP response, it's considered to be warmed up.
5. ...
但是好像我读错了吗?
答案 0 :(得分:2)
让我一个接一个地回答您的问题:
1:必须启用自定义预热才能进行交换,以调用root(或任何其他url)
是的,如果启用了自动交换功能,并且您希望过渡插槽在交换过程开始之前预热。否则,它将在第一个请求上预热并延迟响应,直到预热完成。
2:或者,如果未启用自定义预热,它将调用root?
如果未在
system.webServer > ApplicationInitialization
文件的web.config
下指定,它将不会调用root。
3:不管是1还是2:如果未指定任何内容,则返回的所有状态代码都告诉交换过程插槽已预热?
如果未指定任何内容,它将仅交换插槽,而根本不考虑预热。仅当
applicationInitialization
文件中的web.config
块可用时,它才会等待ApplicationInitialization模块返回完成状态,然后继续进行交换。
即使在暂存插槽中完成了预热之后,由于启动中的配置差异,在交换暂存插槽工作进程时仍可能会重新启动。
我观察到,在过渡和生产配置完全匹配时,交换过程会导致零停机时间。
在交换过程中还有其他几种有关应用程序预热和重新启动的情况,请参阅本文: https://ruslany.net/2017/11/most-common-deployment-slot-swap-failures-and-how-to-fix-them/