問題 #
あるユーザーから、Cookie 挿入ベースのセッション永続性を備えた負荷分散に Relianoid を使用しているという報告がありました。当初、セットアップは 5 台のサーバーで完全にバランスが取れていました。しかし、プールに新しいサーバーを追加した後、セッションが期待どおりに分散されなくなりました。新しいサーバーにはいくつかのセッションしかなく、既存のサーバーが引き続きほとんどのトラフィックを処理しています。
説明 #
この問題は、現在使用されているセッション永続メカニズムと負荷分散アルゴリズムが原因で発生します。
問題を理解する #
1. クッキー挿入ベースのセッション持続: セッションの永続性のために Cookie 挿入を使用する場合、ロード バランサは各クライアントに一意の Cookie を割り当てます。この Cookie は、同じクライアントからの後続のリクエストを同じバックエンド サーバーに送信し、セッションの永続性を保証します。これは安定したセットアップではうまく機能しますが、新しいサーバーがプールに追加されると問題が発生します。
2. 既存のセッションは「スティッキー」: セッションは既に最初のサーバー セットで確立されているため、これらの既存のセッションは永続 Cookie により元のバックエンドに「固定」されたままになります。その結果、新しく追加されたサーバーは、永続 Cookie がまだ割り当てられていない新しいクライアントからの新しいセッションまたはトラフィックのみを受信します。
3. 現在のスケジューリングアルゴリズムの制限多くのロード バランサは、ラウンド ロビンや最小応答時間などのデフォルトのスケジューリング アルゴリズムを使用します。これらのアルゴリズムは、特にセッションの永続性が関係する場合、新しいサーバーが追加されたときに必ずしも負荷を再分散するわけではありません。これは、アルゴリズムがアクティブなセッションの既存のバックエンドへの接続を維持する傾向があるためです。
セッションのバランスが再調整されない理由 #
新しいサーバーが追加されても、次の理由により、すぐに負荷が均等に分散されるわけではありません。
- 既存のセッションは元のバックエンドにバインドされます。
- デフォルトのスケジューリング アルゴリズムでは、セッション数や接続数が少ないバックエンドは優先されません。
セッションを公平に分散するには、異なる負荷分散アルゴリズムが必要です。
解決策 #
「最小接続」スケジューリングアルゴリズムを使用する #
最小接続アルゴリズムは、ロード バランサがアクティブな接続が最も少ないバックエンド サーバーを選択するスケジュール方法です。このアプローチは、特に新しいサーバーがプールに追加されたときに、セッションをより均等に分散するのに役立ちます。
このシナリオで「最小接続」が効果的に機能する理由は次のとおりです。
- 動的再バランス調整: ラウンドロビンなどのアルゴリズムとは異なり、最小接続は、アクティブなセッションが最も少ないサーバーを常に評価します。これにより、最初はセッション数が少ない新しいサーバーは、負荷が均等になるまで、より多くの新しい接続を受け取ることができます。
- リソースの使用率の向上: 新しいセッションが作成されると、負荷が最も少ないサーバーに送信され、全体的なリソースの使用率が向上します。
Relianoid で「最小接続」アルゴリズムを実装する手順 #
1. Relianoid ロードバランサー構成にアクセスする: Relianoid 管理コンソールにログインするか、該当する場合は CLI ツールを使用します。
2. ロードバランサー設定に移動する: セッション永続性を備えたサーバー プールを管理しているロード バランサ インスタンスの設定を見つけます。
3. スケジューリングアルゴリズムを変更する:
- 負荷分散アルゴリズムまたはスケジューリング方法の設定を見つけます。
- 現在の設定(例:ラウンドロビン)からアルゴリズムを変更する 最低限の接続.
4. 変更を保存して適用する: 変更を保存し、ロード バランサー構成に適用してください。環境によっては、ロード バランサーの再起動やソフト リロードの実行が必要になる場合があります。
5. 監視と検証: 変更を適用した後、すべてのサーバー間でのセッションの分散を監視します。時間が経つにつれて、新しいサーバーがより多くのセッションを受信するようになり、負荷がより均等になります。
まとめ #
負荷分散アルゴリズムを「最小接続」に変更することで、新しく追加されたサーバーが追いつき、より多くのセッションを処理できるようになります。この動的なスケジューリング方法は、アクティブな接続の数を考慮して負荷を効率的に分散し、Cookie 挿入によるセッションの永続化によって発生する不均衡の問題を解決します。
この変更を実施した後も問題が続く場合は、以下を確認することを検討してください。
- 新しく追加されたサーバーの健全性とパフォーマンス。
- 負荷分散に影響する可能性のあるその他のパラメータの構成 (セッション タイムアウト設定、スティッキー期間など)。
- 潜在的なエラーやボトルネックに関するネットワークまたはアプリケーション レベルのログ。
これらの手順に従うことで、ロード バランサーの構成を最適化し、プール内のすべてのサーバー間で公平かつバランスの取れたセッション分散を実現できます。