高可用Eurekanode
高可用我就再也不過多解釋了,Eureka Server的設計一開始就考慮了高可用的問題,在Eureka的服務治理設計中,全部的節點便是服務提供方也是消費方,註冊中心也不例外,上一章中我已經將註冊中心EUREKA-SERVER註冊到註冊中心,很直觀,是否還記得單節點中咱們設置過下面這樣的配置信息,讓註冊中心註冊本身。spring
eureka: client: registerWithEureka: true fetchRegistry: true
EurekaServer的高可用實際就是把本身當作服務向註冊中心註冊本身,這就造成了一組互相註冊的服務註冊中心,以實現服務列表的同步,達到高可用,上代碼:安全
這裏我搭建兩套EurekaServer,使用不一樣的端口,以下是註冊中心的配置網絡
仔細觀察下面配置我新增長了一個節點,這裏說明一下,eureka.client.serviceUrl.defaultZone這個配置是相互指定的,意思就是node1的IP指向node2,node2的IP指向node1,這樣就會實現相互註冊及高可用,我這裏是本地啓動兩個,因此ip是同樣的app
#公共配置信息
server:
port: 9901
spring:
application:
name: eureka-server
profiles:
active: node1
eureka:
instance:
prefer-ip-address: true
instance-id: ${spring.cloud.client.ipAddress}:${server.port}
server:
enableSelfPreservation: true #關閉保護機制,以確保註冊中心能夠將不可用的實例剔除.(注意:自我保護模式是一種應對網絡異常的安全保護措施,使用自我保護模式,可讓Eureka集羣更加的健壯、穩定)
evictionIntervalTimerInMs: 5000 #eureka server清理無效節點的時間間隔,默認60000毫秒,即60秒
client:
registerWithEureka: true
fetchRegistry: true
#用---分割不一樣的環境對應的配置信息(YML以"---"做爲文檔分割符,以"..."做爲結束標誌)
---
spring:
profiles: node1
eureka:
client:
serviceUrl:
defaultZone: http://10.200.108.50:9902/eureka/
---
spring:
profiles: node2
eureka:
client:
serviceUrl:
defaultZone: http://10.200.108.50:9901/eureka/
···
#公共配置信息 server: port: 9902 spring: application: name: eureka-server profiles: active: node2 eureka: instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ipAddress}:${server.port} server: enableSelfPreservation: true #關閉保護機制,以確保註冊中心能夠將不可用的實例剔除.(注意:自我保護模式是一種應對網絡異常的安全保護措施,使用自我保護模式,可讓Eureka集羣更加的健壯、穩定) evictionIntervalTimerInMs: 5000 #eureka server清理無效節點的時間間隔,默認60000毫秒,即60秒 client: registerWithEureka: true fetchRegistry: true #用---分割不一樣的環境對應的配置信息(YML以"---"做爲文檔分割符,以"..."做爲結束標誌) --- spring: profiles: node1 eureka: client: serviceUrl: defaultZone: http://10.200.108.50:9902/eureka/ --- spring: profiles: node2 eureka: client: serviceUrl: defaultZone: http://10.200.108.50:9901/eureka/ ···
兩個註冊中心啓動後會訪問第一個或第二個都會出現以下界面:fetch
深刻了解一下:spa
在實際開發中,服務註冊中心不僅僅只有2個節點,而是會有兩個以上的節點存在。但從上面的例子當中,咱們能夠知道Eureka Server的同步遵循着一個很是簡單的原則:只要能夠鏈接集羣中任意一臺註冊中心,就能夠進行信息傳播與同步。因此,若是存在多個節點,咱們只須要將節點之間兩兩鏈接起來,造成通路,那麼他們之間的全部服務均可以共享。設計
咱們的服務只須要向集羣中的任意一個註冊中心中註冊,便可被全部註冊中心所共享,任意一個註冊中心崩潰,都不會影響這個服務被調用。3d
這樣就實現了註冊中心集羣的高可用。code