我们有4个区域,每个区域都运行着zuul和UI服务。 Ribbon是我们跨服务的负载平衡器。
我们正在
中使用自定义负载平衡规则在Zuul中实现粘性会话如您在上面的文件中看到的,有一行获取特定服务可访问服务器的列表
List<Server> servers = getLoadBalancer().getReachableServers();
由于启用了区域亲和性,服务器列表中将只有一台服务器。
有没有办法获得所有可用服务器而不考虑区域?
我们正在寻找可以代替上述负载平衡器调用的东西。
在当前的粘性会话规则中,我们使用ZoneAvoidanceRule。我们还尝试了AvailabilityFilteringRule,BaseLoadBalancer和RoundRobinRule。但是它们都没有给出所有4个服务器实例的引用。
如何读取所有服务器列表?
答案 0 :(得分:0)
最后将要实现这一目标。
我要做的就是删除行
List<Server> servers = getLoadBalancer().getReachableServers();
然后注入具有所有应用程序实例信息的EurekaClient bean,然后将服务器列表读取为
Application app = eurekaClient.getApplication("application-name");
List<InstanceInfo> allinstances = app.getInstances();