SpringCloud學習之—Eureka集群搭建


Eureka集群的搭建

上次說過了在SpringCloud應用中使用Eureka注冊中心,用來對服務提供者進行服務注冊與發現,但同時,它也是一個“微服務”,單個應用使用空間有限,因此和zookeeper一樣,它也需要搭建集群(Cluster)。

搭建Eureka集群的原理就是創建多個eureka應用(端口不同),然后將所有的注冊中心的地址聯合到一起。下邊就以創建三個集群為例

一、將之前的創建的eureka項目復制三份

復制三份是為了不破壞原來的項目,讓小伙伴們更好地學習

  • 先創建三個子Module,然后復制pom.xml中信依賴,復制application.yml,然后各自創建啟動類
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
server:
  port: 7001

eureka:
  instance:
    hostname: localhost #eureka服務端的實例名稱
  client:
    register-with-eureka: false     #false表示不向注冊中心注冊自己。
    fetch-registry: false     #false表示自己端就是注冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url:
#    這兩個變量就是上邊定義過的
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #設置與Eureka Server交互的地址查詢服務和注冊服務都需要依賴這個地址。

二、修改application.yml

這是最主要的也是最關鍵的一步,就是修改其中的eureka.client.service-url.defaultZone這一項目。之前是這樣的

http://${eureka.instance.hostname}:${server.port}/eureka/

之前使用的是變量,就是當前文件中定義過的eureka.instance.hostname和server.port 這一個地址,現在有了集群后,就要直接寫死了。修改原則如下:

  • 在任意一個eureka項目中,將上邊這個地址修改為其他兩個eureka項目的地址,中間用逗號隔開
  • 但是呢,這三個eureka項目的hostname還不能一樣,不能全都是localhost,所以開發的時候,要在本地設置虛擬域名
  • 在windows下的C:\Windows\System32\drivers\etc\HOSTS文件最后添加如下
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3

這樣,就可以將eureka項目中的hostname改為上邊三個中的一個了

比如,eureka-cluster-7001這個項目修改后的application.yml如下:

server:
  port: 7001

eureka:
  instance:
    hostname: eureka1 #eureka服務端的實例名稱
  client:
    register-with-eureka: false     #false表示不向注冊中心注冊自己。
    fetch-registry: false     #false表示自己端就是注冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url:
#    單個eureka
#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/       #設置與Eureka Server交互的地址查詢服務和注冊服務都需要依賴這個地址。
# euraka集群
      defaultZone: http://eureka2:7002/eureka/,http://eureka3:7003/eureka
  • 然后依次修改其他的兩個eureka項目,最后再用瀏覽器打開任意一個eureka項目的地址,可以看到如下界面

  • 在隨意訪問三個地址,可以在任意一個項目中看到其他兩個集集群

三、修改服務提供者來注冊到集群

  • 之前是單個eureka項目,所以服務提供者就只有一個注冊地址。現在是集群,所以要修改服務提供者的中的eureka注冊地址了

我改的是demo2-providereureka8001中的配置文件,修改如下:

eureka:
  client: #客戶端注冊進eureka服務列表內
    service-url:
#    這個地址是在eureka的application.yml中定義過的
#     單個eureka項目的的注冊地址
#      defaultZone: http://localhost:7001/eureka
#       eureka集群的注冊地址
      defaultZone: http://eureka1:7001/eureka,http://eureka2:7002/eureka,http://eureka3:7003/eureka

改完之后,然后啟動這個提供者項目 ,就可以在eureka集群的任意一個項目中看到這個服務了

關注微信公眾號“小魚與Java”獲取本項目代碼和更多SpringCloud知識


免責聲明!

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



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