在单个Azure云服务上部署多个Web角色和工作者角色

SKB*_*KBG 5 asp.net deployment azure azure-worker-roles azure-web-roles

这可能不是什么新鲜事,但我希望有人可以让我走上正轨,因为它在天蓝色部署期间有点混乱.我正在计划在Azure上进行部署.这就是我所拥有的

  1. 面向ASP.Net MVC应用程序(Web角色)+ WCF服务(Web角色)的公众只能通过此消息队列访问此asp.net应用程序+ WCF服务(工作者角色)
  2. 一个自定义STS即ASP.NET MVC应用程序(web-role)充当Id-Provider(用于1.依赖方)+ WCF服务(web-role)以将一些STS功能暴露给RP,例如1.
  3. SQL Azure:由1和2访问注意:1.最终将成为一个门户网站,在Web和工作者角色上托管多个wcf服务,以进行内部和外部访问.

我的问题是,如果1.是暴露给公众的应用程序,而2.是1.为联邦安全(内部),我应该如何计划我的部署在azure记住1.将需要横向扩展有时后来跟两个wcf服务一起?我是否发布到一个云服务或如何?我的理解是,云服务是n-web/worker角色的逻辑容器.但是,如果你有2个网页鞋底,就像在这种情况下两个asp.net应用程序,哪一个成为默认的?

最好的问候萨蒂什

小智 5

默认情况下,解决方案中的所有 Web 角色都是公开的。如果您愿意,您可以通过进入服务定义并删除 HTTP 端点来更改此设置;您还可以定义仅可用于云服务的内部 HTTP 端点,负载均衡器不会暴露任何内容。在同一个项目中拥有所有 Web 角色的优势在于,可以轻松地动态检查 RoleEnvironment 和每个 Web 角色——换句话说,解决方案中的所有角色都“知道”其他角色及其可用端口。部署一个包也很容易。

所有角色共享相同的 DNS 名称 (.cloudapp.net)(但是您可以使用主机标头来区分),但它们通常通过 .cloudapp.net 服务上的负载平衡器使用不同的端口来公开。当服务在云中运行时,您可以看到这一点,门户中有指向每个角色的链接,这些角色具有指定端口的公共 HTTP 端点。端口 80(由外部 HTTP 端点定义)是“默认”站点。

您还可以创建多个云项目,并分别部署它们。在这种情况下,每个都有自己的 DNS 名称,并且每个都单独管理。这是否是一件好事取决于应用程序的耦合程度,以及您通常是部署整个解决方案,还是仅更新该解决方案中的单个角色。但是没有成本或可扩展性差异。

如果您只打算频繁地重新部署其中一个角色,我更愿意将它们分开。


dqm*_*dqm 1

要在同一云实例下部署多个 Web 角色,请查看以下内容: 将网站部署到云服务中的最佳实践

多个辅助角色的实现会比较棘手: 每个实例运行多个 WorkerRoles