Java Spring Cloud Eureka

Spring Cloud -- Eureka集群配置

黃翰暉 Jacob Huang 2021/06/11 16:13:18
867

前言

      上一篇文章我們討論了Eureka的服務註冊與發現,這篇我們來針對Eureka的集群配置做討論~建議您可以先去參考前兩篇 (Spring Cloud -- 微服務初探及實作) 及 (Spring Cloud -- Eureka服務治理) 再來看會比較清楚喔,本篇會接續前兩篇的內容來做分享。

      到目前為止,我們就只有一個Eureka 7001的,所有的服務都註冊在此,若是7001掛點,那所有的服務也就通通一起掛點了,這無論對Service端還是Client端都是非常不利的,因此,接下來為各位分享關於Eureka的集群配置 (接下來會建越來越多微服務,如果memory不夠大的電腦可能會跑不動喔~建議可以將memory換大一點)。

 

Eureka的集群配置

      1. 首先,請按照建立Eureka註冊中心(Spring Cloud -- Eureka服務治理)第1~14步,再建立兩個Eureka註冊中心微服務 (7002、7003),完成圖如下

 

      2. 接著到自己local的電腦中搜尋 C:\Windows\System32\drivers\etc,找到一個hosts的檔案打開

 

      3. 將如下三行配置加至hosts中

127.0.0.1	eureka7001.com
127.0.0.1	eureka7002.com
127.0.0.1	eureka7003.com

 

      4. 接下來需修正7001、7002、7003的application.yml配置,因為現在有三台eureka,故不能再以localhost來稱呼,需改成其他名字,以7001為例,剩下兩個比照辦理,將eureka.instance.hostname 改為eureka7001.com、eureka.client.defaultZone改為另外2台eureka service,使三支eureka能夠互相切換使用

server:
  port: 7001
  
eureka:
#  server:
#    enable-self-preservation: false #禁用Eureka自我保護機制
  instance:
    hostname: eureka7001.com # eureka服務端的實例名稱
  client:
    register-with-eureka: false #false表示不向註冊中心註冊自己
    fetch-registry: false #false表示自己端就是註冊中心,我的職責就是維護服務實例,並不需要去檢索服務
    service-url:
      #單機 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #設置與 Eureka Server交互的地址查詢服務和註冊服務都需要依賴這個地址
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

 

      5. 再來,因為原本的Service端只註冊7001一台eureka,現在有三台了,所以也都要註冊進去,8001的appr的application.yml修正如下

server:
  port: 8001
  
mybatis:
  config-location: classpath:mybatis/mybatis.cfg.xml     #mybatis配置文件所在路徑
  type-aliases-package: com.jacob.springcloud.entities   #所有Entity別名類所在package
  mapper-locations:
  - classpath:mybatis/mapper/**/*.xml                    #mapper映射文件
  
spring:
  application:
    name: microservicecloud-dept
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource         #當前資料源操作類型
    driver-class-name: org.gjt.mm.mysql.Driver           #mysql驅動包
    url: jdbc:mysql://localhost:3306/cloudDB01?useSSL=false #資料庫名稱
    username: Jacob
    password: 1234
    dbcp2:
      min-idle: 5                                        #資料庫連接池的最小維持連接數
      initial-size: 5                                    #初始化連接數
      max-idle: 5                                        #最大連接數
      max-wait-millis: 200                               #等待連接獲取最大超時時間
      
eureka:
  client:
    register-with-eureka: true  #註冊到Eureka註冊中心
    fetch-registry: true  #開啟檢索服務
    service-url:
#      defaultZone: http://localhost:7001/eureka/    #單機版Eureka註冊中心
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/   #將3台eureka都註冊進去
  instance:
    instance-id: microservicecloud-dept8001 #status的默認名稱修改
    prefer-ip-address: true #訪問路徑可以顯示IP地址
    
info: #Eureka中針對本服務端的信息描述
  app:
    name: jacob-microservicecloud
  company:
    name: www.jacob.com
  build:
    artifactId: $project.artifactId$
    version: $project.version$

 

      6. 依序啟動7001、7002、7003、8001微服務來做測試,因為我們已針對eureka的域名做了不同設定,我們訪問不再是使用localhost:7001,而是改用http://eureka7001.com:7001/,進入後可以看到我們也同時掛了7002及7003的eureka service,也可以換成7002、7003做測試,這樣,我們就完成了Eureka的集群配置。

 

以上,為針對Eureka集群配置的相關分享,下一篇將會和大家分享如何實做Spring Cloud的負載均衡,文章若有不正確之處,還請大家多多指教,謝謝大家~

 

參考文獻

Spring Cloud Eureka原理知多少

服務註冊伺服器

尚硅谷Spring Cloud教程

黃翰暉 Jacob Huang