我在配置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
为什么?
答案 0 :(得分:1)
我猜你的eurekas没有注册localhost
作为他们的主机名,所以这就是你在eureka仪表板中看到它们不可用的原因。 Eureka使用了这种模式,它将服务URL与调用者主机名相匹配,以确定复制上下文。
从尤里卡服务网址列表com.netflix.eureka.cluster.PeerEurekaNodes::resolvePeerUrls
(eureka.client.serviceUrl
密钥或基于DNS)中提取Peer eureka节点。稍后,通过使用主机名获取副本状态,此列表将与com.netflix.eureka.util.StatusUtil::getStatusInfo
中当前已注册的eureka应用程序进行匹配。
由于您的应用程序很可能未在localhost
注册,因此会将其添加到不可用的副本中。
答案 1 :(得分:-1)
您应该在每个服务器的eureka.client.register-with-eureka=false
个文件中设置application.properties
。