ロードバランサーは、入ってきたアクセスを複数のサーバーへ振り分ける案内係です。市役所で来庁者を1つの窓口だけに並ばせると、すぐに長い列ができます。案内係が空いている窓口へ誘導すれば、全体がスムーズに回ります。Webサービスでも、ロードバランサーがリクエストを受け取り、後ろに並んだ複数のサーバーへ分けて渡します。
導入を検討するのは、アクセスが増えて1台では処理しきれなくなったとき、サービスを止めないように冗長化したいとき、といった場面です。
台数を増やせばページは速くなる?
一度にさばける人数は増えます。ただ、1件あたりの処理が速くなるわけではありません。窓口を10個に増やしても、1つの手続きに30分かかるなら、一人ひとりの待ち時間は30分のままです。
アプリの処理そのものが重い、データベースへの問い合わせ(SQL)が遅い、といった原因は、振り分けでは解決しません。そちらは別に手を入れる必要があります。
1台が壊れたらどうなる?
案内係は、窓口の様子を定期的に確かめています。この確認をヘルスチェックと呼び、応答しないサーバーを見つけたら、そこへ案内するのをやめて残りの窓口へ振り替えます。これで、どれか1台が落ちてもサービス全体は止まりにくくなります。
同じ仕組みを使えば、メンテナンス中の1台だけを外して公開を続けたり、段階的なリリースで一部のサーバーだけを新しい版に切り替えたりすることも可能です。
不調のサーバーを早く外せるよう、ヘルスチェックの条件はきちんと設定しておきましょう。振り分けに偏りが出ていないか、再試行が増えていないかも、監視で早めに気づけるようにしておきます。
ログイン中の人が別の窓口に回されたら?
ここは設計次第です。1回目の手続きを受け付けた窓口にしか記録が残っていないと、2回目に別の窓口へ回された人は「どちら様ですか」と言われてしまいます。同じ利用者を同じサーバーへ案内し続ける「セッション維持」が必要かどうかは、導入前に決めておきます。
振り分け方にも、順番に回していく方式(ラウンドロビン)などいくつか種類があり、サービスの性質に合わせて選びます。