基本を超えた分散アルゴリズム
ラウンドロビンと最小接続数は代表的な出発点にすぎず、実際の本番環境ではさらに工夫が加えられることが多くあります。処理能力の高いサーバーにより多くのリクエストを割り当てる重み付きラウンドロビン、直近の応答速度を加味する最小応答時間方式、そしてキャッシュ層で多用され、サーバーが追加・削除されても同じキーがほぼ常に同じサーバーにマッピングされるコンシステントハッシュなどが代表的です。
クラウドネイティブ環境における負荷分散
単体の専用機器だけでなく、現在の負荷分散は複数のレイヤーで同時に行われることが一般的です。クラウド事業者が提供するマネージド型ロードバランサーがアプリケーション全体の手前に立ち、Kubernetesクラスタ内ではIngressコントローラーがトラフィックを分散し、サービスメッシュが内部サービス間の負荷分散を担います。それぞれのレイヤーは、特定のインスタンスに負荷が集中しないようにするという同じ課題を、異なる範囲で解決しています。
よくある質問
ロードバランサー自体が故障したらどうなりますか?
ロードバランサー自体が単一障害点にならないよう、実際の運用では通常2台以上のロードバランサーをアクティブ・スタンバイ、またはアクティブ・アクティブ構成で稼働させ、一方が停止してももう一方が処理を継続できるようにします。
小規模なサイトにもロードバランシングは必要ですか?
1台のサーバーで十分にトラフィックを処理できるなら、当面は必要ありません。ただしトラフィックが増えて複数台のサーバーが必要になった時点からは、ロードバランサーなしでは分散のしようがないため、必須の要素になります。