脚本如何在Azure中编写CloudService实例的预热脚本?

我有一个带有2个实例的CloudService Classic应用程序,我将它们称为bob_app_001和bob_app_002,每个BobApp中都有5个实例.

该应用程序是一个c#Api,具有一个用于监控〜/ ping的终结点.

目前,我是通过从流量管理器中取出一项服务来部署流量,让流量流失,然后将VIP交换阶段到生产插槽,然后重新添加到流量管理器中.这里的问题是,随着服务自身旋转,前几个请求总是很慢.我试图通过在将池放回旋转之前命中ping端点来旋转所有与Web相关的内容来避免这种情况.

如何编写脚本,从bob_app_001获取所有应用程序的URL,然后可以在ping端点上通过对Inboke-WebRequest分别调用Invoke-WebRequest进行循环,以预热服务,然后在VIP交换后将其放回TrafficManager.

解决方法:

从bob_app_001获取所有应用程序的URL
这将是棘手的部分,尤其是在没有深入应用程序内部并且不知何故公开网址的情况下(取决于路由的设置方式)

我建议改为使用应用程序初始化模块.

要启用该模块,您需要在web.config中创建一个applicationInitialization部分,在其中定义要启动初始化任务将要命中的url.

<system.webServer>  
  <applicationInitialization>  
    <add initializationPage="/app/init" />  
  </applicationInitialization>  
<system.webServer>

然后用一个轻量级的控制器来初始化:

public class InitController : ApiController
{
    [Route("/app/init")]
    public IHttpActionResult Index()
    {
        //do your initialisation / warmup here

        return Ok();
    }
}

在此示例中,我没有提及任何安全性概念,但是最好限制从应用程序内部对/ app / init的访问(并且只能运行一次)

设置完成后,“ app / init” URL下的代码完成后,将完成部署插槽之间的交换操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐