配置 Eureka Server 集群


簡介

為了使 Eureka Server 實現高可用,我們需要為它配置集群。這樣當有一台 Eureka Server 有故障時,集群中的其他 Server 可以進行代替。Eureka 集群之中的 Node 通過 P2P 通信的方式共享注冊表,以使得每個 Eureka Server 的注冊表保持一致。本教程將在本地開啟兩台 Eureka Server 以測試集群的搭建。

項目源碼

Gitee碼雲

配置 Eureka Server

打開遠程 git 倉庫中的 eureka-server.yml 文件,添加如下配置:

---
spring:
  profiles: peer1
server:
  port: 8761
eureka: 
  instance:
    hostname: peer1
  client: 
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://peer2:8762/eureka

---
spring:
  profiles: peer2
server:
  port: 8762
eureka: 
  instance:
    hostname: peer2
  client: 
    register-with-eureka: true
    fetch-registry: true
    serviceUrl:
      defaultZone: http://peer1:8761/eureka

三划線用於區分兩個不同的 profile,使用 spring-boot 插件啟動項目時可通過命令行參數指定 profile。這兩個 profiles 分別指定了 profile 的名字,服務的端口號。ureka.instance.hostname 為主機名,必須要和 eureka.client.serviceUrl.defaultZone 中的 Peer 主機名保持一致。例如,在 peer1 的 profile 中,把 peer2 作為了集群中另一個鏡像節點,那么這個 http://peer2:8762/eureka URL 中的 peer2 就要和 peer2 profile 中的 eureka.instance.hostname 保持一致。serviceUrl 是 eureka server 的注冊地址,defaultZone 想對於 AWS 的 availability zone,在本地測試可以用 defaultZone 或者其他名稱,以把 Eureka Server 部署在不同集群。register-with-eurekafetch-registry 之前設置為了 false, 因為只有一台 Eureka Server,並不需要自己注冊自己,而現在有了集群,可在集群的其他節點中注冊本服務。

修改 hosts

修改 hosts 文件,以使 peer1 和 peer2 映射到 localhost,因為 eureka server 的主機名必須不同才可互相注冊,所以在本地需要模擬兩個不同的主機名:

127.0.0.1 peer1
127.0.0.1 peer2

配置 productService

打開遠程 git 倉庫中的 product-service.yml 文件,添加如下配置:

server:
  port: 8081
spring:
  cloud:
    config:
      allow-override: true
      override-system-properties: false

eureka:
  client:
    serviceUrl:
      defaultZone: http://peer1:8761/eureka, http://peer2:8762/eureka

這里通過 eureka.client.serviceUrl.defaultZone 把 eureka 集群中的所有 url 都填寫了進來,也可以只寫一台,因為各個 eureka server 可以同步注冊表。

測試

首先啟動 configserver,然后分別運行如下兩條命令啟動 eureka server 集群:

mvn spring-boot:run -Dspring-boot.run.profiles=peer1
mvn spring-boot:run -Dspring-boot.run.profiles=peer2

最后啟動 productService,訪問任一 Eureka Server,如:

http://peer1:8761

我們可以看到 Eureka Server 集群和 Product-Service 均在注冊表里。

Application AMIs Availability Zones Status
EUREKA-SERVER n/a (2) (2) UP (2) - xuqians-imac:eureka-server:8761 , xuqians-imac:eureka-server:8762
PRODUCT-SERVICE n/a (1) (1) UP (1) - xuqians-imac:product-service:8081

歡迎訪問我的博客:張旭乾的博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM