eurekaクライアント起動エラー(eurekaから登録サービスを取得する接続エラー):java.net.ConnectException: Connection refused: connect
3291 ワード
2019-06-04 18:37:36.525 INFO 7128 --- [ main] com.netflix.discovery.DiscoveryClient : Application version is -1: true
2019-06-04 18:37:36.525 INFO 7128 --- [ main] com.netflix.discovery.DiscoveryClient : Getting all instance registry info from the eureka server
2019-06-04 18:37:38.729 ERROR 7128 --- [ main] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl='http://localhost:8761/eureka/}
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123) ~[jersey-client-1.19.1.jar:1.19.1]
at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27) ~[eureka-client-1.9.8.jar:1.9.8]
at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.1.jar:1.19.1]
簡単に紹介しますが、私はローカルでeurekaサービス、config-serverサービス、クライアントclientサービスをかけました.
クライアントサービスをconfig-serverサービスで構成します.bootstrap.yml:
spring:
cloud:
config:
uri: http://localhost:8551/ #
name: spring-config # {application}
profile: master # {profile}
label: master # git , ,
これにより、サービスが正常に起動し、プロファイルにアクセスできます.
クライアントサービスにeurekaでconfig-serverを発見させたいのですが、コンフィギュレーションファイルでconfig-serverのurlをハードコーディングするのではなく、コンフィギュレーションファイルを変更しました.
spring:
cloud:
config:
discovery:
enabled: true
serviceId: config-server-my
# uri: http://localhost:8551/ #
name: spring-config # {application}
profile: master # {profile}
label: master # git , ,
discoveryでeurekaに行ってサービスを発見し、起動するとエラーを報告します.エラー情報は上のものです.エラーは、Getting all instance registry info from the eureka serverではeurekaサービスに接続されず、eurekaのデフォルトアドレス({serviceUrl='http://localhost:8761/eureka/})探しに行く.しかし、私はeurekaのアドレスをアプリケーションに配置しました.ymlでは、次のようになります.
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:7001/eureka/
instance:
instanceId: client-01
preferIpAddress: true
私はネットで原因を調べて、多くは配置に問題があると言って、アルパカの命名とかを含めて、しかしすべて役に立たない.
解決策:
なぜならymlとアプリケーションymlのロード順によるでしょう、プロジェクトが起動するときはbootstrapに追加します.yml、アプリケーションに追加します.yml.最初はuriを使用します.http://localhost:8551/#config-serverを構成します.この時点でeurekaは使用されませんので、正常に起動できます.しかしeurekaでサービスを発見するように変更すると、前のbootstrap.ymlにはeurekaの構成がないので、eurekaのアクセス経路が全然分からないので、エラーを報告し、eurekaにアクセスできません.
eurekaの構成をbootstrapに言及するだけですymlでは、すべて正常です.
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:7001/eureka/
instance:
instanceId: client-01
preferIpAddress: true
spring:
cloud:
config:
discovery:
enabled: true
serviceId: config-server-my
# uri: http://localhost:8551/ #
name: spring-config # {application}
profile: master # {profile}
label: master # git , ,