最小接続

最小接続

最小接続は、割り当て時にアクティブな接続が最も少ないサーバーに着信要求を送信する動的な負荷分散アルゴリズムです。固定された順序で要求を均等に分散するラウンドロビンとは異なり、最小接続はリアルタイムのサーバー負荷に基づいて分散を最適化するため、接続が長時間持続するアプリケーションや要求サイズが変化するアプリケーションに特に役立ちます。

最小接続の仕組み

リクエストが到着すると、ロード バランサは次の処理を実行します。

  1. 利用可能な各サーバー上のアクティブな接続の数を確認します。

  2. アクティブな接続が最も少ないサーバーにリクエストを割り当て、よりバランスの取れたワークロードを確保します。

  3. プロセスを動的に繰り返します。接続が開いたり閉じたりすると調整します。

たとえば、トラフィックを処理するサーバーが 3 つある場合:

  • サーバーA: アクティブな接続数 10

  • サーバーB: アクティブな接続 5 つ

  • サーバー C: アクティブな接続 3 つ

新しいリクエストは、現在負荷が最も低いサーバー C にルーティングされます。

主な利点

  • リアルタイム負荷認識: 静的なローテーションではなく、実際のサーバー使用率に基づいてトラフィックのバランスが保たれるようにします。

  • 長時間接続向けに最適化: 一部のリクエストが他のリクエストよりも多くのリソースを消費するデータベース、API、ストリーミング サービスなどの環境に最適です。

  • 過負荷のリスクを軽減: 1 つのサーバーが過負荷になり、他のサーバーが十分に活用されない状態になることを防ぎます。

課題と考慮事項

  • 継続的な監視が必要: ロード バランサーは接続状態を継続的に追跡する必要があるため、若干のオーバーヘッドが発生する可能性があります。

  • 短いリクエストには必ずしも最適ではない: トラフィックが多数の小さくて存続期間の短いリクエストで構成されている場合、接続数はサーバーのワークロードを正確に反映しない可能性があります。

  • サーバー容量の違いを考慮しません: すべての接続に高い処理能力が必要な場合は、より強力なサーバーでも過負荷になる可能性があります。このような場合は、多くの場合、重み付け最小接続 (容量に基づいてサーバーに異なる重みを割り当てる) が推奨されます。

一般的な使用例

  • API ゲートウェイ: 処理時間が異なるバックエンド マイクロサービス間でトラフィックを分散します。

  • データベース負荷分散: ボトルネックを防ぐためにデータベースレプリカ間でクエリを分散します。

  • リバース プロキシ サーバー: 動的コンテンツを処理する Web サーバーが過負荷にならないようにします。

結論

最小接続は、特にトラフィック パターンが予測できないアプリケーションに効果的な適応型負荷分散戦略です。負荷が最も少ないサーバーにリクエストが送信されるようにすることで、需要の高い環境でシステムの安定性と応答性を維持するのに役立ちます。