spring cloud eureka 如果出現某個應用實例 down(1),
說明 spring admin 健康檢測沒有通過導致 eureka 注冊中心不會把這個實例從列表中刪除掉。 這樣所有使用這個實例的服務都會現404(前提是在應用中配置過spring admin);
2:spring admin 健康檢測會檢測*.properties里的所有連能性的配置(mysql,redis,短信服務,郵件服務),如果這些URL中有一個不通,則會導致eureka中出現, 這個實例down(1) 並且不會從列表中刪除掉。
例: 應用中不使用reides,但是在pom.xml中引用reides的配置(只限於spring-boot redis配置) 這樣spring admin 健康檢測發現*.properties沒配置redis,但是spring-boot-starter-data-redis 有默認配置(是localhost), 會導致檢測不通過,eureka 顯示狀態為 down(1).
處理這樣問題可以使用:http://eureakIP:port/health 如果沒有問題會返回:
{"description":"Spring Cloud Eureka Discovery Client","status":"UP"} 如果有問題會返回那個實例的檢測什么配置項沒有通過,只要修改后重啟應用實例,這樣eureka應用會顯示UP(1);
如:
{"description":"Remote status from Eureka server","status":"DOWN","discoveryComposite":
{"description":"Remote status from Eureka server","status":"DOWN","discoveryClient":{"description":"Spring Cloud Eureka Discovery Client","status":"UP","services":
["sail-coupon","member-inf","sail_message","sail-route","sail-member","sail-point","gift-card"]},
"eureka":{"description":"Remote status from Eureka server","status":"DOWN","applications":
{"SAIL-MEMBER":1,"SAIL-POINT":1,"SAIL-COUPON":1,"MEMBER-INF":1,"GIFT-CARD":1,"SAIL_MESSAGE":1,"SAIL-MERCHANT":0,"SAIL-ROUTE":1}}},
"diskSpace":{"status":"UP","total":42842714112,"free":25094348800,"threshold":10485760},
"rabbit":{"status":"DOWN","error":"org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect"},
"redis":{"status":"UP","version":"3.2.100"},"db":{"status":"UP","database":"MySQL","hello":1},"refreshScope":{"status":"UP"},"hystrix":{"status":"UP"}}