2014-02-18 74 views
2

我想仅在内部端点的Cloud Service 1的WebRole中部署后端WCF服务。 并在WebRole Cloud Service 2中部署ASP.NET MVC前端。Azure:如何在一个虚拟网络中将一个云服务与其他云服务连接

是否可以使用Azure Virtual Netowork从内部端点从前端调用后端?

更新:我只是想建立简单的SOA架构师这样的:

+0

你想通过将它们放在单独的云服务中来完成什么?这主要是出于部署的原因? – BrentDaCodeMonkey

+1

我想单独部署两个应用程序 – Pokemon

回答

1

Yes和No.

内部端点实质上意味着该角色实例已经被配置成接受特定端口上的流量,但该端口无法接收来自云服务外部的流量(因此它对云服务是“内部”的)。内部端点也没有负载平衡,因此您需要自己“调配”来自呼叫者的流量管理。

现在问题出现了,虚拟网络允许您安全地遍历云服务边界,让云服务1中的角色实例调用云服务2中的角色实例。但是,要执行此操作,调用角色实例需要知道如何解决接收实例。如果他们在同一个云服务中,则可以通过RoleEnvironment类来爬取云服务拓扑。但是这个类只适用于它存在的云服务,它不知道虚拟网络。

现在你可以有接收角色实例发布其FQDN到一个共享区域(称Azure的表存储)。但是,除非您使用自托管DNS服务器配置了虚拟网络,否则云服务将只使用其自己的内部DNS解析(仅允许您解析同一云服务中的短名称)。

所以,是的,你可以做你要完成什么,但它确实提出了一些挑战。鉴于此,我不得不争论分离部署的便利性是否足以证明解决方案的额外复杂性?如果是这样,那么我还会查看是否有更好的方法来互连这两个服务,而不是直接调用(如基于队列的模式)。

+0

如果说Azure虚拟网络的主要目的是连接许多虚拟机而不是云服务,那么我是否正确?我只是试图构建像这样的http://i.stack.imgur.com/C5Xan这样简单的SOA架构。png – Pokemon

+0

虚拟网络是跨云服务资源(PaaS和IaaS)以及通过使内部网络可见的云计算实例创建混合解决方案的一种方式。请记住,“云服务”仅仅是一个虚拟网络容器,您将虚拟机放入其中(这包括PaaS角色实例,这些虚拟服务器只是管理的虚拟机)。 – BrentDaCodeMonkey

1

@BrentDaCodeMonkey在他的答案中提出了一些非常有效的观点,所以先阅读。

我个人不想放弃通过负载均衡进行自动发现和扩展。我的建议是通过Azure服务总线中继端点公开WCF端点。这将为您提供一个“固定”端点,与之通信(解决发现问题)和无限可扩展性,因为多个服务器可以在同一个Service Bus中继地址上注册和监听。此外,当您的Web应用程序连接到您的WCF服务时,它会通过共享密钥身份验证向混合中引入一些基本安全性。

如果您共同找到与你的云服务的服务总线实例中间继电器的开销是完全可以忽略不计,恕我直言,值得它的好处如上所述。

相关问题