在我的本地计算机上创建azure VM

时间:2013-01-20 11:54:55

标签: azure azure-web-roles azure-virtual-machine azure-vm-role

是否可以在本地计算机上创建一个或多个azure VM?我想创建一个Web应用程序并在本地加载测试,而无需将其放入云中。我正在考虑以下场景:我有一个本地虚拟机运行我的网络应用程序的IIS服务器;我用一个工具来产生很多负载;我需要部署包含与第一个VM相同内容的第二个VM。 Web应用程序的停机时间应该等于0(希望如此)。

澄清(更新): 我想实现以下目标:创建一个Web应用程序和一个监控应用程序(CPU,内存)并将它们部署在一个VM上。在负载测试中,如果VM无法处理它(例如CPU超过80%),我想以编程方式部署新VM(具有相同配置,同时具有Web应用程序和监控应用程序),这样就不会发生停机

2 个答案:

答案 0 :(得分:2)

Azure有几种方法可以托管网站。

  • 虚拟机就是普通虚拟机。您可以在本地创建它们并上传它们,但一切都取决于您,包括如何处理升级。如果那是你需要做的,那么我不知道如何处理升级而没有停机时间;但是,您可以将多个VM添加到负载均衡器,然后一次升级一个。
  • 听起来您真正想要探索的是云服务。您可以在模拟器中本地运行一个或多个VM,在云中无需停机升级,实现自动扩展(您将不得不使用工具或编写一些代码)。
  • 或者,您可能希望查看Azure网站,但这是一个完全不同的概念,您无法以相同的方式在本地测试负载和负载平衡。

根据您的声明,您基本上希望自动扩展您的应用程序,您希望通过Auto Scaling查看云服务。但是,您无法在云模拟器中对此进行全面测试 - 但您可以测试您的逻辑。

背景

Azure云服务专为此类事物而设计;您并不像以前那样使用虚拟机,而是创建一个Azure,然后Azure将其部署到任意数量的服务器。启动并运行后,您只需移动滑块即可手动进入管理控制台并增加或减少活动服务器的数量。当然,您希望自动执行此操作,因此您有一些选择。

您可以使用管理API来更改服务器数量。因此,编写一些代码可以非常简单,这些代码可以在WebRole.Start的另一个线程中启动,它只是坐在并监视机器上的CPU,然后调用管理API来启动新的服务器实例,如果你的CPU超过某个阈值。好的,在本地你只能测试对管理API的调用,你实际上不会看到新的服务器出现。但是,如果您获得Azure的免费试用版并尝试它,您将看到您真的不需要测试该部分 - 它只是起作用。

然而,在实践中,自动缩放还有很多。以下是您需要考虑的一些事项;

  • 即使是相对空闲的Web服务器也会经常短暂地达到100%,因此只需要一个简单的阈值就不够好了;在启动另一个服务器实例之前,您需要确定服务器需要多长时间超过某个阈值。
  • 当您有多台服务器时会发生什么?而且,在Azure上,您应始终至少拥有两台服务器,以确保您具有弹性。请注意,云服务的想法实际上是拥有许多小型服务器而不是几台大型服务器。您按核心付费,而不是按服务器数量付费。
    • 想象一下,您目前有三台服务器,其中一台因某种原因而非常繁忙,其他两台服务器处于闲置状态。你想启动第四台服务器吗?
    • 想象一下,你目前有两台服务器,它们都很忙。你真的希望他们两个启动一个新服务器,这样你最终会运行四个服务器吗?

有几种方法可以应对这些挑战。对于初学者而言,您最好将监控程序移到每个服务器上,而不是让监控程序在本地运行。 Azure能够以您选择的任何时间间隔将性能指标转储到表存储。然后,您可以运行外部程序,从所有当前服务器检索性能数据,然后在决定启动或关闭其他服务器之前推断总体工作负载。现在,您当然可以在每个Webrole上的单独线程中托管该外部监视程序,以提供监视弹性 - 但关键是监视程序不监视它运行的服务器,它监视所有服务器。当然,您仍然需要处理从所有启动和停止服务器停止多个监控程序实例。一种方法是将停止/启动命令放到Azure“消息队列”(有几种不同类型)并使用内置的“de-duper”,它将自动删除放在队列中的相同命令某个时间窗口(我过度简单但你明白了)。

实际答案

但是,你真的想看看Auto Scaling Application Block,它将为你做大部分工作。我想这是你问题的真正答案,但我想首先提供一些上下文。 再一次,我认识到你问过如何在本地进行测试 - 但我相信这个问题在Azure的背景下并没有真正意义,我希望以上信息有所帮助。

答案 1 :(得分:1)

我很确定你不能这样做,无论如何也没有意义。如果您想要进行负载测试,则需要在尽可能类似于生产的环境中运行它,这意味着您必须运行您的应用程序是Azure云。你怎么知道负载实际上会在真正的云上处理好呢?