Java 功能区负载平衡器无法查看服务器列表

Java 功能区负载平衡器无法查看服务器列表,java,spring-boot,spring-cloud,Java,Spring Boot,Spring Cloud,我正在玩SprinG Cloud 1.0.0.M3。我有我的Eureka和我的配置服务器。我还有两个微服务:fancyserver和fancyribbon。服务器代码是标准的Hello World: @Configuration @EnableAutoConfiguration @RestController @EnableEurekaClient public class Application { @RequestMapping("/") public String home() {

我正在玩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输出:

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

 ServiceInstance instance = loadBalancer.choose("fancyserver");
 fancyServerUri= URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));
这会导致相同的错误:

java.lang.IllegalStateException:找不到服务:fancyserver的ILoadBalancer 负载平衡器没有可用的up服务器:DynamicServerListLoadBalancer:{NFLoadBalancer:name=fancyserver,当前服务器列表=[],负载平衡器统计数据=区域统计数据:{},服务器统计数据:[]}服务器列表:com.netflix.loadbalancer。ConfigurationBasedServerList@6a8dcefd

我的application.yml配置非常简单。对于fancyserver:

server:
   port: 9002
eureka:
  instance:
    virtualHostName: fancyserver
    appGroupName: fancyGroup
spring:
    application:
        name: fancyserver
    cloud:
        config:
            uri: http://localhost:8888
对于fancyribbon:

server:
   port: 9003
eureka:
  instance:
     virtualHostName: fancyribbon
     appGroupName: fancyGroup
  client:
     region: default
     registryFetchIntervalSeconds: 5
     availabilityZones:
         default: ${APPLICATION_DOMAIN:${DOMAIN:defaultZone}}
spring:
    application:
        name: fancyribbon
    cloud:
        config:
            uri: http://localhost:8888
bootstrap.yml和类似的简单。对于fancyserver:

server:
   port: 9002
eureka:
  instance:
    virtualHostName: fancyserver
    appGroupName: fancyGroup
spring:
    application:
        name: fancyserver
    cloud:
        config:
            uri: http://localhost:8888
对于范克里本:

server:
   port: 9003
eureka:
  instance:
     virtualHostName: fancyribbon
     appGroupName: fancyGroup
  client:
     region: default
     registryFetchIntervalSeconds: 5
     availabilityZones:
         default: ${APPLICATION_DOMAIN:${DOMAIN:defaultZone}}
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或添加了本地主机查找中不存在的假域的路由),则会产生一种奇怪的效果。我想我们帮他修好了。

我看不到
eureka.client.serviceUrl
(可能在配置服务器中)?谢谢Dave。我编辑了这篇文章以包含serviceUrl。是的,你是对的,它在配置服务器提供的配置文件中。你能试试快照吗?Spencer在本周早些时候注意到,如果本地网络有一个域(例如,您有本地DNS或添加了本地主机查找中不存在的假域的路由),则会产生一种奇怪的效果。我想我们帮他修好了。哦,哇。穆乔很感激。1.0.0.BUILD-SNAPSHOT有效。修复是否会进入M3?这不是发布工作的方式(M3已经构建和部署)。不过马上就有一个RC1。