問題タブ [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 - REST API を使用して Eureka をレジストリとして使用する
ここ数か月、Spring Boot アプリケーションで Eureka を使用しています。@DiscoveryClient
アノテーションを使用して、アプリケーション間のサービス ルックアップを有効にしました。登録、リースの更新、および登録解除は期待どおりに機能します。
最近、非 Java アプリケーション コンポーネント (C++ で記述) があるシナリオに遭遇しました。これは、Spring Boot Java アプリケーションの多くが使用する 3 つの REST サービス エンドポイントを公開します。Spring Boot Java アプリケーションが Eureka を介して通常の検索を実行し、C++ コンポーネントに接続できるように、C++ コンポーネントが Eureka サーバーの REST API を使用して自身を登録できるかどうかを確認しようとしています。
C++ コンポーネントで Eureka Client を使用できないため (明らかに)、Postman を使用して直接 REST API (ここで説明) のテストを開始しました。POST メソッドを使用して JSON ペイロードをhttp://eurekaserver:8761/eureka/apps/FOO-APP (instanceId = 1111 および hostName = foo-app)に送信することにより、登録は問題なく機能しました。http://eurekaserver:8761/eureka/appsにクエリを実行すると、期待どおりに FOO-APP がリストされていることがわかります。
ただし、 http://eurekaserver:8761/eureka/apps/FOO-APP/1111またはhttp://eurekaserver:8761/eureka/apps/FOO-APP/foo-appに対して DELETE メソッドを使用してキャンセル操作を試みると、 404 エラーが発生します。
インスタンス ID を使用:
または (hostName についても同じ結果):
さまざまな組み合わせを試しましたが、これを機能させることができません。明らかな何かが欠けているような気がします-何か小さなものかもしれません。これに関する助けをいただければ幸いです。
PS: Eureka REST エンドポイントのドキュメントでは、URL に「v2」と記載されています。ただし、私の場合はうまくいきません。登録(私にとってはうまくいきます)は、上記のように「v2」を使用しません。誰かがこれを検証できれば、それも役に立ちます。これについては、十分な資料がないようです。
spring - docker と gradle を使用した spring-client で接続が拒否されました
docker で eureka を使用して spring-server と spring-client を構築し、クライアントをサーバーに接続しようとしています。私の中でこれを試すとbuild.gradle
:
すべてが機能します。
Dockerfile
しかし、私が書いたを使いたいので、buildDocker
代わりに使用し、次のように使用distDocker
します。
これでDockerfile
:
そしてそれは常に
接続拒否エラーまたはより正確には ClientHandleException: http://localhost:8761への接続が拒否されました
どこに問題があるのか よくわかりませんか?サーバーに接続しようとしない場合は両方の方法で機能しますが、接続しようとすると機能しdistDocker
ます。
spring-cloud - Spring Cloud Zuul がバックエンド サービスの応答で URL を書き換えない
いくつかの Spring Cloud サービス (構成、サービス レジストリ、および Zuul) を使用してローカル環境をセットアップしました。プロキシは、デフォルトのマッピングを使用してサービスを正しく公開します。
私が見ている問題は、http://localhost/service-discovery/に移動すると、Eureka ダッシュボードが表示されますが、関連する静的リソースが読み込まれないことです。ブラウザには次のようなエラーが表示されます。
この問題を回避する方法はありますか? 私が知る限り、Eureka ダッシュボードはリソースをロードするときに相対パスを使用しておらず、代わりにアプリがルート サーブレット コンテキストにデプロイされていると想定しています。
更新 私は、私が見逃していることに気付きました。このスレッドにコメントしましたが、メインの投稿に上げようと思いました。問題は、Zuul がクライアントに代わってバックエンド リクエストを行うことです。Zuul がその要求を行うと、HTML 応答には、Eureka 用に構成されたコンテキスト パスに関連する URL が含まれます。通常、プロキシ サービスは、応答で見つかった URL を書き換えて、プロキシが公開する方法に関して正しい基本コンテキストを持つようにすることで、これを管理します。Zuulにこのようなものはありますか?
問題をより適切に説明するために件名を変更しました。
spring - Spring Cloud Eureka Server の自己保存と更新のしきい値について
私はマイクロサービスを開発するのは初めてですが、Spring のドキュメントと Netflix の両方を読んで、しばらく研究してきました。
Github で利用できる簡単なプロジェクトを開始しました。これは基本的に、1 つの Eureka サーバー (Archimedes) と 3 つの Eureka クライアント マイクロサービス (1 つのパブリック API と 2 つのプライベート) です。詳細な説明については、github の readme を確認してください。
重要なのは、すべてが実行されているときに、プライベート マイクロサービスの 1 つが強制終了された場合、Eureka サーバーがそれを認識してレジストリから削除することです。
Stackoverflow でこの質問を見つけました。解決策enableSelfPreservation:false
は、Eureka Server 構成で使用することで合格します。しばらくしてこれを行うと、強制終了されたサービスは期待どおりに消えます。
ただし、次のメッセージが表示されます。
自己保存モードがオフになっています。これは、ネットワーク/その他の問題が発生した場合にインスタンスの有効期限を保護できない場合があります。
1. 自己保存の目的は何ですか? ドキュメントには、 「クライアントはもう存在しないインスタンスを取得できる」という自己保存が記載されています。では、いつオン/オフにすることをお勧めしますか?
さらに、セルフ プリザベーションがオンの場合、Eureka Server コンソールの警告に未解決のメッセージが表示される場合があります。
緊急!EUREKA は、インスタンスが起動していないのに起動していると誤って主張している可能性があります。更新はしきい値を下回っているため、安全のためだけにインスタンスが期限切れになることはありません。
さて、Spring Eureka Console を続けます。
しきい値カウントの奇妙な動作に遭遇しました。Eureka Server を単独で起動すると、しきい値が 1 になります。
2. Eureka サーバーが 1 つありregisterWithEureka: false
、別のサーバーに登録できないように構成されています。では、なぜそれがしきい値カウントに表示されるのでしょうか?
3. クライアントごとに、しきい値カウントを +2 ずつ増やします。1 分あたり 2 回の更新メッセージを送信しているからだと思いますが、そうですか?
4. Eureka サーバーは更新を送信しないため、最後の更新は常にしきい値を下回っています。これは正常ですか?
サーバー構成:
クライアント 1 の cfg:
spring-boot - Spring Boot アプリケーションのクラスタリング
2 つの異なるソース (REST と独自のライブラリを介して) から通貨レートを取得するアダプター (Spring Boot と Spring Integration で作成) があります。不要なものをフィルタリングし、システムで既知のクラスのインスタンスを作成し、レートを JMS クラスターに送信します。このアダプターをレプリケートしたい。同時に実行できるインスタンスは 1 つだけです。1 つがクラッシュすると (ヘルス エンドポイントからわかっています)、別のクラッシュがレートの公開を開始するはずです。どうすればそのような効果を達成できますか?Eureka を使用して利用可能なサービスを登録できることは知っていますが、そのうちの 1 つを自動的にオンにする方法は?
java - Docker コンテナー内の Eureka クライアント
docker コンテナーで実行されている 1 つの eureka サーバーと 2 つの残りのサービス (eureka クライアント) があります。最初のサービスが 2 番目のサービスにアクセスしようとすると、UnknownHostException が発生します。その理由は、dns サーバーが解決できないコンテナー ホスト名を使用してサービスが eureka サーバーに登録されるためです。
Dockerコンテナのホスト名を設定することで解決できると思いました。そこで、ホスト名を設定するために -h フラグを指定して docker を使用しました。
docker run -h project-dev.net9.mycompany.com
しかし今、サービスは eureka サーバーに登録することさえできません。私はこの例外を受け取ります:
ドメイン project-dev.net9.mycompany.com はネットワークでアクセス可能であり、ping を実行できます。
http://project-dev.net9.mycompany.com:8761/の下にある eureka ダッシュボードにもアクセスできます。したがって、eureka サーバーは正常に動作しています。
ヒントに感謝します。
spring-cloud - Eureka / Ribbon なしで Zuul Edge Server を使用できますか
サービス検出と負荷分散を備えたインフラストラクチャがあります (つまり、STM と weblogic クラスターを備えたサーバー側)。現在、マイクロサービスへのリファクタリングを進めています。他のマイクロサービスへの基本的なルーティングを行う API ゲートウェイが必要です。Netflix Zuul は有力な候補ですが、Eureka なしでは Zuul を動作させることはできませんでした。しかし、サービスの検出と負荷分散が既に行われているため、Eureka は必要ありません。
- エウレカとリボンなしでズールは使えますか?
- はいの場合は、ウィキに言及がないため、いくつかのギルドラインを提供してください。
ありがとう。