在前一篇文章中,咱們介紹了eureka服務註冊中心的使用,主要用途就是用於管理多個服務的多個實例,實現服務的高可用; 可是有人就會想到,服務都是能夠用的,可是若是個人服務註冊中心掛了,那麼是否是全部的服務都不可用了呢? 這時咱們就會想到對服務註冊中心作HA;html
還記得註冊中心的一條配置麼?spring
eureka.client.register-with-eureka: false
是否註冊到註冊中心,當咱們有多個註冊中心時,這條配置就有使用價值了; 咱們在新建一個module,名字爲EurekaServerBak,依賴等引入徹底相同,不一樣的是sever.port=8762; 將上面的配置改成true,且fetch-registry=true;app
EurekaServer配置以下:源碼分析
server: port: 8761 #端口號 eureka: instance: hostname: peer1 home-page-url: swagger-ui.html client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/ server: enable-self-preservation: false spring: application: name: eureka-server #應用名
EurekaServerBak配置以下:fetch
server: port: 8762 #端口號 eureka: instance: hostname: peer2 home-page-url: swagger-ui.html client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka/ server: enable-self-preservation: false spring: application: name: eureka-server #應用名
此時咱們須要配置一下host文件,將peer1和peer2分別解析爲本地地址127.0.0.1;爲什麼如此下面有說明;ui
也能夠點擊查看Spring Cloud Eureka 源碼分析(一) 服務端啓動過程 的3.1.3小節的源碼分析;url
這時分別啓動兩個服務,並打開eureka實例列表頁面,能夠看到兩個Eureka服務相互註冊在彼此了; 這時咱們啓動客戶端,會發如今兩個註冊中心都會有註冊記錄;spa
1.問什麼要添加peer1,peer2做爲代替localhost? 若是沒有這樣作,能夠試一下,你會發現一個服務實例只能註冊在一個eureka的註冊中心,沒法註冊到全部的註冊中心; 分析緣由是由於eureka對hostname作了過濾,但沒有檢查port致使的;
這裏連接一篇文章,將eureka的心跳時間等作了簡單的解釋; http://fengyilin.iteye.com/blog/2367265;.net