本文主要是介绍Eureka高可用注册中心registered-replicas没有分布式注册中心,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
自己在学习过程中发现,如果Eureka挂掉了,其他的Client就跑不起来了,那既然是商业项目,还是要处理好这个问题,所以决定用《Spring Cloud微服务实战》(PDF版在全栈技术交流群中自行获取)中说的“高可用注册中心”。
一开始我yml的配置是这样的
server:port: 8761
eureka:instance:hostname: 127.0.0.1client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://127.0.0.1:8762/eureka/
spring:application:name: eureka-serverprofiles:active: Eureka1
这样做的结果是,注册中心都可以跑起来,并且Application也有信息,一个Eureka Down掉以后,Client会注册到另一个Eureka上,但是registered-replicas和available-replicas就是没有分布式注册中心的地址。
后来在这篇博客《Eureka高可用注册中心,available-replicas不出现分布式注册中心》看到了几种说法,
- eureka.client.serviceUrl.defaultZone配置项的地址,不能使用localhost,要使用service-center-1之类的域名,通过host映射到127.0.0.1;
- spring.application.name或eureka.instance.appname必须一致;
- 相互注册要开启:
eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
根据我的验证,应该是1和3比较靠谱,唉,有的时候啊,就得按照书上老老实实来,不要自作聪明把hostname写成127.0.0.1。我在hosts添加hostname后,yml配置改成如下:
spring:application:name: eureka-serverprofiles:active: eureka1
server:port: 8761
eureka:instance:hostname: eureka1client:fetch-registry: trueregister-with-eureka: trueserviceUrl:defaultZone: http://eureka2:8762/eureka/
这里我用一个工程,两个yml启动,所以
Program arguments 设置如下,当然也可以分两个工程启动:
eureka1
--spring.profiles.active=eureka1
eureka2
--spring.profiles.active=eureka2
最后附上截图
这篇关于Eureka高可用注册中心registered-replicas没有分布式注册中心的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!