一.集羣搭建思路
每個區域一個Eureka集羣區域,負責該區域內的服務實例。每個區域至少有一臺Eureka服務器來處理區域故障
Eureka分爲Eureka Server和Eureka Client及服務端和客戶端。Eureka Server爲註冊中心,是服務端,而服務提供者和消費者爲客戶端,消費者也可以是服務者,服務者也可以是消費者。同時Eureka Server在啓動時默認會註冊自己,成爲一個服務,所以Eureka Server也是一個客戶端,這是搭建Eureka集羣的基礎。
服務提供者向註冊中心註冊服務,並每隔30s發送一次心跳,如果Eureka在90s後還未收到服務提供者發來的心跳,那麼它會認爲該服務已經死亡就會註銷這個服務。這個註銷並不是立即註銷,而是會在60s以後對在這個時間段內“死亡”的服務集中註銷。如果立即註銷的話,會給Eureka服務器造成巨大的壓力
Eureka還具有自我保護機制,如果在15分鐘內超過85%的節點都沒有了心跳,那麼Eureka就認爲客戶端於註冊中心認爲出了網絡故障,所以不會再接收心跳,也不會刪除服務。
客戶端消費者會向註冊中心拉取服務列表,因爲每個服務器的承載量是有限的,所以同一個服務器會部署在多個服務器上,每個服務器上的服務都會去註冊中心註冊服務,他們會有相同的服務器名稱但有不同的實例id,所以拉取的是服務列表。我們最終通過負載均衡來獲取一個服務,這樣可以均衡各個服務器上的服務。
二.Eureka集羣的實現
1.修改配置文件Server-1
server:
port: 8761
spring:
application:
name: eureka-server
eureka: # 該項目向那個註冊中心註冊自己
client:
serviceUrl:
defaultZone: http://localhost:8762/eureka/,http://localhost:8763/eureka/
2.1.修改配置文件Server-2
server:
port: 8762
spring:
application:
name: eureka-server
eureka: # 該項目向那個註冊中心註冊自己
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/,http://localhost:8763/eureka/
3.修改配置文件Server-3
server:
port: 8763
spring:
application:
name: eureka-server
eureka: # 該項目向那個註冊中心註冊自己
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
三.修改host文件
修改hosts文件:
在hosts 裏面添加
修改配置文件
把本機地址修改爲peer1,peer2,peer3
四.最終配置文件
5.集羣搭建完成
六.測試
不管使用的是哪個註冊中心,它都註冊成功了
隨便掛掉一臺, Eureka server的集羣裏面,沒有主機和從機的概念,節點都是對等的,只有集羣裏面有一個集羣存活,就能保證服務的可用性
只要有一臺存活,服務就能註冊和調用。