Eureka做爲SpringCloud的服務發現與註冊中心,在整個的微服務體系中,處於核心位置。單一的eureka服務,顯然不能知足高可用的實際生產環境,這就要求咱們配置一個可以應對各類突發狀況,具備較強容災能力的eureka集羣服務。app
首先,參考eureka服務端7001的模塊,分別建立eureka7002和eureka7003模塊,另外還要作以下修改。還記得咱們在7001中配置的eureka.instance.hostname爲localhost,那麼如今在集羣的環境中,若是仍是這樣的話,就無法區分三個服務端,因此咱們須要在hosts文件中添加映射,以及在對應模塊中修改服務名。微服務
127.0.0.1 eureka7001.com 127.0.0.1 eureka7002.com 127.0.0.1 eureka7003.com
eureka7001模塊的application.yml測試
server: port: 7001 eureka: instance: hostname: eureka7001.com #eureka服務端的名稱 client: register-with-eureka: false #不在註冊中心註冊本身 fetch-registry: false #表示本身就是註冊中心,不須要檢索服務,只須要維護服務實例 service-url: defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
eureka7002模塊的application.ymlfetch
server: port: 7002 eureka: instance: hostname: eureka7002.com #eureka服務端的名稱 client: register-with-eureka: false #不在註冊中心註冊本身 fetch-registry: false #表示本身就是註冊中心,不須要檢索服務,只須要維護服務實例 service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
eureka7003模塊的application.ymlurl
server: port: 7003 eureka: instance: hostname: eureka7003.com #eureka服務端的名稱 client: register-with-eureka: false #不在註冊中心註冊本身 fetch-registry: false #表示本身就是註冊中心,不須要檢索服務,只須要維護服務實例 service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
另外須要注意,咱們以前在服務提供者8001中的配置是,將服務註冊到服務端7001上,那麼如今是集羣環境,有三個服務端,因此須要將提供的服務註冊到三個EurekaServer上,因此須要修改服務提供者8001的註冊地址。spa
eureka: client: service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
以上eureka的集羣配置基本完成,而後咱們測試一下,啓動三個EurekaServer,並將服務提供者8001啓動,訪問eureka7001.com:7001。
咱們看到,服務提供者已經將服務註冊到註冊中心了,並且咱們訪問的是7001,上面掛載着另外兩個7002和7003。這裏我相信你們都明白了,若是咱們訪問eureka7002.com:7002,一樣的服務已經註冊進來,並且掛載着7001和7003,那麼訪問eureka7003.com:7003亦是如此。code
做者:蔡先森_caiyq
連接:https://www.jianshu.com/p/c9330b450050
來源:簡書orm
本人補充:server
在服務消費者註冊到註冊中心的時候,有兩種作法,一種是:所有註冊到註冊中心集羣的每一臺機器上,示例作法以下:defaultZone: http://admin:123456@localhost:8888/eureka/,http://admin:123456@localhost:8889/eureka/,另一種作法爲,只將服務消費者註冊到註冊中心集羣的其中一臺機器上,兩種作法都可。從可靠性角度說,第一種作法好些,提升了系統調用的可靠性。blog