配置 Eureka Server 集羣

簡介

爲了使 Eureka Server 實現高可用,咱們須要爲它配置集羣。這樣當有一臺 Eureka Server 有故障時,集羣中的其餘 Server 能夠進行代替。Eureka 集羣之中的 Node 經過 P2P 通訊的方式共享註冊表,以使得每一個 Eureka Server 的註冊表保持一致。本教程將在本地開啓兩臺 Eureka Server 以測試集羣的搭建。git

項目源碼

Gitee碼雲spring

配置 Eureka Server

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

---
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,並不須要本身註冊本身,而如今有了集羣,可在集羣的其餘節點中註冊本服務。spring-boot

修改 hosts

修改 hosts 文件,以使 peer1 和 peer2 映射到 localhost,由於 eureka server 的主機名必須不一樣纔可互相註冊,因此在本地須要模擬兩個不一樣的主機名:測試

127.0.0.1 peer1
127.0.0.1 peer2

配置 productService

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

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 能夠同步註冊表。url

測試

首先啓動 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 均在註冊表裏。code

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

歡迎訪問個人博客:張旭乾的博客

相關文章
相關標籤/搜索