Azure云服务负载均衡机制咨询:多实例Web Role流量分发原理
Azure云服务(经典)内置负载均衡详解
我来给你梳理下Azure经典云服务的负载均衡机制——这也是你找不到单独负载均衡器资源的核心原因:经典云服务的负载均衡是完全内置在服务本身中的,不需要单独创建或管理负载均衡器资源。
Web Role的流量负载均衡方式
- 公网流量分配:默认采用**轮询(Round Robin)**策略,将外部请求均匀分发到你的Web Role多个实例上。如果需要会话亲和性(也就是让同一个用户的请求始终落到同一个实例上),可以在服务定义文件
ServiceDefinition.csdef里的<InputEndpoint>节点添加sessionAffinity="Enabled"配置,这样负载均衡器会基于客户端的IP地址绑定会话。 - 内部流量分配:如果是Worker Role调用Web Role,或者Web Role实例之间的内部通信,同样会通过内置的负载均衡器,采用轮询策略,也支持配置会话亲和性。
Worker Roles的负载均衡情况
Worker Roles默认不会暴露公网端点,所以没有外部流量负载均衡的需求。但如果你给Worker Role配置了输入端点(比如用于接收外部请求或者内部服务调用),那么负载均衡逻辑和Web Role完全一致:轮询分配,可配置会话亲和性。另外,Worker Roles之间的内部通信也会通过内置负载均衡来分发请求。
查看和配置负载均衡的方法
- 查看当前配置:可以在Azure门户的云服务配置页面查看端点的会话亲和性设置;也可以用PowerShell命令
Get-AzureService -ServiceName <你的云服务名称>,或者经典Azure CLI命令azure cloudservice show <你的云服务名称>来获取详细的端点配置信息。 - 修改会话亲和性:需要编辑本地的
ServiceDefinition.csdef文件,找到对应的<InputEndpoint>节点,添加或修改sessionAffinity属性,然后重新部署云服务即可生效。
要注意的是,这种内置负载均衡是Azure经典云服务的特有机制,和ARM模型里的独立负载均衡器资源不一样——ARM里的负载均衡器是单独创建的资源,而经典云服务把这部分功能集成到了服务本身,所以你在订阅里找不到单独的负载均衡器资源是正常的。
内容的提问来源于stack exchange,提问作者Varun
相关产品推荐
相关产品推荐

