2016-07-25 13 views
0

このブログhttps://spring.io/blog/2015/07/14/microservices-with-springによると、ユーレカサービスの発見に基づいており、サービスの発見が適切に機能しています。スプリングブートアプリケーションを使用した領事サービス発見の問題

しかし、その代わりユーレカはサービス検出が動作して、このエラーを取得されていない領事を使用するように切り替えているとき:

java.lang.IllegalStateException: No instances available for ACCOUNTS-SERVICE 
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:79) 
at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:46) ... 

更新:正しいヘルスチェックのエンドポイントを提供することにより、以前のエラーを修正した後(参照)bootstrap.ymlに領事サーバの適切提供するホストとポートをクラウドファウンドリーにサービスを展開する際に、)以下の答え(「ブートストラップ」段階の間にロード領事もとPropertySource:

--- 
spring: 
    profiles: cloud 
    cloud: 
    consul: 
     host: <consul host or ip> 
     port: 8500 

領事は、サービスを登録しています、buクリティカルな状態(失敗)のt!

助けや指導に感謝します。

おかげ

+1

サービスが正常に登録された場合、領事UIを確認しましたか?登録や発見が問題なのかどうかを排除するだけです。 –

+0

はいサービスに障害が発生しています(重大とマークされています)。 – kmarabet

+1

あなたの健康診断を微調整しましたか? –

答えて

2

問題は/健康エンドポイントに設定されている領事ヘルスチェックのデフォルトのパスに関連していました。 したがって、すべてのクライアントアプリケーション(Webサーバとマイクロサービス)でスプリングアクチュエータを有効にした後、この問題は解決されました。

それとも、bootstrap.ymlファイルのデフォルト領事健康チェックのエンドポイントを変更することがあります。

cloud: 
    consul: 
     discovery: 
     healthCheckPath: /test 

NB。参照

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 

詳細について:達人ばねアクチュエータを有効にするには、次の依存性は、pom.xmlファイルに追加されたhttp://cloud.spring.io/spring-cloud-consul/spring-cloud-consul.html

CF(CloudFoundry)のURIに(プッシュ)を展開

--- 
spring: 
    profiles: cloud 
    cloud: 
    consul: 
     host: <consul host or ip> 
     port: 8500 
     discovery: 
     instanceId: ${spring.application.name}:${vcap.application.application_name}:${vcap.application.instance_id} 
     hostname: ${vcap.application.uris[0]} 
     port: 80 
:デプロイされたアプリケーションは、サービス発見プロセスのための領事に提供されなければならないので、以下の構成がbootsrap.ymlファイルに追加する必要があり、(CFはvcap.application.uris環境変数にアプリケーションのURIを提供します) 10
関連する問題