2017-08-31 10 views
1

3つのノードでサービスを実行しているアプリがあり、zookeeperを使用してリーダーを選ぶサービスがあります。また、リーダーになっているかどうかによっては、サービスへのリクエストを特定のポッドにリダイレクトしたいと思っています。私はそれがリーダーであるかどうかを返す私のアプリにhttpメソッドを持っています。条件に応じてサービスのリクエストをポッドにロードバランスする方法

+0

ようこそスタックオーバーフロー! [ツアー](https://stackoverflow.com/tour)を見て回り、[ヘルプセンター](https://stackoverflow.com/help)を読んでください。[どうすればよいですか良い質問ですか?](https://stackoverflow.com/help/how-to-ask) – user5226582

+0

また、kubernetes [documentation page](https://stackoverflow.com/documentation/kubernetes/)をご覧になることもできます。トピック)を閉じます。それほど多くはありませんが、より具体的な質問をすることができるように出発点を与えるでしょう。 – user5226582

答えて

0

私はこれを行うためのk8s機能に気づいていません。私はどうなるのか

は: 既存のサービスのエンドポイントを検索する小さなアプリケーションを作成し、現在の指導者を検索し、かつ/エンドポイントがリーダーを指してセレクタ(https://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors)せずに第二サービスの更新を作成します。その後、その新しいサービスをダッシュ​​ボードに使用できます。

+0

ありがとうございました。だから、あなたはcronの仕事のようなものを使って、指導者を絶えず検索して更新すると言っているのですよね? – user8543888

+0

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#scheduleこのような – user8543888

+0

私は定期的にリーダーを探している長期実行アプリケーションを作成するかどうかわからない、または一度見えるcronジョブを使用するリーダーのために...おそらく大きな違いはありません。 私は飼い葉桶に慣れていません。長い間実行されているhttpリクエストやWebSocketを使って直接変更を監視することも可能でしょうか?これは、次回の投票後ではなく、リーダーが変更された直後にサービスを更新できるので、ポーリングよりも良いでしょう。 –

0

これを行うには、たとえばに続いてStatefulSetを使用します。

+0

はい、ステートフルセットを使用してアプリケーションをデプロイしています。たぶん私は私の問題をうまく表現していないかもしれません。私のアプリにはダッシュボードがありますが、このダッシュボードにはリーダーだけがアクセスできます。つまり、サービスを使用してダッシュボードにアクセスしようとすると、うまく機能しないことがあります(サービスの負荷バランスによって、時にはリーダーに到達し、時にはレプリカ/スレーブに到達します)。だから、私のアプリケーションのリーダーだけに要求の負荷を分散するようにサービスを設定する方法はありますか?ありがとうございました – user8543888