在 Azure 中,我有一个公开的 webrole 和 2 个只能在专用网络中访问的 workerrole。现在我想在内部对工作角色进行负载平衡,所以我为工作角色设置了一个内部端点,但是我应该使用什么地址与工作人员通信,它不能是内部 IP 地址,因为它特定于特定实例并且不会'不通过负载平衡器对吗?
多谢!
Windows Azure 中没有内部负载平衡器。唯一的负载均衡器是具有公共 IP 地址的负载均衡器。
如果您只想对内部地址(工作人员)进行负载平衡,您必须自己维护它。这意味着您必须在 Azure VM 上安装某种负载均衡器,它是同一个 VNet 的一部分。该负载平衡器可能是您的选择(Windows 或 Linux)。当拓扑发生变化时,你必须实现一个看门狗服务——即工人被回收、硬件故障、扩展事件。除非绝对必要,否则我不会推荐这种方法。
最后一个选项是拥有所有工作人员的(缓存)IP Endpints 池,并在需要时随机选择一个。
基于 Azure 的内部负载均衡器 (ILB) 自 2014 年 5 月 20 日星期二起可用。
http://azure.microsoft.com/blog/2014/05/20/internal-load-balancing/
可用于 SQL AlwaysON 部署和发布以及仅可从您的 VNET 访问的内部端点(即不可公共路由)。
注意:搜索 ILB 帮助并发现此线程。认为值得更新,如果不让我知道,我会删除。
您可以配置您的 IISWebRole
以充当Reverse Proxy
您的角色,Application Request Routing
然后使用您选择的算法将其规则配置为负载平衡请求。
最简单的方法是修改您WebRole.cs
以获取您的(内部)端点列表,WorkerRole
然后以编程方式添加它(参见此处的示例)。
或者,您可以使用启动脚本来调用appcmd
以实现相同的结果。
最后,您必须更改客户端设置以将请求指向(代理的)IIS 端点,而不是常规的 WorkerRole 端点。
请注意,Azure 现在支持内部负载平衡 (ILB)。
http://azure.microsoft.com/blog/2014/05/20/internal-load-balancing