如何在Zuul服务器中自定义功能区负载均衡器

时间:2017-06-07 02:39:49

标签: netflix-zuul spring-cloud-netflix netflix-ribbon

据我所知,在Zuul代理服务器中使用的默认负载均衡器为 DynamicServerListLoadBalancer ,并使用 ZoneAffinityServerListFilter 规则来选择服务器。但是,有什么办法可以自定义zuul代理服务器中使用的负载均衡器

我尝试添加以下配置以更改为loadbalancer规则:

eureka.client.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule

但似乎仍然坚持使用默认配置。

非常感谢任何建议。

1 个答案:

答案 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)

您可以找到示例代码here,相关问题为here