服務(wù)發(fā)現(xiàn)-Eureka集群搭建

spring-boot版本: 2.1.2.RELEASE
spring-cloud版本 : Greenwich.SR1
參考: https://cloud.spring.io/spring-cloud-static/Greenwich.SR2/multi/multi_spring-cloud.html

1. 搭建Eureka工程

可以參考本人搭建的eureka-server、config-server工程見文末[1],這里采用的是通過注冊(cè)中心獲取配置(注冊(cè)中心可以采用git,我這里采用的是local模式,即項(xiàng)目配置文件在resource/config下)

2. 在線擴(kuò)容

Eureka采用Peer to Peer架構(gòu),在線擴(kuò)容非常容易,也感謝Netflix給開發(fā)者提供了如此簡(jiǎn)單的平臺(tái)。

Spring-boot2.0以上默認(rèn)隱藏關(guān)鍵mapping,需要開啟刷新配置的mapping,提供刷新配置功能,各個(gè)服務(wù)都需要加上:

management:
  endpoints:
    web:
      exposure:
        include: refresh

1.單節(jié)點(diǎn)

Eureka:19955
Client:19960

項(xiàng)目初期可能只需要一臺(tái)Eureka服務(wù)就足矣了,甚至可以直接采用Spring-cloud官網(wǎng)生成的Eureka代碼就可以解決問題了,并且都不用自我注冊(cè).

  • [config-server]下resource/config/eureka-server.yml配置:
management:
  endpoints:
    web:
      exposure:
        include: refresh
server:
  port: 19955
spring:
  application:
    name: eureka-server
  security:
    basic:
      enabled: true
    user:
      name: admin
      password: 123
eureka:
  instance:
    prefer-ip-address: true
    hostname: localhost
    lease-renewal-interval-in-seconds: 10
  client:
    fetch-registry: false #是否從Eureka Server獲取注冊(cè)信息,單節(jié)點(diǎn)不需要
    register-with-eureka: false #是否注冊(cè)eureka server
    service-url:
      defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19955/eureka/
  server:
    eviction-interval-timer-in-ms: 5000
    response-cache-auto-expiration-in-seconds: 60
    #自我保護(hù)
    enable-self-preservation: true
    #在Eureka服務(wù)器獲取不到集群里對(duì)等服務(wù)器上的實(shí)例時(shí),需要等待的時(shí)間,單位為毫秒,
    wait-time-in-ms-when-sync-empty: 0
  • [config-server]下resource/config/t-client.yml配置:
server:
  port: 19960
spring:
  application:
    name: t-client
eureka:
  client:
    fetch-registry: true
    register-with-eureka: true
    service-url:
      defaultZone: http://admin:123@localhost:19955/eureka/
    registry-fetch-interval-seconds: 5

2.兩個(gè)節(jié)點(diǎn)

Eureka:19955,Eureka:19956
Client:19960

項(xiàng)目業(yè)務(wù)擴(kuò)大,服務(wù)太多,單節(jié)點(diǎn)不足以滿足現(xiàn)有的服務(wù)數(shù)量,增加一個(gè)節(jié)點(diǎn),兩個(gè)Eureka相互注冊(cè):

  • [config-server]下resource/config/eureka-server-peer1.yml配置(只列舉了部分改變的配置):
server:
  port: 19956
eureka.client.service-url.defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19955/eureka/
  • 單節(jié)點(diǎn)的[config-server]下resource/config/eureka-server.yml也需要修改注冊(cè)地址(只列舉了部分改變的配置):
eureka.client.service-url.defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@${eureka.instance.hostname}:19956/eureka/
  • 客戶端[config-server]下resource/config/t-client.yml配置,需要修改注冊(cè)Eureka地址為兩個(gè)Eureka(只列舉了擴(kuò)容相關(guān)部分配置):
eureka.client.service-url.defaultZone: http://admin:123@${eureka.instance.hostname}:19955/eureka/,http://admin:123@${eureka.instance.hostname}:19956/eureka/

接下來,
1.啟動(dòng)新增加的Eureka:19956(使用idea->Edit Configureation->右上角Allow parallel run打勾-> 添加Name:spring.profiles.active,Value: peer1),重啟config-server;
2.使用postman請(qǐng)求 POST http://localhost:19955/actuator/refresh刷新配置,添加Basic Auth ,Eureka賬號(hào)密碼admin:123(也可關(guān)閉,去掉Security依賴);

  1. 同樣方法刷新client:19960配置.
    動(dòng)態(tài)擴(kuò)容結(jié)束

3.三個(gè)節(jié)點(diǎn)

Eureka:19955,Eureka:19956,Eureka:19957
Client:19960
同理:啟動(dòng)新加的19957 Eureka服務(wù),重啟config-server,
刷新eureka-server,eureka-peer1,t-client配置.

后續(xù),如果需要更大的集群可以采用region內(nèi)的Zone之間Peer to Peer復(fù)制


  1. 最終配置: Eureka工程 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容