我在 Azure 中设置了云服务和 VM 角色。My Cloud Service 是一个在 Server 2012 上运行的简单 MVC 站点,VM 是一个安装了 redis 的 Ubuntu 操作系统。Azure 中的角色间通信应该如何工作?(一切都在同一个数据中心。)
我可以在 VM 上设置一个公共端点,但我宁愿不暴露我的 redis 机器。有没有合适的方法来做到这一点?分配给我的 VM 的私有 IP 是否固定?如果是这样,我可以使用它,对吗?
我在 Azure 中设置了云服务和 VM 角色。My Cloud Service 是一个在 Server 2012 上运行的简单 MVC 站点,VM 是一个安装了 redis 的 Ubuntu 操作系统。Azure 中的角色间通信应该如何工作?(一切都在同一个数据中心。)
我可以在 VM 上设置一个公共端点,但我宁愿不暴露我的 redis 机器。有没有合适的方法来做到这一点?分配给我的 VM 的私有 IP 是否固定?如果是这样,我可以使用它,对吗?
您必须使用 Windows Azure 虚拟网络 (WAVN) 才能打开 Windows Azure 虚拟机和 Windows Azure 云服务之间的通信。
请注意,WAVN 明确要求指定关联组。因此,如果您没有 - 您将能够在创建虚拟网络时创建。现在,您的云服务(即您的网络/工作人员角色)必须在同一个关联组中才能“加入”该虚拟网络。我不确定在创建服务后是否可以更改云服务的关联组。因此,只需通过指定您创建虚拟网络的关联组来创建新的云服务。
下一步是配置虚拟机以使用您创建的虚拟网络 - 它是“从图库”过程的一部分。
现在您需要指示云服务(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 地址(AKA 直接 IP 地址或 DIP)永远不会固定!即使您创建了虚拟网络,也只能让 DHCP 分配 IP 地址。它们将从您在虚拟网络设置中指定的池中分配。
可以在此处找到有关 Windows Azure 虚拟网络的好读物。