Eureka Server的高可用是通过各个Eureka Server作为服务向其他Eureka Server注册,来实现服务列表的同步,达到高可用的效果。
默认情况下,每个Eureka服务器也是Eureka客户端,并且需要(至少一个)服务URL来定位对等端。
我们对以前的Eureka Server工程做修改,在application.yml配置如下:
---
server:
port: 8761
spring:
profiles: peer1
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8762/eureka/,http://peer3:8763/eureka/
---
server:
port: 8762
spring:
profiles: peer2
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/,http://peer3:8763/eureka/
---
server:
port: 8763
spring:
profiles: peer3
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/
这里是本地测试,所以3个Eureka Server的配置都写在一个配置文件。
修改hosts文件:127.0.0.1 peer1 peer2 peer3
,peer1,peer2,peer3都映射到127.0.0.1。
在启动时指定profile,idea的配置如下:
依次启动peer1,peer2,peer3。
观察peer1,peer2的日志都有报错。peer1报错是因为peer2和peer3服务没有启动,导致没法将自己注册到peer2和peer3。peer2报错是因为peer3没有启动,peer3启动正常,无错误。
查看peer1
查看peer2
查看peer3
可以看到:
* 1.每个Eureka Server都是其他Eureka Server的一个服务;
* 2.每个Eureka Server都是相互同步的。
其他服务提供者的application.yml修改:
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8761/eureka,http://peer1:8762/eureka,http://peer1:8763/eureka
建议把每个Eureka Server地址都写上。只写其中一个启动也是没问题的。但是,如果只写peer1的地址,那么该服务挂掉,且peer1也挂掉,将导致服务不能注册。
Eureka Server的高可用参考Spring Cloud官方文档