【问题标题】:In Windows Azure: What are web role, worker role and VM role?在 Windows Azure 中:什么是 Web 角色、工作者角色和 VM 角色?
【发布时间】:2011-10-30 10:36:52
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    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 支持。我建议使用虚拟机而不是虚拟机角色。

    借助 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端口,但不能绑定到网站。
    • Richard - 虽然过去是这种情况,但端点现在可以是 tcp、http 或 https,无论角色类型如何。我构建了一个混合了 tcp 和 http 的示例应用程序,同时在几个月前演示了新的 25-endpoint-per-role 更新 - 请参阅此处的博客文章 - davidmakogon.com/2011/05/…
    • 抱歉 - 我的意思是每次部署演示 25 个端点。而且...看到您的其他评论,我可能回答了错误的问题。 :)
    • @DavidMakogon - 是什么取代了 Web 角色和 Worker 角色?我需要使用需要 GDI+ 的 PhantomJS 部署一个网站。 Web Jobs 并不完全支持 GDI+。我希望我可以使用网络角色。什么取代了 Web 角色?我喜欢由 Azure 修补和维护的 VM 概念。谢谢!
    【解决方案2】:
    • Web 角色是托管在 IIS 中的 Web 应用程序。
    • 工作角色是可以完成某些工作的进程(即自动压缩上传的图像、在数据库发生变化时执行操作、从队列和进程中获取新消息,等等)
    • VM 角色托管 VM

    【讨论】:

    • 其实Web Roles和Worker Roles就是VM。
    • 这是一个更简单的答案,很抱歉,它们不是虚拟机……你能想象如果它是一个单独的虚拟机,在后台运行多个 Worker 角色的多层解决方案的成本是多少? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
    • 更具体的说 Worker 角色是没有 IIS 的虚拟机
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2012-02-04
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-29
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多