在Windows Azure中:什么是Web角色,辅助角色和VM角色?

时间:2011-08-19 08:34:04

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

我工作的应用程序包含一个Web角色:它是一个简单的Web应用程序。我需要在Windows Azure中托管应用程序,因此我创建了一个Web角色。我其实想知道这些角色是什么。编码方式或存储方式的重要性是什么?

4 个答案:

答案 0 :(得分:99)

编辑2013年3月3日 - 更新为引用UDP端点,虚拟机和更多语言

编辑2013年6月6日 - 更新以反映VM角色的中断,并将Web /工作人员角色基线操作系统映像更新到Windows Server 2012

@Vladimir的良好链接。更一点澄清:所有角色(web,worker)本质上都是Windows Server。 Web和Worker角色几乎完全相同:

  • Web角色是启用了IIS的Windows Server VM
  • 辅助角色是禁用IIS的Windows Server VM(您可以手动启用它)
  • VM角色是您通过Hyper-V在本地构建并上传到Azure 的Windows Server 2008映像(现已停止使用,截至2013年5月31日已不再可用
  • 虚拟机是在Azure中创建的Windows或Linux映像,在您自己的存储中存储为vhd,并且对VM角色进行了多项增强。例如:由于vhd位于您自己的存储帐户中,您可以轻松地从vhd创建映像模板,将其复制到新的vhd,甚至将其上载到VM Depot(仅限Linux)。

要回答有关如何处理这些角色的问题:平台培训工具包(如下所述)将为您提供许多好的想法和示例,但这里有一些简单的用例:

  • 您可以运行任何公开tcp,http,https或udp端点的代码(Web应用程序,SOAP / REST服务等)。您需要考虑无状态的处理方式 - 如果您运行多个VM实例,则会在这些实例之间分配用户流量。平台培训套件将向您展示如何使用存储或缓存来处理此问题。
  • 您可以运行以队列或计时器为生的代码。也许您有按需创建的任务,例如缩略图生成照片或基于用户输入的计算。这些不需要外部可用的端点。您可以将请求推送到队列,然后运行一个简单地从此队列中提取的任务(您可以跨多个实例扩展此过程,并且所有实例都会使用队列消息)。
  • 您可以运行.NET,Java,php,python,node,ruby等。您只需要将适当的运行时代码与项目代码一起分发。所有语言都可以对Azure API进行REST调用,并且多种语言(包括上面提到的语言)都有SDK来为您处理此问题。所有语言SDK均为here,源代码位于github,here
  • 使用VM角色,您可以安装和运行具有非常复杂/耗时的安装,需要手动干预的安装以及无法可靠自动化的安装的软件。在这种情况下,您必须处理操作系统维护。超越虚拟机角色,现在有虚拟机,提供基于云的虚拟机构建以及Windows和Linux支持。我建议虚拟机过VM角色。

使用Web和Worker角色,操作系统和相关补丁可以为您处理;您无需管理VM即可构建应用程序的组件。

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

使用虚拟机,您只需从库中选择一个操作系统映像,该映像将为您创建并存储为blob存储中的vhd。然后你RDP / ssh并按你喜欢的方式设置它。

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

为了一个良好的开端,请查看Platform Training Kit并开始练习。

答案 1 :(得分:30)

  • Web角色是IIS中托管的Web应用程序。
  • 工作者角色是可以完成某些工作的进程(即自动压缩上传的图像,在数据库中发生更改时执行操作,从队列和进程中获取新消息,您为其命名)
  • VM角色托管VM

答案 2 :(得分:21)

几天前我遇到了这个问题/答案,我发现答案提供了一点点(我是Azure和Web的新手)。我在今晚的Azure基础知识中找到了这个摘要,我认为这是对工作者和Web角色之间核心差异的高级概述:

  

两者之间的主要区别在于Web角色的实例   运行IIS,而辅助角色的实例则不运行。两者都是   然而,以相同的方式管理,这对于应用程序来说很常见   同时使用两者。例如,Web角色实例可能接受请求   来自用户,然后将它们传递给辅助角色实例进行处理。   要向上或向下扩展应用程序,可以请求Windows   Azure会创建更多任一角色的实例或关闭现有角色   实例。和Windows Azure虚拟机类似,你就是   仅在每个Web或辅助角色实例的时间收费   运行

如果您是Azure开发的新手,我强烈建议您阅读完整文章:Intro to Windows Azure

我希望这对某人有所帮助,因为它帮助我打开了灯泡。

答案 3 :(得分:3)

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