問題タブ [netflix-eureka]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - リボン/eureka で使用すると、クライアント エラーを偽装する
以下は、上記のクラスのテストです。
TestNG を使用してテストを実行すると、次のエラーがスローされます。
com.netflix.client.ClientException: ロード バランサーにクライアント用の使用可能なサーバーがありません: abc-service
Eureka サーバーは構成サーバーを見つけるように構成されています。 application.yml
eureka サーバーの構成は次のとおりです。
構成サーバー、eureka サーバー、および abc-service は、上記のテストを実行する前に、Spring Boot アプリとして実行されます。abc-service は、起動時に自分自身を Eureka に登録します。
spring-cloud - Spring Cloud Feign クライアントは、異なるインスタンスの異なるコンテキスト ルートに接続しません
私は、Eureka を使用した Spring クラウドと、リボンを使用した Feign クライアントを評価している最中です。私が作成してきたサンプル アプリケーションには、クライアントを問題なく受信する Eureka Server があります。
ただし、FeignClient を使用する場合、RequestMapping にはコンテキスト パスを含める必要があります。
私の最初のケースでは、同じ VIP で ID が異なる 2 つのサービスがありました。- localhost:8080/ の 1 つのサービス - localhost:7400/HelloWorld の 1 つのサービス
異なるコンテキスト ルートの理由は、簡単に変更できない展開構造の可能性があるためです。
これは、クライアント内で構成する必要があるものですか? またはアプリケーションまたはこれは不可能ですか?
これが私の@FeignClientです
理想的には、RequestMapping は値「/」のみです。
spring-cloud - server.contextPath が設定された Spring Boot と Eureka Server 経由の hystrix.stream への URL
Turbine インスタンスが実行されている Eureka Server とそれに接続されているいくつかの検出クライアントがあります。すべて正常に動作しますが、server.contextPath
設定されている検出クライアントを登録すると、認識されずInstanceMonitor
、Turbine ストリームはそのhystrix.stream
.
これは、Eureka/Turbine サーバーのログでどのように見えるかです:
http://user-service:8887/hystrix.stream
server.contextPath を含む正しい URL があるべき場所から hystrix ストリームを取得しようとします。http://user-service:8887/uaa/hystrix.stream
そのapplication.yml
クライアントの には次が含まれます。
私の質問は、適切な hystrix.stream URL の場所を登録するために、このユーザー サービス検出クライアントに追加の構成オプションを追加する必要があるかどうかです。
私はまだそれを掘り下げていません。その質問への回答を得る前に何かを見つけたらお知らせします。
現在のソリューション
と の使用に関しては、1 つの問題がありserver.contextPath
ますmanagement.context-path
。両方が設定されている場合、タービン ストリームは で提供され${HOST_URL}/${server.contextPath}/${management.context-path}/hystrix.stream
ます。その場合、使用を中止する必要がserver.contextPath
ありました ( controllers のプレフィックスに置き換えました@RequestMapping
)。
ここで、 を使用するmanagement.context-path
と、hystrix.stream は、それをプレフィックスとして使用する URL から提供されます。その場合、スペンサーの提案に従って設定する必要があります
もちろん、これはすべてのディスカバリー クライアントで同じ値に設定する必要があります。Spring Cloud Config http://cloud.spring.io/spring-cloud-config/spring-cloud-config.htmlmanagement.context-path
で簡単に設定できます。
docker - Spring Cloud Samples Eureka - Docker - リンクでのアンダースコアの使用
Spring Cloud、Eureka、および Docker を使用して、興味深い異常に遭遇した可能性があります。問題を発見したかどうか、または動作が予想されるかどうかはわかりませんが、要点は次のとおりです。
最初に、名前付きの Docker コンテナーで eureka を実行するところから始めます。次に、ClientDiscoveryEnabled で Docker クライアントを起動します。docker クライアント コンテナーは、docker "link" パラメーターを使用して、eureka コンテナーへのホスト名アクセスを取得しています。yaml ファイルには、プロパティ駆動型の Eureka に接続するためのエントリがあります。
コンテナー名にアンダースコアを使用しようとしない限り、すべてがうまく機能します。アンダースコアを使用してコンテナーに名前を付けると、クライアント コンテナーは Eureka 登録を使用してこの名前を完全に解決できません。アンダースコアを削除すると、すべて正常に動作します。おそらく私は何かを見逃しており、これは予期されていることですが、この「機能」についての言及は見たことがありません。
私のクライアントは、Spring-Cloud-Samples feign-eureka プロジェクトに基づいています。以下はシナリオです...
これは機能し、クライアントは登録されます:
以下は動作しません!Eureka が起動し、クライアントが起動しますが、登録できません:
以下は、ログ エントリとその後の例外です。
/bin/bash を実行しているコンテナ内から "foo_bar" に問題なく ping を実行できます。
切断がどこから来ているのかわかりません。あるいは、私が気付いていない機能かもしれません。
何か案は?
java - spring-cloud を netflix Eureka と一緒に使用する場合、Discovery Client を機能させるにはどうすればよいですか?
これがどのように機能するかを学ぶために、Hystrix、Eureka、Ribbon などの netflix アドオンを使用して、Spring Cloud を使用して基本的なプロジェクトを作成しようとしています。私が作成しようとしているプロジェクトは、メッセージを保持する単純なメッセージ サーバーです。そして、サーバーにメッセージを要求するだけのメッセージクライアントです。これには自動検出クライアント、または RestTemplate 検出を使用したいと考えています。しかし、私はどちらも機能させることができません。
私は次の構造を持っています:
- メッセージクライアント (eureka クライアント)
- メッセージサーバー (eureka クライアント)
- 構成サービス (構成サーバー)
- 発見サービス (eureka サーバー)
私が現在行っていることは、構成サービスを起動し、次の構造で接続しているときに、これらすべての「アプリ/クライアント」に application.yml の詳細を公開することです。
- config-service\src\main\resources\config\appname.yml
- app\src\main\resources\bootstrap.yml (アプリ名とクラウド構成への URL が含まれています)
これは問題なく動作しており、私のアプリは構成サーバーから受け取ったポートで起動し、すべてが私の eureka サーバーに接続され、そこにすべてが表示されます。Hystrix フェールオーバーも機能しているだけでなく、これに関連しているわけではありませんが、完全に間違っているとは言えません。
しかし、ここで混乱が生じます... クライアントモジュール内のサービスクラス (@Service アノテーション付き) で @Autowired アノテーションを使用すると、discoveryClient オブジェクトを取得できますが、それを使用する他のサービスを見つけることができません。
メッセージ クライアント - ブート クラス:
メッセージ クライアント - REST リソース:
メッセージ クライアント - MessageClient:
メッセージを保持しているメッセージ サーバーのブート クラスには、クライアントのものと同じ注釈があります。
そして、私が言ったように、私のサービスクラスは何も見つけることができません..それは私のすべての質問に私を導きます:
- リボン ロード バランサーを実際に使用するには何が必要ですか?
- 「自動検出」を使用できるようにするには、リボンを使用する必要がありますか? そうではないと思っていましたが、今は混乱しています。
- 私が理解したことから、EnableEurekaClient を使用する場合、EnableDiscoveryClient も使用する必要はありませんか?
- 実行時にクライアントの config-server の yml ファイルを変更して、クライアントを再起動するだけでよいですか?
- 現在、すべてのクライアントには非常に基本的なbootstrap.ymlファイルが含まれているだけなので、構成サーバーによって実際に共有される構成の量。
- 私のymlファイルに設定されているすべてのプロパティについてもっと読むことができる場所への良いリンクを誰かが持っていますか? 存在するプロパティが実際に何をするかのドキュメントと、それらをスプリングクラウドと組み合わせて使用する方法に関するドキュメントの両方?
- アプリ/クライアントが他のアプリ/クライアントを見つけられるようにするには、特定のプロパティが必要ですか?
編集情報
迅速で優れた返信をありがとう、今日何度も何度もこれを経験し、ついにアプリケーションが機能するようになりました..検出サービスには、ポートや eureka 情報などを指定する他の各クライアントの yml ファイルが含まれています。ここで指定したものも次のとおりです。
そのため、この値を設定すると、サービス ディスカバリが機能しない原因となるものを上書きしているように見えます。eureka サーバーですべてのアプリケーションを確認できても、この値を設定すると、お互いを見つけることができませんでした。
この値を設定するには、構成サービスに message-server.yml ファイルを作成し、ブートストラップ後にメッセージ サーバー アプリケーションに送信します。
それでは、2 つの新しい質問があります。
- この eureka サーバー プロパティをオーバーライドするにはどうすればよいですか?
- この値を設定するとディスカバリ クライアントが動作しなくなるのはなぜですか? 実際には何をしているのですか?
spring-boot - spring cloud eureka サーバーの例 ログイン チャレンジ
spring cloud の Eureka サーバーを確認しようとしていますが、ログイン ダイアログが表示されません。デフォルトのユーザーとパスワードを知っている人はいますか?
ありがとう。
spring - Spring Cloud: Eureka クライアントの登録/登録解除サイクル
Spring Cloud の Eureka クライアント/サーバー メカニズムに慣れるために、クライアントを Eureka サーバーに接続し、5 分ごとに接続のオン/オフを切り替えて、Eureka サーバーがこれをどのように処理するかを確認します。
Eureka のクライアントが 2 つあります。
最初に、次のコードを使用して、登録されたアプリケーションに関する情報を提供します。
2 番目の Eureka Client は、5 分ごとに自分自身を登録/登録解除します。
2 番目の Eureka クライアントのログ出力は次のようになります。
両方の Eureka クライアントを初めて起動する場合、これはうまく機能します。2 番目のクライアントは最初のクライアントによって表示され、かつ 2 番目のクライアントは Eureka サーバー コンソールに表示されます。2 番目のクライアントが Eureka サーバーから切断されると、そこには表示されなくなり、最初のクライアントにも表示されなくなります。
残念ながら、2 番目のクライアントが Eureka サーバーに再接続すると、Eureka サーバー コンソールには大きな赤色で強調表示された "DOWN (1)" が表示され、最初のクライアントには 2 番目のクライアントが表示されなくなります。ここで何が欠けていますか?
解決:
Dave Sayer の回答に基づいて、私の解決策は、EurekaDiscoveryClientConfiguration が自動配線され、登録を切り替えるためのスレッドを開始するカスタム @Configuration を追加することでした。これはテストのみを目的としているため、非常に醜い解決策になる可能性があることに注意してください;-)