04-服務註冊Eureka高階
阿新 • • 發佈:2022-04-02
目錄
1、Eureka Server 高可用叢集
1.1、搭建 Eureka Server高可用叢集
1.2、服務註冊到Eureka Server叢集
2、Eureka中的常見問題
2.1、服務註冊慢
2.2、服務節點剔除問題
2.3、監控頁面顯示ip
1、Eureka Server 高可用叢集
在上一個章節,實現了單節點的Eureka Server的服務註冊與服務發現功能。Eureka Client會定時連線Eureka Server,獲取登錄檔中的資訊並快取到本地。微服務在消費遠端API時總是使用本地快取中的資料。因此一般來說,即使Eureka Server發生宕機,也不會影響到服務之間的呼叫。但如果Eureka Server宕機時,某些微服務也出現了不可用的情況,Eureka Server中的快取若不被重新整理,就可能會影響到微服務的呼叫,甚至影響到整個應用系統的高可用。因此,在生成環境中,通常會部署一個高可用的Eureka Server叢集。
Eureka Server可以通過執行多個例項並相互註冊的方式實現高可用部署,Eureka Server例項會彼此增量地同步資訊,從而確保所有節點資料一致。事實上,節點之間相互註冊是Eureka Server的預設行為。
http://eureka1:8761/eureka
如果需要將微服務註冊到Eureka Server叢集只需要修改yml配置檔案即可
eureka:
client:
serviceUrl:
defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/
1.1、搭建 Eureka Server高可用叢集 (1)修改本機host屬性 由於是在個人計算機中進行測試很難模擬多主機的情況,Eureka配置server叢集時需要執行host地址。所以需要修改個人電腦中host地址 127.0.0.1 eureka1 127.0.0.1 eureka2 (2)修改 shop_eureka_server 工程中的yml配置檔案,新增如下配置屬性 #指定應用名稱 spring: application: name: shop-eureka-server --- #執行peer1的配置資訊 spring: profiles: eureka1 server: port: 8761 eureka: instance: hostname: eureka1 client: service-url: defaultZone: http://eureka2:8762/eureka --- #執行peer2的配置資訊 spring: profiles: eureka2 server: port: 8762 eureka: instance: hostname: eureka2 client: service-url: defaultZone:
在配置檔案中通過連字元(---)將檔案分為三個部分,第一部分為應用名稱,第二部分和第三部 分是根據不同的profiles選項動態新增,可以在IDEA啟動時進行啟用配置 使用IDEA啟動歷次EurekaServerApplicaion分別啟用eureka1和eureka2配置。訪問http://eureka1:8761和http://eureka1:8762/。會發現註冊中心 SHOP-EUREKA-SERVER 已經有兩個節點,並且registered-replicas (相鄰叢集複製節點)中已經包含對方。 1.2、服務註冊到Eureka Server叢集
以商品微服務為例,修改defaultZone配置新增多個Eureka Server的地址 2、Eureka中的常見問題 2.1、服務註冊慢 預設情況下,服務註冊到Eureka Server的過程較慢。SpringCloud官方文件中給出了詳細的原因
大致含義:服務的註冊涉及到心跳,預設心跳間隔為30s。在例項、伺服器、客戶端都在本地快取中具有相同的元資料之前,服務不可用於客戶端發現(所以可能需要3次心跳)。可以通過配置 eureka.instance.leaseRenewalIntervalInSeconds (心跳頻率)加快客戶端連線到其他服務的過 程。在生產中,最好堅持使用預設值,因為在伺服器內部有一些計算,他們對續約做出假設 2.2、服務節點剔除問題 預設情況下,由於Eureka Server剔除失效服務間隔時間為90s且存在自我保護的機制。所以不能有效而迅速的剔除失效節點,這對開發或測試會造成困擾。解決方案如下: Eureka Server: 配置關閉自我保護,設定剔除無效節點的時間間隔 eureka: instance: hostname: eureka1 client: service-url: defaultZone: http://eureka2:8762/eureka server: enable-self-preservation: false #關閉自我保護 eviction-interval-timer-in-ms: 4000 #剔除時間間隔,單位:毫秒 Eureka Client: 配置開啟健康檢查,並設定續約時間 eureka: client: healthcheck: true #開啟健康檢查(依賴spring-boot-actuator) serviceUrl: defaultZone: http://eureka1:8761/eureka/,http://eureka1:8761/eureka/ instance: preferIpAddress: true lease-expiration-duration-in-seconds: 10 #eureka client傳送心跳給server端後,續 約到期時間(預設90秒) lease-renewal-interval-in-seconds: 5 #傳送心跳續約間隔
2.3、監控頁面顯示ip 在Eureka Server的管控臺中,顯示的服務例項名稱預設情況下是微服務定義的名稱和埠。為了更好 的對所有服務進行定位,微服務註冊到Eureka Server的時候可以手動配置示例ID。配置方式如下
搜尋
複製