gpt4 book ai didi

java - 功能区负载平衡器看不到服务器列表

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:29 25 4
gpt4 key购买 nike

我正在玩 Spring Cloud 1.0.0.M3。我有我的 Eureka 以及我的配置服务器。我还有两个微服务:fancyserver 和 fancyribbon。服务器代码是标准的 Hello World:

@Configuration
@EnableAutoConfiguration
@RestController
@EnableEurekaClient
public class Application {
@RequestMapping("/")
public String home() {
return "Hello World ";
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

fancyribbon代码也很简单。它尝试发现 fancyserver 并返回其结果:

@Configuration
@EnableAutoConfiguration
@RestController
@EnableEurekaClient
public class RibbonClient {
@Autowired
private RestTemplate restTemplate;

public RestTemplate getRestTemplate() {
return restTemplate;
}
public void setRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@RequestMapping("/")
public String home() {
return getRestTemplate().getForObject("http://fancyserver", String.class).toString() ;
}
public static void main(String[] args) {
SpringApplication.run(RibbonClient.class, args);
}
}

不幸的是,这不起作用。功能区客户端看不到服务器列表。这意味着它没有看到 fancyserver。但是我知道 fancyserver 和 fancy client 都在 Eureka 注册了。我可以在我的 Eureka 服务器地址下看到它们:

http://localhost:7001/eureka/apps

编辑:可以在 pastebin 上看到 eureka 输出:http://pastebin.com/vua8f4XR

我还尝试手动调用负载均衡器:

 ServiceInstance instance = loadBalancer.choose("fancyserver");
fancyServerUri= URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));

这会导致同样的错误:

java.lang.IllegalStateException: Unable to locate ILoadBalancer for service: fancyserver No up servers available from load balancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=fancyserver,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:com.netflix.loadbalancer.ConfigurationBasedServerList@6a8dcefd

我的 application.yml 配置非常简单。对于花式服务器:

server:
port: 9002
eureka:
instance:
virtualHostName: fancyserver
appGroupName: fancyGroup

对于花式丝带:

server:
port: 9003
eureka:
instance:
virtualHostName: fancyribbon
appGroupName: fancyGroup
client:
region: default
registryFetchIntervalSeconds: 5
availabilityZones:
default: ${APPLICATION_DOMAIN:${DOMAIN:defaultZone}}

bootstrap.yml 同样简单。对于花式服务器:

spring:
application:
name: fancyserver
cloud:
config:
uri: http://localhost:8888

对于 fancyribbon:

spring:
application:
name: fancyribbon
cloud:
config:
uri: http://localhost:8888

我想知道我错过了什么。为什么 fancyribbon 看不到 fancyserver?

编辑:配置服务器包括指向 eureka 的链接等内容:

eureka:
instance:
leaseRenewalIntervalInSeconds: 10
client:
serviceUrl:
defaultZone: http://localhost:7001/eureka/

最佳答案

试试快照? Spencer 本周早些时候注意到,如果本地网络有域(例如,您有本地 DNS 或添加本地主机查找中不存在的假域的路由),会产生奇怪的效果。我想我们已经为他修好了。

关于java - 功能区负载平衡器看不到服务器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27442565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com