Azure网络在同一角色的实例之间进行通信

时间:2013-05-01 18:06:32

标签: azure azure-web-roles azure-worker-roles azure-virtual-network

同一角色的多个角色实例是否可以通过获取RoleEnvironment中所有这些实例所侦听的特定端点的VIP(虚拟IP)地址来相互通信?如果是这样,则返回VIP可以对调用者(RoleEnvironment方法)实例本身进行负载平衡。

1 个答案:

答案 0 :(得分:6)

角色实例可以通过内部端点相互通信。与输入端点不同,它们仅对部署中的其他实例可见(无论角色如何)。

直接通过内部端点直接说话,完全绕过外部VIP负载均衡器。因此,如果您有三个正在尝试连接的辅助角色实例(例如,您的REST服务所在的实例),则必须在3个实例之间进行自己的负载平衡。

使用内部端点与输入端点一样简单。首先设置一个: enter image description here

随后抓一个。例如(最粗略的意思):

        var random = new Random();
        var role = RoleEnvironment.Roles["WorkerRole1"];
        var instanceNumber = random.Next() % role.Instances.Count;
        var ipendpoint = role.Instances[instanceNumber].InstanceEndpoints["myservice"].IPEndpoint;
        var address = ipendpoint.Address;
        var port = ipendpoint.Port;

注意:您仍然可以从任何角色访问任何角色的输入端点。此时,您将像来自外部世界的任何其他流量一样进行负载平衡。而且你也必须担心安全问题(而内部端点却没有)。