springcloud系列12——Eureka的高可用
阿新 • • 發佈:2018-12-10
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也掛掉,將導致服務不能註冊。