是否可以在本地计算机上创建一个或多个azure VM?我想创建一个Web应用程序并在本地加载测试,而无需将其放入云中。我正在考虑以下场景:我有一个本地虚拟机运行我的网络应用程序的IIS服务器;我用一个工具来产生很多负载;我需要部署包含与第一个VM相同内容的第二个VM。 Web应用程序的停机时间应该等于0(希望如此)。
澄清(更新): 我想实现以下目标:创建一个Web应用程序和一个监控应用程序(CPU,内存)并将它们部署在一个VM上。在负载测试中,如果VM无法处理它(例如CPU超过80%),我想以编程方式部署新VM(具有相同配置,同时具有Web应用程序和监控应用程序),这样就不会发生停机
答案 0 :(得分:2)
Azure有几种方法可以托管网站。
根据您的声明,您基本上希望自动扩展您的应用程序,您希望通过Auto Scaling查看云服务。但是,您无法在云模拟器中对此进行全面测试 - 但您可以测试您的逻辑。
Azure云服务专为此类事物而设计;您并不像以前那样使用虚拟机,而是创建一个Azure,然后Azure将其部署到任意数量的服务器。启动并运行后,您只需移动滑块即可手动进入管理控制台并增加或减少活动服务器的数量。当然,您希望自动执行此操作,因此您有一些选择。
您可以使用管理API来更改服务器数量。因此,编写一些代码可以非常简单,这些代码可以在WebRole.Start的另一个线程中启动,它只是坐在并监视机器上的CPU,然后调用管理API来启动新的服务器实例,如果你的CPU超过某个阈值。好的,在本地你只能测试对管理API的调用,你实际上不会看到新的服务器出现。但是,如果您获得Azure的免费试用版并尝试它,您将看到您真的不需要测试该部分 - 它只是起作用。
然而,在实践中,自动缩放还有很多。以下是您需要考虑的一些事项;
有几种方法可以应对这些挑战。对于初学者而言,您最好将监控程序移到每个服务器上,而不是让监控程序在本地运行。 Azure能够以您选择的任何时间间隔将性能指标转储到表存储。然后,您可以运行外部程序,从所有当前服务器检索性能数据,然后在决定启动或关闭其他服务器之前推断总体工作负载。现在,您当然可以在每个Webrole上的单独线程中托管该外部监视程序,以提供监视弹性 - 但关键是监视程序不监视它运行的服务器,它监视所有服务器。当然,您仍然需要处理从所有启动和停止服务器停止多个监控程序实例。一种方法是将停止/启动命令放到Azure“消息队列”(有几种不同类型)并使用内置的“de-duper”,它将自动删除放在队列中的相同命令某个时间窗口(我过度简单但你明白了)。
但是,你真的想看看Auto Scaling Application Block,它将为你做大部分工作。我想这是你问题的真正答案,但我想首先提供一些上下文。 再一次,我认识到你问过如何在本地进行测试 - 但我相信这个问题在Azure的背景下并没有真正意义,我希望以上信息有所帮助。
答案 1 :(得分:1)
我很确定你不能这样做,无论如何也没有意义。如果您想要进行负载测试,则需要在尽可能类似于生产的环境中运行它,这意味着您必须运行您的应用程序是Azure云。你怎么知道负载实际上会在真正的云上处理好呢?