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

Ahm*_*gle 3 azure azure-worker-roles azure-web-roles azure-virtual-network

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

Dav*_*gon 6

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

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

使用内部端点与输入端点一样简单.首先设置一个: 在此输入图像描述

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

        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;
Run Code Online (Sandbox Code Playgroud)

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