我正在玩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);
}
}
不幸的是,这不起作用。功能区客户端无法看到服务器列表。这意味着它没有看到花式服务器。但我知道,花哨服务器和花哨的客户都在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:无法找到服务的ILoadBalancer:fancyserver 负载均衡器没有可用的服务器:DynamicServerListLoadBalancer:{NFLoadBalancer:name = fancyserver,当前服务器列表= [],负载均衡器stats =区域统计信息:{},服务器统计信息:[]} ServerList:com.netflix.loadbalancer.ConfigurationBasedServerList @ 6a8dcefd
我的application.yml配置非常简单。对于fancyserver:
server:
port: 9002
eureka:
instance:
virtualHostName: fancyserver
appGroupName: fancyGroup
对于fancyribbon:
server:
port: 9003
eureka:
instance:
virtualHostName: fancyribbon
appGroupName: fancyGroup
client:
region: default
registryFetchIntervalSeconds: 5
availabilityZones:
default: ${APPLICATION_DOMAIN:${DOMAIN:defaultZone}}
bootstrap.yml,同样简单。对于fancyserver:
spring:
application:
name: fancyserver
cloud:
config:
uri: http://localhost:8888
对于fancyribbon:
spring:
application:
name: fancyribbon
cloud:
config:
uri: http://localhost:8888
我想知道我错过了什么。为什么fancyribbon看不到fancyserver?
编辑:配置服务器包括尤里卡的链接:
eureka:
instance:
leaseRenewalIntervalInSeconds: 10
client:
serviceUrl:
defaultZone: http://localhost:7001/eureka/
答案 0 :(得分:3)
尝试使用快照? Spencer本周早些时候注意到,如果本地网络有一个域(例如你有本地DNS或添加了一个在本地主机查找中不存在的虚假域的路由),会产生一种奇怪的效果。我想我们已经为他修好了。