Eureka高可用注冊中心
Eureka Server的設(shè)計一開始就考慮到了高可用的問題,在eureka服務(wù)治理設(shè)計中贡避,所有的節(jié)點即是是服務(wù)提供方沼琉,也是服務(wù)消費方。
在部署高可用注冊中心前我們先需要準備一下闪朱,本地環(huán)境。因為我們實例是在單臺電腦上的钻洒,所以需要模擬墮胎服務(wù)器奋姿,我們需要修改一下本機的host文件。
windows的host文件在C:\Windows\System32\drivers\etc\hosts
在host文件后面加上
127.0.0.1 peer1
127.0.0.1 peer2
修改完成素标,我們就來嘗試搭建高可用的服務(wù)注冊中心集群称诗。接著上一章的服務(wù)中心的基礎(chǔ)上面擴展,來構(gòu)建一個雙節(jié)點服務(wù)注冊中心集群头遭。
在resource目錄下面:
創(chuàng)建application-peer1.yml配置文件寓免,作為peer1服務(wù)中心的配置癣诱,并將serviceId指向peer2.
server:
port: 8762
spring:
application:
name: service-register
eureka:
instance:
prefer-ip-address: false
hostname: peer1
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer2:8763/eureka/
server:
wait-time-in-ms-when-sync-empty: 0
創(chuàng)建application-peer2.yml配置文件,作為peer2服務(wù)中心的配置袜香,并將serviceId指向peer1.
server:
port: 8763
spring:
application:
name: service-register
eureka:
instance:
prefer-ip-address: false
hostname: peer2
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://peer1:8762/eureka/
server:
wait-time-in-ms-when-sync-empty: 0
接下來通過spring.profiles.active屬性來分別啟動peer1和peer2.
我啟動的做法是不在idea里啟動撕予,而是把服務(wù)注冊中心打包,通過cmd啟動蜈首。
maven打包
然后通過cmd命令分別啟動服務(wù)
[圖片上傳中...(15324253911.jpg-db47b5-1532490920148-0)]
java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active
java -jar eureka-register-center-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
兩個服務(wù)啟動后实抡,我們訪問一下http://localhost:8762/或者http://localhost:8763/
這里可以看到兩個注冊中心部署相互注冊成功了。
關(guān)閉其中一個服務(wù)我們可以看到對應(yīng)的節(jié)點變成不可用了欢策。
設(shè)置多個服務(wù)注冊中心后澜术,服務(wù)提供者還需要做一些簡單的配置才能將服務(wù)注冊到Eureka server集群中。
在這里我們按照前面的做法猬腰,重新新建一個服務(wù)提供者module,命名為"eureka-bussniss-service-user"當作是我們平時項目中用戶服務(wù)模塊猜敢,專門處理用戶相關(guān)服務(wù)的姑荷。
因為目前服務(wù)注冊中心是多個的,所以我們在服務(wù)提供者的配置文件上還需要做一些配置缩擂。
添加下面的屬性鼠冕,表示把服務(wù)注冊到指定的注冊中心,注冊中心地址用逗號隔開;
eureka.client.serviceUrl.defaultZone=http://peer1:8762/eureka/,http://peer2:8763/eureka/
完整的application.yml配置如下:
spring:
application:
name: service-user
server:
port: 8802
eureka:
client:
serviceUrl:
defaultZone: http://peer1:8762/eureka/,http://peer2:8763/eureka/
記得主類添加@EnableEurekaClient注解胯盯,然后在確保服務(wù)注冊中心正常的情況下懈费,啟動該項目。如果項目沒有報錯那就說明我們的配置應(yīng)該是正常的博脑。打開http://localhost:8763/或者http://localhost:8762/我們可以看到service-user已經(jīng)同時注冊到了服務(wù)注冊中心憎乙。
此時若斷開peer1服務(wù),由于service-user服務(wù)也向peer2注冊叉趣,因此peer2上面的其他服務(wù)依然能夠訪問到service-user泞边。從而實現(xiàn)了注冊中心的高可用。
服務(wù)提供者已經(jīng)完成了疗杉,下一篇我們將會實現(xiàn)服務(wù)消費者阵谚,以及使用ribbon實現(xiàn)負載均衡。