从 Azure 中的辅助角色部署 Web 角色

Posted

技术标签:

【中文标题】从 Azure 中的辅助角色部署 Web 角色【英文标题】:Deploy Web Role from Worker Role in Azure 【发布时间】:2011-09-17 06:58:23 【问题描述】:

我正在研究一些 Windows Azure 的东西,以便决定是否迁移到 Azure。

基本信息 要回答这个问题,您需要对我的应用有一些基本的了解。

该应用程序是一个连接到 SQL Server 数据库的 ASP.NET MVC 3 应用程序。

这是一个单实例应用程序,这意味着每个客户最终都会在我们的服务器上运行他们自己的应用程序实例,并将其作为网站部署到 IIS 7。

我有一个 SQL Server,每个实例都有自己的数据库。

我还有一组 Windows 服务来做一些后台处理。这应该是直截了当的,因为我将重写那些以在 Windows Azure 中使用 Worker 角色 - 服务中的大部分逻辑无论如何都位于它们自己的类(库)中,所以它自己的服务只调用一个或多个类中的方法。

现在回答问题 每当有人注册免费试用时,我都会将一条记录添加到我拥有的管理数据库中。

然后我有一个 Windows 服务,它将 ASP.NET MVC 3 应用程序的新实例部署到 IIS,授予一些文件夹的权限,运行数据库部署脚本并更新记录以反映它现在已部署,最后向潜在客户发送一封电子邮件,说明他们的免费试用版已创建 - 这是您访问它的方式。

那么,我如何通过工作角色在 Windows Azure 中部署新实例?最好是向现有 Azure 实例添加一个新网站,并为该特定网站创建一个新的 SQL Azure 数据库以供使用。

这需要大量的工作来设置吗?有没有可能?

【问题讨论】:

技术方面不应该太难设置多租户 Web 角色。您需要注意的是数据库结构 - 在常规 SQL 服务器上,空数据库不使用任何资源,因此基本上是免费的。使用 SQL Azure,它被视为一个完整的 1GB 数据库,每月花费 10 美元。 【参考方案1】:

基于两个引号,我建议将此称为多租户应用程序:

这是一个单实例应用程序,这意味着每个客户最终都会在我们的服务器上运行自己的应用程序实例,

还有……

将 ASP.NET MVC 3 应用程序的新实例部署到 IIS 的 Windows 服务,授予对几个文件夹的权限

如果我理解正确,有“一个”IIS 服务器(嗯,在 Windows Azure 中,它是一个 Web 角色,可扩展到多个实例),并且对于每个新的“租户”,您都会设置一些新的东西来支持它租户。

如果确实如此,您绝对可以从工人角色中执行此操作 - 只需查看 Nate Totten 的 multi-tenant web role blog 帖子和相关代码即可。查看实际操作 IIS 的 webdeploy 代码。

进一步:查看Cloud Ninja,这是我的几个队友与 Fullscale180 一起发布的一个项目。这是一个多租户应用程序,演示了如何在单个部署中管理多个客户以及监控和扩展。

最后:如果您需要实际创建全新的服务主机和存储帐户,Windows Azure Management API 的最新更新支持这一点。 希望对你有所帮助...

【讨论】:

肯定是多租户的。事实证明,将多个网站部署到同一个实例的 Azure 工具包方法与我今天在 Windows 服务的专用服务器上所做的几乎完全相同。我的想法是在 Azure 包中有一个简单的小型 MVC Web 应用程序,然后将我的 Windows 服务部署为启动任务。然后,此服务将使实例“具有自我意识”并准确部署这些应用程序。它负责的实例。当扩展到多个实例时,同一个服务将简单地添加网站并引用正确的 SQL 数据库。【参考方案2】:

我认为你想要实现的大部分事情都是可能的。

这肯定需要一些工作来设置!

有关如何实现所需的一些想法,请查看 MS SaaS 示例 - http://www.fabrikamshipping.com/ - 专为将现有应用程序移植到 Azure 上的 SaaS 而设计。在这个应用程序中,他们有一个“入职流程”——该流程包括设置新的 SQL 连接和新的门户。

http://blogs.msdn.com/b/vbertocci/archive/2010/10/07/new-online-demo-introducing-fabrikamshipping-saas.aspx 上有很多很好的博客(观看视频)

【讨论】:

+1 - Fabrikam Shipping 是支持商业的 SaaS 应用程序的出色演示。

以上是关于从 Azure 中的辅助角色部署 Web 角色的主要内容,如果未能解决你的问题,请参考以下文章

Azure 自动缩放在本地工作,但在部署时不工作

Azure 辅助角色未运行?

Azure 服务总线广播到所有辅助角色实例

Azure Pack 是不是支持使用 WASABi 自动缩放 Web 和辅助角色?

为啥“Azure Kubernetes 服务 RBAC 读者”角色允许部署写入

Azure 中的辅助角色工作?