尤里卡复制品无法使用

时间:2016-12-05 23:08:08

标签: spring-boot spring-cloud netflix-eureka

我在配置eureka副本时遇到问题:

尤里卡服务:

@EnableEurekaServer
@SpringBootApplication
public class DiscoveryService {

    public static void main(String[] args) {
        SpringApplication.run(DiscoveryService.class, args);
    }
}

bootstrap.properties

spring.application.name=discovery
spring.cloud.config.uri=http://localhost:8888

我还有两个yml文件

服务器1在8761上运行

eureka.client.serviceUrl.defaultZone:http://localhost:8762/eureka/
eureka.client.registerWithEureka:false
eureka.client.fetchRegistry:false

用于在8762上运行的服务器2

eureka.client.serviceUrl.defaultZone:http://localhost:8761/eureka/
eureka.client.registerWithEureka:false
eureka.client.fetchRegistry:false

我可以输入两个仪表板,但我看到两个实例都有这个:

registered-replicas http://localhost:8761/eureka/
unavailable-replicas    http://localhost:8761/eureka/,
available-replicas

为什么?

2 个答案:

答案 0 :(得分:1)

我猜你的eurekas没有注册localhost作为他们的主机名,所以这就是你在eureka仪表板中看到它们不可用的原因。 Eureka使用了这种模式,它将服务URL与调用者主机名相匹配,以确定复制上下文。

从尤里卡服务网址列表com.netflix.eureka.cluster.PeerEurekaNodes::resolvePeerUrlseureka.client.serviceUrl密钥或基于DNS)中提取Peer eureka节点。稍后,通过使用主机名获取副本状态,此列表将与com.netflix.eureka.util.StatusUtil::getStatusInfo中当前已注册的eureka应用程序进行匹配。

由于您的应用程序很可能未在localhost注册,因此会将其添加到不可用的副本中。

答案 1 :(得分:-1)

您应该在每个服务器的eureka.client.register-with-eureka=false个文件中设置application.properties