Eureka的集群搭建方法-保證高可用
在微服務(wù)架構(gòu)中,注冊(cè)中心是一個(gè)必不可少的組件
前面我們搭建的注冊(cè)中心只適合本地開發(fā)使用,在生產(chǎn)環(huán)境必須搭建一個(gè)集群來保證高可用
Eureka的集群搭建很簡(jiǎn)單,每一臺(tái)Eureka都需要在配置中指定另外N個(gè)Eureka的地址就可以
下面我們以2個(gè)節(jié)點(diǎn)來說明
我們有master和slaveone 2臺(tái)機(jī)器,需要做的就是:
- master注冊(cè)到slaveone上面
- slaveone注冊(cè)到master上面即可
如果是3臺(tái)機(jī)器,那么以此類推:
master注冊(cè)到slaveone,slavetwo上面
slaveone注冊(cè)到master,slavetwo上面
slavetwo注冊(cè)到master,slaveone上面
首先我們需要增加2個(gè)屬性文件,通過不同的環(huán)境來啟動(dòng)不同的實(shí)例
增加applicaTIon-master.properTIes
server.port=8761
#指向你的從節(jié)點(diǎn)的Eureka
eureka.client.serviceUrl.defaultZone=http://用戶名:密碼@slaveone:8762/eureka/
增加applicaTIon-slaveone.properTIes
server.port=8762
#指向你的主節(jié)點(diǎn)的Eureka
eureka.client.serviceUrl.defaultZone=http://用戶名:密碼@master:8761/eureka/
master 和 slaveone是hostname, 可以在hosts文件中添加,直接寫IP也行
application.properties中添加下面的內(nèi)容
spring.application.name=fangjia-eureka
eureka.instance.hostname=localhost
# 由于該應(yīng)用為注冊(cè)中心,所以設(shè)置為false,代表不向注冊(cè)中心注冊(cè)自己
eureka.client.register-with-eureka=false
# 由于注冊(cè)中心的職責(zé)就是維護(hù)服務(wù)實(shí)例,他并不需要去檢索服務(wù),所以也設(shè)置為false
eureka.client.fetch-registry=false
# 關(guān)閉自我保護(hù)
eureka.server.enableSelfPreservation=false
security.basic.enabled=true
security.user.name=用戶名
security.user.password=密碼
# 指定不同的環(huán)境
spring.profiles.active=master
在A機(jī)器上啟動(dòng)默認(rèn)用master啟動(dòng)即可,然后在B機(jī)器上加上–spring.profiles.active=slaveone啟動(dòng)即可
這樣master注冊(cè)到了slaveone中,slaveone注冊(cè)到了master中,2邊的配置信息是同步的,無論誰掛掉了,應(yīng)用都能繼續(xù)使用存活的這個(gè)注冊(cè)中心。