ラウンドロビンで完全にhaproxyを使用していますが、現在問題に直面しています:バックエンドサーバーの1つがロードされています。
- バックエンド サーバーの負荷に応じてトラフィックのバランスを取ることができるかどうかを知りたいです。conn トラフィックは他のバックエンド サーバーに送信されます
- 最小接続、ラウンド ロビンおよびグローバル最大接続、デフォルト最大接続、およびサーバー最大接続の違い
ラウンドロビンで完全にhaproxyを使用していますが、現在問題に直面しています:バックエンドサーバーの1つがロードされています。
サーバーの負荷が他のサーバーよりも高い場合、機械的には、同じリクエスト レートに対してより多くの同時接続が表示されます。そこで、leastconn アルゴリズムに切り替えると便利です。これにより、すべてのサーバーが常に同じ数の同時接続で実行されることが保証されます。これは、たとえば、一部のリクエストが他のリクエストよりもはるかに長い場合に役立ちます (例: データベース内の複雑なリクエスト)。
2 番目のポイントについては、すべてがドキュメントに記載されているため省略しますが、leastconn は同時接続数に注目し、ラウンド ロビンは累積接続数に注目しています。ラウンド ロビンでは、各サーバーが順番に要求を取得するため、同じサーバー上の要求は最適な間隔で配置されます。これは通常、静的サーバーや、一度サーバーにアタッチされたユーザーが大量のリクエストを行うスティッキーなアプリケーションに適しています。これにより、同じサーバー上に同じ数のユーザーがいることが保証されるためです。グローバル maxconn は、単一の haproxy プロセスがサポートする同時接続の合計量です。制限に達すると、着信接続の受け入れを停止します。デフォルトの maxconn はフロントエンドのみに適用され、フロントエンドの maxconn に達すると、このフロントエンドのみが新しい接続の受け入れを停止します。サーバー maxconn は、haproxy がサーバーに送信する接続が多すぎることがないようにします。制限に達すると、可能な場合は他のサーバーが選択されます (Cookie がない場合など)。または、サーバーが接続を解放してそれを選択するまで、要求はキューに入れられます。サーバーが過負荷になっている場合は、接続数を確認し、この値をわずかに下回るサーバー maxconn を適用してそれらを保護する必要があります。