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


Answers:


101

EDIT 3/3/2013-更新为引用UDP端点,虚拟机和更多语言

EDIT 6/6/2013-更新以反映VM角色的终止,并更新到Windows Server 2012的Web /工作者角色基准OS映像

@Vladimir的良好链接。进一步说明:所有角色(Web,工作人员)本质上都是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都在这里,源代码在github上,这里
  • 使用VM角色,您可以通过非常复杂/耗时的安装,需要手动干预的安装以及无法可靠地自动化的安装来安装和运行软件。在这种情况下,您必须处理操作系统维护。除了虚拟机角色之外,现在还有虚拟机,可提供基于云的虚拟机构建以及Windows和Linux支持。我建议使用虚拟机代替虚拟机角色。

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

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

使用虚拟机,您只需从图库中选择一个操作系统映像,即可为您创建该映像并将其作为vhd存储在blob存储中。然后,您可以根据需要设置RDP / ssh并对其进行设置。

戴上建筑师的帽子,这会变得很有趣。您可以以“ Web角色”或“辅助角色”运行Web服务(并能够在任一角色中打开端口);您可以以Worker角色托管Tomcat或其他Web服务器。您可以选择将网站和服务合并为一个角色,也可以将它们拆分为多个角色以满足不同的可伸缩性需求。

作为一个好的开始,请看一下Platform Training Kit并开始逐步练习。


您实际上可以在Web角色上公开tcp终结点吗?根据smarx的介绍,它们都必须是HTTP:stackoverflow.com/questions/2926737/… 这在角色之间形成了另一个微妙的区别。
理查德·阿斯特伯里

我已经回答了我自己的查询,您可以打开tcp端口,但不能将其绑定到网站。
理查德·阿斯特伯里

2
理查德(Richard)-尽管以前是这样,但无论角色类型如何,端点现在都可以是tcp,http或https。我内置其中有TCP和HTTP的混合物一个示例应用程序,而在几个月前展示了新的25端点每个角色更新-在这里看到的博客文章- davidmakogon.com/2011/05/...
大卫Makogon

抱歉-我的意思是每个部署演示25个端点。而且...看到您的其他评论,我可能回答了错误的问题。:)
David Makogon 2011年

@DavidMakogon-什么取代了Web角色和Worker角色?我需要使用PhantomJS部署一个需要GDI +的网站。Web Jobs并不完全支持GDI +。我希望可以使用网络角色。有什么替代了Web角色?我喜欢由Azure修补和维护的VM概念。谢谢!
马丁

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

10
实际上,Web角色和辅助角色是VM。
David Makogon 2011年

这是一个简单得多的答案,对不起,它们不是VM ...您能想象如果一个单独的VM在后台运行多个Worker角色的多层解决方案的成本是多少? blogs.msdn.microsoft.com/silverlining/2012/06/27/…–
Clarence

更具体地说,工作人员角色是不带IIS的VM
dejjub-AIS

21

几天前,我遇到了这个SO问题/答案,发现答案提供了一些麻烦(我是Azure和Web的新人)。我今晚在Azure基础知识中找到了此摘要,我认为它很好地概述了工作角色和Web角色之间的核心区别:

两者之间的主要区别在于,Web角色的实例运行IIS,而辅助角色的实例则不运行IIS。但是,两者是以相同的方式进行管理的,应用程序通常同时使用两者。例如,Web角色实例可以接受来自用户的请求,然后将其传递给辅助角色实例进行处理。若要放大或缩小应用程序,您可以请求Windows Azure创建更多具有该角色的实例或关闭现有实例。与Windows Azure虚拟机类似,您只需要为每个Web或辅助角色实例的运行时间付费。

如果您是Azure开发的新手,我强烈建议您在此处阅读全文:Windows Azure简介

我希望这对某人的帮助与对我打开灯泡的帮助一样多。


3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.