In Windows Azure: What are web role, worker role and VM role?

The application I work on contains a web role: it's a simple web application. I needed to host the application in Windows Azure, so I created a web role. I actually want to know what these roles are for. What is their significance coding wise or storage wise?

96053 次浏览
  • Web 角色是驻留在 IIS 中的 Web 应用程序。
  • 辅助角色是可以完成一些工作的进程(例如,自动压缩上传的图像,在数据库中发生变化时进行处理,从队列和进程中获取新消息,等等)
  • 虚拟机角色主机

EDIT 3/3/2013-更新为参考 UDP 端点、虚拟机和更多语言

EDIT 6/6/2013-更新以反映 VM 角色的终止,并更新到 Windows Server 2012的 web/worker 角色基线操作系统映像

好链接@Vladimir。再说明一下: 所有角色(web、 worker)本质上都是 WindowsServer。Web 和 Worker 的角色几乎完全相同:

  • Web 角色是启用了 IIS 的 WindowsServerVM
  • 辅助角色是禁用 IIS 的 WindowsServerVM (您可以手动启用它)
  • VM 角色是 WindowsServer2008映像,您可以通过 Hyper-V 在本地构建并上传到 Azure (现已停产,自2013年5月31日起不再提供
  • 虚拟机是用 Azure 创建的 Windows 或 Linux 映像,以 vhd 形式存储在您自己的存储器中,并且对 VM 角色进行了一些增强。例如: 由于 vhd 位于您自己的存储帐户中,因此您可以轻松地从 vhd 创建一个图像模板,将其复制到一个新的 vhd,甚至将其上传到 船厂(仅限 Linux)。

回答你关于如何处理这些角色的问题: 平台培训工具包(下面提到)会给你很多好的想法和例子,但是这里有一些直接的用例:

  • 您可以运行任何公开 tcp、 http、 https 或 udp 端点(Web 应用程序、 SOAP/REST 服务等)的代码。不过,您需要考虑 无国籍的做事方式——如果您运行了多个 VM 实例,那么用户流量将分布在这些实例之间。平台培训工具包将向您展示如何使用存储或缓存来处理这个问题。
  • 您可以运行依赖于队列或计时器的代码。也许您有随需应变的任务,比如缩略图生成照片,或者基于用户输入的计算。这些端点不需要外部可用的端点。您可以将请求推送到一个队列,然后运行一个任务,该任务只是从这个队列提取数据(并且您可以跨多个实例扩展这个过程,所有实例都使用队列消息)。
  • 你可以逃跑。NET,Java,php,python,node,ruby 等等。您只需将适当的运行时代码与项目代码一起分发。所有语言都可以对 Azure API 进行 REST 调用,有几种语言(包括上面提到的那些语言)的 SDK 可以为您处理这个问题。所有语言 SDK 都是 here,源代码在 github,给你上。
  • 使用 VM 角色,您可以安装和运行非常复杂/耗时的安装、需要人工干预的安装以及不能可靠地自动化的安装。在这种情况下,您必须处理操作系统维护。除了 VM 角色之外,现在还有 Virtual Machines,提供基于云的 VM 构造以及对 Windows 和 Linux 的支持。我建议使用虚拟机而不是 VM 角色。

有了 Web 和 Worker 角色,操作系统和相关补丁就可以为您服务了; 您可以构建应用程序的组件,而无需管理 VM。

使用 VM 角色,您可以构建一个完整的 Windows Server 映像,向其添加 Azure 挂钩,并将整个 VM 推入云(然后随着时间的推移维护 VM 映像)。

使用 Virtual Machines,您只需从一个图库中选择一个 OS 映像,这个图库将为您创建并以 vhd 形式存储在 blob 存储中。然后按照自己的喜好设置 RDP/ssh。

戴上建筑师的帽子,这才是有趣和有趣的地方。您可以使用 Web 角色或 Worker 角色运行 Web 服务(并且可以在其中任意一个中打开端口) ; 您可以使用 Worker 角色托管 Tomcat 或其他 Web 服务器。您可以选择将网站和服务组合在一个角色中,或者将它们分为多个角色以满足不同的可伸缩性需求。

为了有一个好的开始,看看 平台训练套件并开始步行通过练习。

Windows Azure 中的 Web 角色是特殊用途的,它提供专用的 Internet 信息服务(IIS) Web 服务器,用于托管前端 Web 应用程序。您可以快速轻松地将 Web 应用程序部署到 Web 角色,然后向上或向下扩展您的 Compute 功能以满足需求。

几天前我偶然发现了这个问题/答案,我发现这些答案有点超出了我的理解范围(我是 Azure 和 Web 的新手)。今晚我在 Azure 的基础部分找到了这个总结,我认为这是对工作者和网络角色之间核心差异的一个很好的高层次概述:

两者之间的主要区别在于 Web 角色的实例 运行 IIS,而辅助角色的实例不运行 但是,以同样的方式进行管理,这对于应用程序来说是常见的 例如,Web 角色实例可能接受请求 然后将它们传递给辅助角色实例进行处理。 要向上或向下缩放应用程序,可以请求 Windows Azure 创建更多角色实例或关闭现有实例 类似于 Windows Azure 虚拟机,您是 charged only for the time that each web or worker role instance is 跑步。

如果你是 Azure 开发的新手,我强烈推荐你阅读完整的文章: Intro to Windows Azure

我希望这对某人有所帮助,就像它帮我打开了灯泡一样。