我有一个带有2个实例的CloudService Classic应用程序,我将其称为bob_app_001和bob_app_002,每个BobApp都有5个实例。
该应用程序是一个c#Api,它有一个我们用于监视〜/ ping的端点。
我目前通过从Traffic Manager中取出其中一项服务进行部署,让流量耗尽,然后VIP将分段交换到生产槽,然后重新添加到Traffic Manager。这里的问题是,当服务自我调整时,前几个请求总是很慢。我试图通过在将池放回轮换之前点击ping端点来调整所有与Web相关的东西来避免这种情况。
我如何编写脚本从bob_app_001获取所有应用程序的URL,然后我可以在ping端点上为每个应用程序调用Invoke-WebRequest,以便在将其放回TrafficManager之前加热服务贵宾互换后。
答案 0 :(得分:3)
getting all the app's urls from bob_app_001
这将是一个棘手的部分,特别是没有到达应用程序内部并以某种方式暴露URL(取决于您的路由设置方式)
我建议改用Application Initialization Module
。
要启用该模块,您需要在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
(并且只运行一次)
设置完成后,部署插槽之间的交换操作将完成 afte r“app / init”url下的代码完成。