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依賴);
- 同樣方法刷新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ù)制