問題タブ [netflix-zuul]
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.
reverse-proxy - Netflix Zuul がリダイレクトを停止する/リバース プロキシを有効にする
次のZuul構成があります。また、サービス ディスカバリがあるため、Eureka を無効にしました。
Zuulをヒットlocalhost:7777/api/newpath
すると、透過的に逆プロキシするのではなく、302 リダイレクトを実行するようになりました。このリダイレクトを停止し、Zuul を透過的にリバース プロキシする方法を教えてください。
microservices - Zuul 自動検出の問題
私たちは、フロントエンドに Zuul を、バックエンドに多数の tomcat 対応マイクロサービスを備えた新しいマイクロサービス アーキテクチャを立ち上げようとしています。各サービスは、起動時にそれ自体を Eureka に登録し、それらのサービスを呼び出したいクライアントは Zuul を介してこれを行います。これはすべて配線されており、すべて正常に機能しています。
ただし、このアーキテクチャをより動的にする方法についていくつか質問があります。
- 私たちが想定していたことの 1 つは、Ribbon/Eureka ですぐに使用できると想定していましたが、まだ解決策を見つけていないということです。 ) Zuul のリボン クライアントは、新しいサービスの詳細 (vipaddress、負荷分散アルゴリズムなど) で自身を更新します。これまでのところ、機能する唯一の方法は、プロパティ ファイルを更新して Zuul を再起動することです (うーん)。
たとえば、今日、バックエンドに 2 つのマイクロサービスがあるとします。したがって、Zuul の eureka/ribbon クライアント構成には以下が含まれます。
リボン.client.niws.clientlist=サービス1|サービス2 zuul.ribbon.namespace=zuul.client
service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
さて、明日、service3 を追加する必要があるとしましょう。私たちが観察したことは、これらの詳細を同じ構成 (以下を参照) に追加すると、再起動後にのみ Zuul で利用できるようになるということです。新しいサービスの詳細を動的に導入できるようにするために欠落している他の構成パラメーターはありますか?それとも、これを行うために独自の Eureka/Ribbon クライアントをロールバックする必要がありますか?
リボン.client.niws.clientlist=サービス1|サービス2|サービス3 zuul.ribbon.namespace=zuul.client
service1.zuul.client.DeploymentContextBasedVipAddresses=myService1 service1.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service2.zuul.client.DeploymentContextBasedVipAddresses=myService2 service2.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
service3.zuul.client.DeploymentContextBasedVipAddresses=myService3 service3.zuul.client.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList
- 私のもう 1 つの質問は関連しており、Zuul がルーティングできるすべてのサービスに対して (eureka-client.properties に) クライアント構成を追加する必要があるのでしょうか? ある時点で、何百ものサービスが実行されている可能性があり、関連するすべてのクライアント構成を Zuul で維持しようとするのは少し不器用に思えます。Eureka から (または Eureka の一部のサービス メタデータに基づいて) クライアント リストにすべてのサービスをロードし、新しいサービスが Eureka に登録されるとこのリストを動的に更新するように Zuul をグローバルに構成する方法はありますか?
ありがとう!
spring - Spring cloud - Zuul - カスタム フィルター
Spring クラウド Netflix のドキュメントには、既存の Zuul フィルターに関する情報はありません。既存の zuul フィルターを説明する他のリソース、新しいフィルターの作成に関するガイドはありますか? また、カスタム フィルターに設定する優先順位と、サーブレット フィルターのように ResponseWappers を使用する必要があるかどうかを知る必要がありますか?
aggregate - Spring cloud - Zuul - 集計応答
2 つのエンドポイントの結果を集計するために Zuul をどのように使用できますか? つまり、/api/notes リクエストが行われたとします。
- Zuul は /notes/from/source/1 および /notes/from/source/2 エンドポイントを呼び出すように想定されています
- 両方のエンドポイントから受け取った集計結果
- 結果を開始したクライアントに集計結果を送信する
これは Zuul で簡単に実行できますか? そうでない場合、フィルターチェーンを提供する以外に Zuul が提供する他の機能は見当たりません。
spring-boot - タービンの問題を伴う Hystrix ダッシュボード
zuul を介してマッピングされた複数のサービスがあるため、タービン プロジェクトは zuul プロジェクトから hystrix.stream を探します。
ヒットが適切に更新されているのを見ることができるので、すべてが正しくセットアップされていると思います。しかし、以下のスレッド プールのセクションでは、ここで不足しているものとその使用法を読み込んでいますが、実際の使用法を理解するのに役立つものは見つかりませんでした。これが私のダッシュボードのスクリーンショットです。 Hystrix ダッシュボード イメージ
同じことについてさらに情報が必要な場合はお知らせください。
spring-cloud - 春のクラウド zuul 構成
Spring Cloudアプリケーションに対して負荷テストを行っています。同時ユーザー数が一定数に達すると、転送エラーが発生するようになりました
以下は、zuul からのログです。根本的な原因は「実行用のセマフォを取得できませんでした」
私の質問は、この転送エラーを回避するために zuul を構成する方法です。あなたの助けは非常に高く評価されています。
spring-security - Spring Netflix Zuul: 同じリクエストを認証してルーティングする
Zuul Edge Server の背後にある多数のサービスがあります。Zuul Edge Server は認証も実行します。セッションは、Spring Session を使用してすべてのサービスで共有されます。リクエストを認証して、同じフロー内のサービスにルーティングできるようにしたいと考えています。私は、ゲートウェイ サーバーがリクエストを認証してルーティングできるDave Syer のチュートリアルを見ました。
そのプロジェクトでは、次のコマンドが機能します。
curl -u admin:admin http://localhost:8080/user
curl -c cookie.txt -u admin:admin http://localhost:8080/user && curl -b cookie.txt http://localhost:8080/admin/user
これもうまくいくと思っていましたが、うまくいきません:
curl -u admin:admin http://localhost:8080/admin/user
ゲートウェイ サーバーが認証し、redis セッションを作成し、redis セッションから認証を選択した管理サービスにリクエストをルーティングすることを期待していました。要求は管理サービスにルーティングされていますが、基本認証も試みて失敗します。
これは、管理サービスのログに表示されるものです。
HTTP 401 Unauthorized 応答を受け取ります。
また、管理サービスで HTTP 基本認証を無効にしようとしましたが、HTTP 403 Forbidden 応答が返されます。
これを達成する方法はありますか?
アップデート
セッションを保存するためにSpring Sessionが実装されているため、これは機能しないと思います。github での質問への回答を待っています。
spring-mvc - Spring Cloud Netflix : RequestInterceptor を介して FeignClient にホスト リクエスト パラメータを渡す
マルチテナントサポートを追加しようとしている Eureka、Zuul、および FeignClient を使用して Spring Cloud プロジェクト (Spring Boot 1.3.1 を使用した Brixton.M4) を構築しています (テナントはサブドメイン: tenant1.myservice.com で識別されます)。そうするために、Feignを介してサービスから他のサービスに転送されるリクエストに沿って元のサブドメインをどうにかして渡したいのですが、それを行う正しい方法を見つけることができないようです.
私が持っているのは、@ FeignClient を呼び出してバックエンドと通信する @RestController を公開するクライアントです。バックエンドは、独自の @RestController を介してサーバー操作をクライアントに公開します。
サーバー上の @RestController と同じインターフェースを使用する @FeignClient :
私が現在やろうとしているのは、 RequestInterceptor にヘッダーを設定することです:
私のプロバイダー クラスは、リクエスト/セッション スコープ Bean を注入しようとしている単純なコンポーネントです。
Bean(セッションとリクエストスコープの両方を試しました):
サーバーでは、ヘッダー値をキャッチすることになっている Hibernate マルチテナント プロバイダーを使用し、それを使用して接続する DB を定義します。
サーバーへの Feign 呼び出しが別のスレッドで着信要求の範囲外で行われているように見えるため、その値を渡す方法がわかりません。
RequestInterceptor でテナント値をハードコードすると、すべて正常に機能するので、残りが適切に機能していることがわかります。
Zuulの「X-Forwaded-For」ヘッダーに関する他の多くの投稿も見ましたが、サーバーで受信したリクエストでそれを見つけることができません。ホスト名を次のリクエストに渡すためにZuulFilterを追加しようとしましたが、クライアントへの元のリクエストがZuulFilterによって取得され、追加できますが、偽のリクエストがバックエンドサービスに送信された場合でも追加できませんそれを zuul にマップします (それが意図されていると思いますか?)。
次のステップが何であるかはよくわかりませんが、いくつかの提案をいただければ幸いです。