如何让Cloud Service与Azure中的VM通信?

时间:2012-11-13 16:52:11

标签: azure virtual-machine

我在Azure中设置了Cloud Service和VM角色。 My Cloud Service是在Server 2012上运行的简单MVC站点,VM是安装了redis的Ubuntu OS。如何在Azure中使用角色间通信? (一切都在同一个数据中心。)

我可以在VM上设置一个公共端点,但我宁愿不让我的redis机器暴露出来。有没有正确的方法来做到这一点?分配给我的VM的专用IP是否已修复?如果是这样,我可以使用它,对吧?

1 个答案:

答案 0 :(得分:3)

您必须使用Windows Azure虚拟网络(WAVN)才能打开Windows Azure虚拟机与Windows Azure云服务之间的通信。

请注意,WAVN明确要求指定亲和组。因此,如果您没有 - 您将能够在创建虚拟网络时创建。现在,您的云服务(即您的Web /工作者角色)必须位于同一个关联组中才能“加入”该虚拟网络。我不确定在创建服务后是否可以更改Cloud Service的Affinity组。因此,只需指定创建虚拟网络的Affinity Group即可创建新的云服务。

下一步是将虚拟机配置为使用您创建的虚拟网络 - 它是“From Gallery”过程的一部分。

现在您需要指示Cloud Service(Web / worker角色)。这是通过Visual Studio中的Cloud项目的.csconfig文件完成的。目前还没有配置网络的UI。您必须包含NetworkConfiguration部分作为Configuration根元素的直接后代:

<NetworkConfiguration>
  <VirtualNetworkSite name="SampleNetwork" />
  <AddressAssignments>
    <InstanceAddress roleName="ContactManager.Web">
      <Subnets>
        <Subnet name="FrontEnd" />
      </Subnets>
    </InstanceAddress>
  </AddressAssignments>
</NetworkConfiguration>

您可以描述您希望角色驻留的角色以及虚拟网络名称和子网。

手指交叉,现在一切都在同一个网络中 - 你创建的那个网络。名称解析通常必须正常工作,但它在预览中,因此预计会出现问题。现在,您的MVC应用程序可以直接对您的Linux VM进行“调用”。对于寻址,只需使用VM名称。

如果要从Linux VM调用MVC,则必须解决WebRole的特定实例。

至于IP地址 - 内部IP地址(A.K.A.直接IP地址或DIP)永远不会修复!即使您创建虚拟网络,也只能为DHCP分配IP地址。它们将从您在虚拟网络设置中指定的池中分配。

可以找到关于Windows Azure虚拟网络的良好读数here