1、application.yml中eureka配置更改
## Eurake 公用配置
## 向其他注冊中心注冊
eureka.client.register-with-eureka=true
## 獲取其他注冊中心注冊信息
eureka.client.fetch-registry=true
也可以刪除此配置,默認是true
2、eureka.client.service-url.defaultZone的host不要使用嵌套配置
server:
port: 8761
eureka:
instance:
hostname: peer2
eureka:
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
如上,嵌套了eureka.instance.hostname配置。這會導致注冊中心集群構建出問題:其他注冊中心的DS Replicas
無法顯示此注冊中心的節點信息
3、eureka.client.service-url.defaultZone的host不要使用127.0.0.1或者localhost,使用自定義的host
eureka:
client:
serviceUrl:
defaultZone: http://peer2:8761/eureka/
同時更改系統hosts配置:
linux系統通過vim /etc/hosts
windows電腦,在c:/windows/systems/drivers/etc/hosts 修改
添加配置:
127.0.0.1 peer1
127.0.0.1 peer2
如果配置的時候使用localhost,注冊中心上注冊的其他服務實例會被莫名地剔除,即使開啟eureka的自我保護機制,依然不能阻止服務被剔除,且無任何異常,且新注冊的服務提供者實例也無法進行數據同步。
可能的原因:配置的時候使用localhost,這個是不會發給網卡的(回環地址),服務之間是無法通過這個互相通訊