登録春の雲のユーレカがクライアントではなく、IPアドレスを解決するためのデフォルトのホスト名


クライアントのデフォルトのユーレカは、サーバにホスト名の代わりにIP登録を使用することです。
この場合、装うクライアントはユーレカ間サービスを通じて互いを呼び出すときに呼び出され、そのコールに失敗しましたホスト名を使用します使用します。
次のように考える:
java.net.UnknownHostExceptionを発行:XXXX-ホスト名によって引き起こさ
        java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)AT
        java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)AT
        java.net AT。 socket.connect(Socket.java:589)
        sun.net.NetworkClient.doConnect(NetworkClient.java:175)AT
        sun.net.www.http.HttpClient.openServer(HttpClient.java:463)AT
        sun.net.www AT .http.HttpClient.openServer(HttpClient.java:558)
        sun.net.www.http.HttpClient AT <初期化>(HttpClient.java:242)
        sun.net.www.http.HttpClient.New AT(HttpClient.java :339)
        sun.net.www.http.HttpClient.New(HttpClient.java:357)で
        sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)で
        sun.net.www.protocol.httpで.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
        sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)で
        sun.net.www.protocol.http.HttpURLConnection.connectで(HttpURLConnection.java :984)
        sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1334)で
        sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1309)で
        feign.Client $でDefault.convertAndSend(Client.java:133)
        feign.Client $ Default.execute(Client.java:73)で
        org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient.execute(TraceFeignClient.java:80)で
        org.springframework.cloud.netflixで.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:77)
        org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:45)で
        com.netflix.client.AbstractLoadBalancerAwareClient $ 1.callで( AbstractLoadBalancerAwareClient.java:109)
        com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 3 $ 1.call(LoadBalancerCommand.java:303)で
        com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 3 $ 1.callで(LoadBalancerCommand.java:287)
        rx.internal.util.ScalarSynchronousObservable $ 3.call(ScalarSynchronousObservable.java:231)で
        rx.internal.util.ScalarSynchronousObservable $ 3.call(ScalarSynchronousObservable.java:228)で
        rx.Observable.unsafeSubscribe(Observable.java:10211)で
        のrx.internal.operators.OnSubscribeConcatMap $ ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
        rx.internal.operators.OnSubscribeConcatMap $ ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)で
        com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.callで(LoadBalancerCommand.java:185)
        com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.callで(LoadBalancerCommand.java:180)
        rx.Observable.unsafeSubscribe(Observable.java:10211)で


ソリューション:


1、サービスユーレカ・サーバーを使用するには、ipは、割り当てはユーレカクライアントを次の増加する必要があります。

eureka.instance.prefer-IPアドレス= trueまたは  eureka.instance.prefer-IPアドレス=真
eureka.instance.instance-spring.cloud.client.ipAddress ID = $ {}:$ {##}はserver.port例のみを表示するために、このラインは、増加する時間から追加することができます

    インタフェースの例を装います:

@FeignClient( "XXX-ビジネスサービス名")
パブリックインターフェースMyFeignClient {
...
}

2、マルチ環境に合うように、コンフィギュレーション・インジェクションを使用して、ドメイン名注入の注釈のドメインネームサービスによって、ドメイン名の呼び出しを使用して

     装う例をインタフェース:

@FeignClient(名前= "XXX-ビジネスサービス名"、URL = "のhttp:// $ {xxx.business.service.domain}" 
のパブリックインターフェイスMyFeignClient {
...
}
 
 

おすすめ

転載: www.cnblogs.com/xuzhujack/p/11234407.html