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

时间:2013-03-25 11:42:02

标签: asp.net deployment azure azure-web-roles azure-worker-roles

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

  1. 面向公众的ASP.Net MVC应用程序(网络角色)+ WCF服务(网络角色)只有这个asp.net应用程序才能访问+ WCF服务(工作者角色)再次可以通过以下方式访问:队列
  2. 自定义STS,即作为Id-Provider的ASP.NET MVC应用程序(web-role)(用于1.依赖方)+ WCF服务(web-role)将某些STS功能暴露给RP,例如1。
  3. SQL Azure:由1和2访问 注意:1。最终将成为一个门户网站,在内部和外部访问的Web和工作者角色上托管多个wcf服务。
  4. 我的问题是,如果1.是公开的应用程序,2。是1.联邦安全(内部),我应该如何计划我的部署在azure记住1.将需要规模 - 之后的某个时间以及两个wcf服务?我是否发布到一个云服务或如何? 我的理解是,云服务是n-web / worker角色的逻辑容器。 但是当yu有2个网页鞋底时,就像在这种情况下两个asp.net应用程序,哪一个成为默认应用程序?

    最诚挚的问候 萨蒂什南比亚

2 个答案:

答案 0 :(得分:4)

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

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

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

如果您要经常重新部署其中一个角色,我建议将其分解。

答案 1 :(得分:1)

要在同一个云实例下部署多个Web角色,请查看以下内容: Best practice for Deployment of Web site into a cloud service

实施多个辅助角色将更加棘手: Run multiple WorkerRoles per instance