据我所知,在Zuul代理服务器中使用的默认负载均衡器为 DynamicServerListLoadBalancer ,并使用 ZoneAffinityServerListFilter 规则来选择服务器。但是,有什么办法可以自定义zuul代理服务器中使用的负载均衡器
我尝试添加以下配置以更改为loadbalancer规则:
eureka.client.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
但似乎仍然坚持使用默认配置。
非常感谢任何建议。
答案 0 :(得分:3)
要使用配置更改负载平衡规则,您应该定义功能区配置,如下所示。
your_ribbonclient_name.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
your_ribbonclient_name
应该替换为您的配置正确的一个。在Zuul中,功能区客户端名称与每个路由的服务ID相同。
您还可以使用IRule
提供自己的@RibbonClient
bean以实现负载均衡规则,如下所示。
@RibbonClient(name = "your_ribbonclient_name", configuration = YourConfigurationClass.class)
您可以找到示例代码here
如果要将功能区配置应用于服务器中的整个功能区客户端,
你可以用@RibbonClients
(不是@RibbonClient
)来做到这一点。
@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)