今天在搭建一個springcloud項目在搭建以zuul爲網關的時候,項目拋了一個異常,java
com.netflix.zuul.exception.ZuulException: Forwarding errorspring
xxxxx負載均衡
這裏就略過,這裏的forwarding error 表示網關轉發失敗,後面緊接着報了一個這個錯google
Caused by: com.netflix.client.ClientException: nullspa
xxx .net
UnknownHostException: xxx服務名code
而後在網上搜了一下,因而解決了這個問題server
看異常名其實能夠看出來,未知的主機,故而分析得出來Zuul轉發不到所要轉發的服務,因而看了一下springcloud的eureka配置,發現有一個配置blog
以下: 這個配置的做用是 在eureka上暴露這個註冊的服務內網IP,因而在eureka註冊中心加上這一句(注:若是是高可用集羣,所要集羣的服務都要加上這個)ip
eureka: client: instance: #register ip to eureka prefer-ip-address: true
至此,完美解決這個問題;
可是 緊接着又有了新的問題:
com.netflix.client.ClientException: Load balancer does not have available server for client ...
這裏就把重要的異常貼進來哈
報錯的大體意思是
沒有可用的負載均衡的客戶端服務
因而 又開始google,
發現加上
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
這個依賴 能夠完美解決這個問題
至於爲何,大概是這個包裏面有默認配置LoadBanlance的
能夠看看 org.springframework.cloud.client.loadbalancer包下面的源碼