【问题标题】:WEBSITE_HTTPLOGGING_CONTAINER_URL is a hidden application setting?WEBSITE_HTTPLOGGING_CONTAINER_URL 是隐藏的应用程序设置?
【发布时间】:2017-05-24 17:02:08
【问题描述】:

在交换插槽时,我们会收到以下消息:

但是 WEBSITE_HTTPLOGGING_CONTAINER_URL 设置在任一 Web 应用程序的应用程序设置中都不存在。我知道它来自启用 Web 应用诊断日志,但它以某种方式被隐藏了。

问题是这将导致生产槽中的 IIS 重新启动,从而导致停机,直到它完成所有初始化任务。无法将此设置配置为“插槽设置”(这会阻止对应用程序设置的编辑)。

奇怪的是 DIAGNOSTICS_AZUREBLOBCONTAINERSASURL 在应用程序设置中可见(它也是诊断日志配置)。

【问题讨论】:

    标签: azure azure-web-app-service


    【解决方案1】:

    WEBSITE_HTTPLOGGING_CONTAINER_URL 是隐藏的应用程序设置?

    简而言之:是的。这是一个隐藏的应用设置,用于存储 Web 服务器日志的 Blob 容器 url。

    在您在诊断日志中启用 Web 服务器日志记录后,它将在应用设置中添加您的存储容器 url。您无法在应用程序设置中更改它。

    在我看来,我认为在交换网络应用程序时必须更改此值。由于生产槽可以设置自己的 Web 服务器日志存储容器。如果这没有改变,你的日志信息可能会改变 blob 容器。

    您可以在 KUDU 控制台的环境变量中找到它,如下所示。

    打开 kudu。

    然后点击环境,找到环境变量。


    更新:

    问题在于更改应用程序设置将执行 IIS 重置,这将导致生产槽中断。

    据我所知,swap 操作不会导致生产槽中的 IIS 重新启动。在切换到生产槽之前,它将在暂存槽中自动预热。

    交换操作如下:

    1.标记为“Slot”的应用程序设置和连接字符串从Production slot读取并应用于Staging slot中的站点。这会导致站点的工作进程重新启动,以使这些更改生效并作为进程环境变量可见;

    2.然后暂存槽中的站点开始预热。为了预热站点,将向站点的根目录发出 HTTP 请求,以发送到站点应该运行的每个 VM 实例。预热请求的 User-Agent 标头设置为“SiteWarmup”;

    3. 预热完成后,生产站点和暂存插槽的主机名将被交换。现在,已在暂存槽中预热的站点开始获得生产流量,并且曾经在生产槽中的站点现在在暂存槽中

    4.现在位于暂存槽中的站点将使用与暂存槽关联的应用程序设置和连接字符串进行更新。这会导致该站点重新启动,但它不再处于生产槽中,因此重新启动是无害的。

    但有时在暂存槽上应用生产设置之后和主机名的实际交换发生之前暂停会很有用。

    现在,azure web 应用有另一个交换:swap with preview

    当您使用 Swap with preview 选项时,应用服务会执行以下操作:

    1.保持目标槽不变,因此该槽上的现有工作负载(例如生产)不受影响。

    2.将目标槽的配置元素应用到源槽,包括槽特定的连接字符串和应用设置。 使用上述配置元素重新启动源槽上的工作进程。

    3.当您完成交换时:将预热的源插槽移动到目标插槽。与手动交换一样,目标槽被移动到源槽中。

    4.取消交换时:将源槽的配置元素重新应用到源槽。

    您可以准确预览应用在目标插槽配置下的行为方式。完成验证后,您将在单独的步骤中完成交换。此步骤还有一个额外的优势,即源插槽已经使用所需的配置进行了预热,并且客户端不会遇到任何停机时间。

    你可以找到它如下:

    【讨论】:

    • 问题是更改应用程序设置将执行 IIS 重置,这将降低生产槽。这违背了蓝绿交换的意义。
    • 感谢您的详尽解释 - 一切都说得通。
    猜你喜欢
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2012-01-13
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多