微服務之SpringCloud實戰(三):SpringCloud Eureka高可用

高可用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

相關文章
相關標籤/搜索