Spring Cloud 實戰(二)- Eureka 高可用註冊中心
阿新 • • 發佈:2018-12-18
Eureka 高可用註冊中心
點餐系統中的產品服務、訂單服務已寫了大半,但是註冊中心高可用一直還沒解決,今兒就把我遇到的坑塵現出來,避免以後再遇到此問題無章可循了。
Eureka Server1 配置
server: port: 9009 # spring spring: application: name: eureka profiles: active: peers0 #Eureka Server eureka: client: service-url: defaultZone: http://peers1:9010/eureka/ fetch-registry: true register-with-eureka: true instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} hostname: peers0 prefer-ip-address: false
Eureka Server2 配置
server: port: 9010 # spring spring: application: name: eureka profiles: active: peers1 #Eureka Server eureka: client: service-url: defaultZone: http://peers0:9009/eureka/ fetch-registry: true register-with-eureka: true instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}} hostname: peers1 prefer-ip-address: false
hosts 配置
127.0.0.1 peers0
127.0.0.1 peers1
結果展示
坑點兒
網上看到的情況大都是這樣子的:
unavailable-replicas 問題一大推,總結了幾個原因會導致這類問題:
1. eureka.client.serviceUrl.defaultZone配置項的地址,不能使用localhost,要使用peers0、peers1之類的域名,通過host對映到127.0.0.1; 2. spring.application.name或eureka.instance.hostname必須一致; 3. 相互註冊要開啟: eureka.client.register-with-eureka=true eureka.client.fetch-registry=true
我之前遇到的問題是,兩個 eureka 服務的spring.application.name不一致導致。具體配置情況可參考 翟永超的《Spring Cloud微服務實戰》 Page:46的詳細說明。