2016-11-10 4 views
1

マイクロ・サービス用にSpringブートを使用しています。スプリングブート・ヘルス・ベースのロード・バランシング

スプリングアクチュエータは、特別なhealthmetricsエンドポイントをアプリに追加します。これにより、実行中のインスタンスから基本的な情報を得ることができます。

私は、集中型のロードバランサを作成し、健康状態によってインスタンスを選択する(リバース)プロキシ(Zuulやリボンなど)を作成することをお勧めします。

  • server 1
  • server 2
  • クライアント -

    例えば、私は次のmicroservices

    • client
    • proxyを(私はこれを実装したいと思います<)持っていますprにhttp要求を送信するオキシの場合、プロキシはサーバインスタンスのどれが負荷が最も少なく、そのインスタンスに要求を転送するかを決定できるはずです。

      これを行う簡単な方法はありますか?

      おかげで、あなたは様々な負荷データの選択をしたい場合、あなたは、データ「時間をかけて負荷」のいくつかの種類を蓄積カスタムHealthIndicatorのを実装するために、あなたのロードバランサでこれを使用することができ

    +0

    これは、分割する負荷の種類によって異なります。純粋にリクエストベースの負荷の場合、サーバがすべて稼働している場合、トラフィックを50/50に分割しないでください。それ以外の場合、load-over-timeを蓄積するために 'health'エンドポイントを拡張し、ロードバランサ内のそのデータを使用してトラフィックを送信する場所を決定することができます。 –

    +0

    現在の負荷係数(CPUなど)に基づいてサーバは、要求の数ではないので(基本的に純粋にリクエストベースではありません) – krisy

    答えて

    0

    krisyトラフィックを送信する場所を決定します。

    すべてのカスタムヘルスインジケータは、スプリングブートによってピックアップされ、アクチュエータ/ヘルスエンドポイントで呼び出されます。

    すでにスプリングブーツメトリックの一部を既に使用している可能性がありますが、アクチュエータに複数のエンドポイントがあります。/beans、/ trace、/ metrics。あなたのアプリケーションでもそのデータを見つけることができるはずです。

    +0

    はい、私は何か類似していると思います - 私が知らないもの、ロードバランスのこの種のロードデータにアクセスする方法いくつかのRESTリクエストはバランスの取れたサーバに「手動で」渡されますが、おそらくSpringは何らかの助けを提供します(クライアントごとに注入されるヘルスオブジェクトなど)? – krisy

    +0

    私が働いたloadbalancersは自分自身を実装していません。ホストが正常かどうかを判断するためにステータスコード(2xx、4xx、5xx)をチェックするために、通常はhttpリクエストを行います。自分自身を実装する場合は、実際のレスポンスデータを見て、ホストi健康で、どのような負荷がかかります –

    +0

    はい、それは私の計画です:-)私はちょうど、Springがホストの健全性にアクセスするための機能を内蔵しているのか、それとも何か、私は "手動で"行う必要があります。 – krisy

    関連する問題