Spring Cloud Eureka: Cannot execute request on any known server

碰到這種問題的原因有很多,我今天就碰到了其中一個原因,我這個或許能幫助到你。

一句話如下:
千萬別更改註冊中心地址格式:IP:port/eureka/
不要試圖更改成IP:port/context-path/eureka
或者是IP:port/context-path/myEureka...

不然讓你摸不着頭腦的bug


 

Eureka註冊中心地址

不是:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

而是:defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/

而且後綴的/eureka/不能更改,更改會有奇怪的錯誤出現

就是說,你可能啓動的註冊中心是:http://localhost:8761/server/eureka/

而你client寫的是:http://localhost:8761/eureka/,這就導致問題出現.

記住格式:

defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/

假如你的服務器註冊中心是這麼寫的:



spring:
  application:
    name: eureka-server # 該名字是服務器之間選擇的標誌


server:
  port: 8761
  servlet:
    context-path: /server

eureka:
  instance:
    hostname: localhost
  client:
    # 通過eureka.client.registerWithEureka:false和fetchRegistry:false來表明自己是一個eureka server.
    # 在未設置defaultZone的情況下,註冊中心在本例中的默認地址就是http://localhost:8761/eureka/
    register-with-eureka: false
    fetch-registry: false
    serviceUrl:
      # 服務註冊中心地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/


注意,上面服務啓動加上了/server

因此你的註冊中心地址 defaultZone也要加上

${server.servlet.context-path}

你檢查你的是不是寫成了

defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

務必寫成

defaultZone: http://${eureka.instance.hostname}:${server.port}${server.servlet.context-path}/eureka/

接下來,註冊中心地址更改了,client的配置也需要更改成:

http://localhost:8761/server/eureka/

而不是:

http://localhost:8761/eureka/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章