Azure 网站和 Azure Web 角色有啥区别

Posted

技术标签:

【中文标题】Azure 网站和 Azure Web 角色有啥区别【英文标题】:What is the difference between an Azure Web Site and an Azure Web RoleAzure 网站和 Azure Web 角色有什么区别 【发布时间】:2012-06-12 01:53:17 【问题描述】:

对于 ASP.NET MVC 应用程序,新的 Azure Web Sites 和传统的 Azure Web 角色之间有什么实质性区别?我为什么会选择“网站”而不是“网络角色”,反之亦然?

假设在任何一种情况下我都需要相同的容量(例如 2 个小实例)。除了网站在预览期间有 33% 的临时折扣之外,这些价格似乎相当。

我可以用“网站”做哪些对网络角色有困难或不可能的事情?例如,使用“网站”将多个网站放在一组虚拟机中是否变得容易?我会因为“网站”与“网络角色”而失去任何东西吗?能够微调 IIS?能否在本地使用缓存服务?

【问题讨论】:

【参考方案1】:

Web 角色为您提供了 Web 应用程序(以前称为网站)之外的多项功能:

能够运行提升的启动脚本来安装应用、修改注册表设置、安装性能计数器、微调 IIS 等。 能够将应用分成多个层(可能是前端的 Web 角色,后端处理的工作角色)和独立扩展 能够将 RDP 插入您的 VM 以进行调试 网络隔离 专用虚拟 IP 地址,允许云服务中的 Web 角色实例访问受 IP 限制的虚拟机 ACL 限制端点(Azure SDK 2.3 中添加,2014 年 4 月) 支持任何 TCP/UDP 端口(网站仅限于 TCP 80/443)

不过,Web 应用程序比 Web 角色具有优势:

具有部署历史/回滚的近乎即时部署 Visual Studio Online、github、本地 git、ftp、CodePlex、DropBox、BitBucket 部署支持 能够推出众多 CMS 和框架之一(如 WordPress、Joomla、Django、MediaWiki 等) 使用 SQL 数据库或 mysql 简单快速地从免费层扩展到共享层再到专用层 网络作业 网站内容备份 内置基于 Web 的调试工具(简单的 cmd/powershell 调试控制台、进程浏览器、日志流等诊断工具等)

随着 2014 年 4 月和 2014 年 9 月的推出,现在有一些 Web 应用程序和 Web 角色(以及工作角色)共有的功能,包括:

暂存+生产槽 通配符 DNS、SSL 证书 Visual Studio 集成 流量管理器支持 虚拟网络支持

这是我从网站图库选择表单中截取的屏幕截图:

我认为 Web 应用程序是一种快速启动和运行的好方法,您可以在其中从共享资源转移到保留资源。一旦超出此范围,您就可以升级到 Web 角色并根据需要进行扩展。

【讨论】:

除了 Git + ftp 另一个很棒的是 PublishSettings(例如也可以在 WebMatrix 2 中使用) 分层不是区分因素。您可以将 Worker 角色用于网站。 关于层级:对于网站,您需要通过外部端点连接到 Worker,因为网站不支持虚拟网络。此外:您必须将代码拆分到多个部署中(一个用于网站,一个用于具有工作者角色的云服务)。使用云服务,您可以轻松地将代码划分为可扩展的层,然后独立地调整每个层的大小和扩展,同时在所述层之间进行内部通信。这就是我将层级作为云服务(网络/工作人员)的差异化因素时的意思。 这和***.com/a/10960755/56145相比是不是有点过时了? 借助 Web 角色,您还可以在相同的虚拟机上执行后台处理【参考方案2】:

EDIT 2014:对于它的价值,这个答案中的很多信息不再正确 - 请参阅 cmets。

在@David 回复中添加更多内容:

使用 Windows Azure 网站,您无法控制 IIS 或 Web 服务器,因为您在同一台机器上使用资源切片以及数百个其他网站,您像其他任何网站一样共享资源,因此无法控制IIS。

网站共享和 Azure Web 角色之间的最大区别在于,网站被认为是进程绑定的,而角色是虚拟机绑定的。

网站存储在内容共享上,可以从场中的所有“网络服务器”访问,因此不需要复制或类似的操作。

Windows Azure 网站不能有自己的主机名,而只能使用 websitename.azurewebsites.net,而且您肯定可以使用 DNS 提供程序中的 CNAME 设置来路由与以前的 Windows 完全相同的请求Azure 角色仅在它们以保留模式运行时。共享网站不支持 CNAME 设置。

【讨论】:

AFAIK WebRoles 也没有自己的主机名——它们都是 rolename.cloudapp.net。除非有一些我不知道的功能? 您不能使用 DNS 创建一个从 www.yourdomain.com 指向 websitename.azurewebsites.net 的 CNAME 别名吗? 我相信对于 WA 网站,只有使用 保留 实例(专用 VM)运行的应用程序才能将自定义域映射到它们。 我认为 scottgu 最近提到他们也希望在共享实例上支持自定义域。 对于它的价值,这个答案中的很多信息不再正确(尽管它是在 2012 年 6 月):网站现在可以有自定义域。网站可以在“保留”模式下运行,这本质上是一个虚拟机,但完全托管。【参考方案3】:

我刚刚在http://robdmoore.id.au/blog/2012/06/09/windows-azure-web-sites-vs-web-roles/ 上发布了一篇关于这个主题的综合博文。

摘自我的结论:如果您需要大规模、SSL、亚洲或美国西部数据中心、非标准配置(IIS、端口、诊断、安全证书或启动脚本)、RDP 或具有成本效益的Worker 角色(与您的 Web 角色相结合),那么您现在必须坚持使用 Web 角色。

否则,网站是一个不错的选择!

【讨论】:

【参考方案4】:

Azure Web 角色就像一个虚拟专用主机。您将获得一个充当 Web 服务器的 VM,并且您拥有该 VM 实例。

Azure 网站就像一个弹性共享托管服务。您将应用程序部署到不受您控制的 Web 服务器,该服务器还为其他用户的站点提供服务。您可以扩大和缩小您的网站(需额外付费),使其在您的资源需求发生变化时更具弹性。

【讨论】:

【参考方案5】:

还有另一种情况悬而未决:在消除这 500 个异常之后,他们没有说明 Azure 网站处理通配符 CNAME 的能力。我们中的一些人在云服务中使用 Nate 的 Web 角色加速器,因为单行 hack 在 Nate 的软件中提供了通配符子域功能。在我们知道 Azure 网站能够处理它们之前,我们无法移动这些通配符子域应用程序。如果它永远无法做到这一点,那么它在等式的 Web 角色方面就会成为积极因素。另外值得注意的是,由于定价完全相同(在预览折扣到期后),我不确定是否要放弃对 RDC 和事件查看器的访问(仅提及两件事)。

【讨论】:

【参考方案6】:

Azure 网站 使您能够在 Azure 上快速构建高度可扩展的网站。您可以使用 Azure 门户或命令行工具来设置使用流行语言(如 .NET、php、Node.js 和 Python)的网站。支持的框架已经部署,不需要更多的安装步骤。 Azure 网站库包含许多第三方应用程序,例如 Drupal 和 WordPress,以及开发框架,例如 Django 和 CakePHP。创建站点后,您可以迁移现有网站或构建全新的网站。网站消除了管理物理硬件的需要,并且还提供了多种扩展选项。您可以从共享多租户模型转移到专用机器为传入流量提供服务的标准模式。网站还使您能够与其他 Azure 服务集成,例如 SQL 数据库、服务总线和存储。使用 Azure WebJobs SDK 预览版,您可以添加后台处理。总之,Azure 网站通过支持广泛的语言、开源应用程序和部署方法(FTP、Git、Web 部署或 TFS),可以更轻松地专注于应用程序开发。如果您没有需要云服务或虚拟机的特殊要求,Azure 网站很可能是最佳选择。

云服务使您能够在丰富的平台即服务 (PaaS) 环境中创建高可用性、可扩展的 Web 应用程序。与网站不同,云服务首先在 Visual Studio 等开发环境中创建,然后再部署到 Azure。诸如 PHP 之类的框架需要在角色启动时安装框架的自定义部署步骤或任务。云服务的主要优势是能够支持更复杂的多层架构。单个云服务可以由一个前端 Web 角色和一个或多个工作角色组成。每一层都可以独立扩展。对您的 Web 应用程序基础设施的控制水平也有所提高。例如,您可以远程桌面到运行角色实例的机器上。您还可以编写在角色启动时运行的更高级的 IIS 和机器配置更改,包括需要管理员控制的任务。

虚拟机使您能够在 Azure 中的虚拟机上运行 Web 应用程序。此功能也称为基础架构即服务 (IaaS)。通过门户创建新的 Windows Server 或 Linux 机器,或上传现有的虚拟机映像。虚拟机让您可以最大程度地控制操作系统、配置以及已安装的软件和服务。这是将复杂的本地 Web 应用程序快速迁移到云的好选择,因为机器可以作为一个整体移动。借助虚拟网络,您还可以将这些虚拟机连接到本地企业网络。与云服务一样,您可以远程访问这些机器,并能够在管理级别执行配置更改。但是,与网站和云服务不同,您必须完全在基础架构级别管理您的虚拟机映像和应用程序架构。一个基本示例是您必须将自己的补丁应用到操作系统。

从此链接查看更新和全面的比较:http://azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/

【讨论】:

【参考方案7】:

Azure 网站、Web Worker 和虚拟机是 Windows Azure 上可用的三种不同计算方法。它们在控制和责任级别上有所不同:

Azure 网站 具有最低级别的控制,但您并不关心保持虚拟机和 IIS 的健康,因为 Azure 的东西会为您完成这项工作 Web 角色为您提供更多控制权(流量管理器、远程桌面),但您可以进行更多管理,这意味着您可以通过远程桌面破坏某些东西 虚拟机让您可以完全控制虚拟机,因此需要大量的管理工作。

没有一个最佳选择,因为这取决于您需要什么级别的控制、您需要什么功能以及您想让 Azure 的东西去维护什么。这是一个大话题..

请查看这篇文章以获取更多信息以做出更明智的选择:

http://www.windowsazure.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/ http://davidpallmann.blogspot.com/2012/06/reintroducing-windows-azure-part-2.html

归结为易用性和功能之间的权衡。

【讨论】:

【参考方案8】:

我发现的另外两件事是为自定义域站点和多租户配置获取 SSL 的成本。

对于网站,您需要在标准实例之上按月付费(小实例是最便宜的选择)。这意味着为了获得自定义域 https 将花费您 ~70/月的小实例加上 ~41/月的 SSL 支持所有浏览器。

对于 WebRole,您可以获得 XS 实例并免费添加自己的 SSL,这意味着每月约 15 美元 并且您有一个带有 SSL 的自定义域。

对于多租户网站,请查看 Multi-tenant Azure dynamic wildcard CName

【讨论】:

【参考方案9】:

网络角色是托管多个网站的虚拟机

【讨论】:

不太准确。您可以在一个 Web 角色中托管多个网站,但 Web 角色远不止于此,因为它们是 Windows Server VM。您可以选择根本不运行 任何 网站,而只运行后台任务、REST 端点、数据库服务器等(不需要使用 IIS,甚至可以禁用它)。不要忘记它们是无状态的,这使得它们很容易扩展。 @DavidMakogon 那么我也可以这么说,web角色实际上执行一些任务,但是由于它使用HTTP协议,所以它被称为'WEB'角色,因为它支持这个协议,它也支持网站,但这不是它的主要目标吗? @AdityaBokade 不要尝试阅读更多内容:该名称是 Azure 首次启动时的遗物,其中 Web 角色是唯一托管外部-面向应用程序(工作角色没有外部端点,并且不存在其他任何东西 - 不是 VM,不是 Web 应用程序)。 Web(和 Worker)角色是无状态的 Windows 虚拟机,为您的代码和启动脚本进行了特殊打包。它不是通过支持 http 来定义的:您可以通过 http(s)、tcp、udp 或什至什么都不与外部资源进行通信。这就是它的全部内容。【参考方案10】:

这是一个常见的问题,我想摘录一段msdn。

访问缓存、服务总线、存储、SQL Azure 数据库等服务 - 网站:是 WebRole:是

支持 ASP.NET、经典 ASP、Node.js、PHP- 网站:是 WebRole:是

共享内容和配置 - WebSite:Yes WebRole:No

使用 GIT、FTP- WebSite:Yes WebRole:No 部署代码

近乎即时的部署-WebSite:Yes WebRole:No

集成 MySQL 即服务支持-WebSite:是 WebRole:是

多个部署环境(生产和登台)-WebSite:No WebRole:Yes

网络隔离-WebSite:No WebRole:Yes

远程桌面访问服务器-WebSite:No WebRole:Yes

能够以提升的权限运行程序-WebSite:No WebRole:Yes

能够定义/执行启动任务-WebSite:No WebRole:Yes

能够使用不受支持的框架或库-WebSite:No WebRole:Yes

支持 Windows Azure Connect/Windows Azure Network-WebSite:No WebRole:Yes

如需了解更多详情,请访问此链接:http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx

【讨论】:

以上是关于Azure 网站和 Azure Web 角色有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

WCF 服务的内部终结点不适用于 Azure Web 角色

使用 Windows Azure 的基于消息的体系结构

部署Azure Pack -安装website

Azure 网站 - 识别主机插槽

Azure - 从辅助角色访问与 Web 角色相同的 blob

Azure 辅助角色未运行?