2017-05-02 21 views
1

私は、マイクロサービスにルーティングするapplication.yml内に単一のルートを持つ単純なZuulアプリケーションを持っています。それは働いている。経路を動的に検出するZuulプロキシ

しかし私が探しているのは、コードを使って、あるいはビルド時にいくつかのZuulエンドポイントにポストすることで、経路を動的に配線することができる、よりダイナミックなソリューションです(おそらく、microservicesのspringfoxとswaggerの定義)。私はZuulのAPIを見つけることができませんでした。

私はユーレカを幾分認識しており、それは発見を行うことによってルーティングを抽象化する解決策のようです。しかし、ユーレカを導入しなければ解決策があるかどうかは不思議です。ビルド中にZuulでこれらのルートを結ぶ方法があれば、毎回application.ymlを編集する必要があります。

ありがとうございます。

答えて

1

ユーレカに行くと、実際にはootbが動作します。 Zuulは春のクラウドにパッケージ化されているので、その名前を使ってすべてのサービスを自動的に公開します。したがって、ユーレカにusersというサービスを登録すると、Zuulはデフォルトで自動的に/usersのインスタンスへの転送を作成します。それは単純なURL構造だけを許可しますが、あなたの問題を解決するはずです。

詳細についてはofficial documentationをご覧ください。

慣例により、ID「ユーザー」とのサービスを、(取り除か接頭辞付き)/ユーザーにあるプロキシからの要求を受信します。プロキシが発見経由に転送するようにインスタンスを配置するためにリボンを使用し、すべての要求がhystrixコマンドで実行され、...

+0

返信いただきありがとうございます。私は、この記事でユーレカの基礎を学び、いくつかのクライアントを登録しています:https://dzone.com/articles/spring-cloud-netflix-how-works-service-registratioゲートウェイアプリケーション(Zuul)を登録するには私はZuulアプリにユーレカを「認識」させる作品がないと思う。 Zuulアプリのapplication.ymlファイルのエントリの問題ですか?私は自分自身を研究し続けます。どうも。 – Mike

+0

@Mikeは春のクラウドのドキュメントへのリンクで私の答えを更新しました。 –

0

私は実際に春を使用して、この正確なトピック(ルーティングとフィルタリングについてのブログ記事を編集していますCloud Zuul Server)、ソースコードは利用可能になり、しばらく働いています。参照としてそれを使用する自由:

リフレッシュ可能なSpringのプロファイル設定を見てください。このZuulセットアップは、ハードルコーディングのURLまたはEurekaを使用して検出された両方で動作します。

また、別のブログ記事:Refreshable Configuration using Spring Cloud Config Server, Spring Cloud Bus, RabbitMQ and Gitにも記載されているルートをGit経由で動的に更新できるように、Spring Cloud Configクライアントとしても機能します。

+0

ありがとうございます。私は間違いなく一見するでしょう。私が現時点で苦労していることの1つは、zuulプロキシでoauthが有効になっているということです。 'oauth2: resource: userInfoUri:https:/ ...../ userinfo'これは、Zuulによってプロキシされたダウンストリームサービスに対して有効なoauthトークンが必要であるという点で機能します。しかし、zuulサーバー自体の/ healthエンドポイントは保護されているので、私はユーレカが登録するためにpingを実行するのに問題があると思います。クライアントはトークンでZuulを呼び出します。では、プロキシがコールのトークンを必要とするときにZuulをEurekaに登録する方法を教えてください。 – Mike

+0

ZuulをEurekaに登録しないで、サービスへのエントリポイント/ロードバランサ/プロキシとして公開することを検討しますか? – ootero

+0

はい。私はZuulをプロキシとして使用しようとしており、Oauthのチェックがそこで有効になっています(それは動作しています)。しかし、私が望むのは、Zuulがユーレカに登録されているすべてのサービスを動的に見つけることです(つまり、Zuulアプリのapplication.ymlに各ルートを指定せずに)。これを行うには、私が理解するように、私はZuulをDiscoveryClientとして、またユーレカに登録する必要があります。私がそれをするとき、Zuulを打つときに/ health checkは失敗する。なぜならそれはトークンを必要とするからである。おそらく最も簡単な解決策は、Zuulアプリがトークンなしでヒットする/健康/ /情報エンドポイントを許可することです - それを設定する方法があれば。ありがとう。 – Mike

関連する問題