ロードバランサー
混雑する大型レストランの入り口で、お客さんを空いている複数のテーブルへバランスよく案内してくれるフロアマネージャーのような存在です。
定義 ロードバランサー(Load Balancer/負荷分散装置)とは、Webサービスにアクセスが一気に集中したとき、処理(仕事)を複数のサーバー(コンピューター)にバランスよく振り分ける交通整理システムです。特定のサーバーだけに負荷が集中してサイトがダウンするのを防ぎます。
高速道路の料金所でレーンを開く仕組み
高速道路の料金所で、もし窓口が1つしか開いていなかったらどうなるでしょうか? 大型連休の帰省ラッシュのように車が果てしなく渋滞し、道路全体が完全にストップしてしまいますよね。しかし、料金所の窓口を10か所に増やし、入り口で誘導員が車を空いている窓口へスムーズに振り分けてくれれば、車は詰まることなくスイスイ進むことができます。
インターネットの世界もこれとまったく同じです。人気アーティストのチケット予約や大学の履修登録日には、何十万人もの人が同時にWebサイトの扉を叩きます。このとき、リクエストを処理するサーバー(コンピューター)がたった1台しかないと、押し寄せる仕事量に耐えきれずパンクしてしまい、画面が真っ白のままフリーズしてしまいます。
そこで大きなサービスでは、同じ仕事を処理できるサーバーを複数並べて用意しておきます。そして、そのサーバーたちの最前線にロードバランサーを配置します。ロードバランサーは日本語で「負荷分散装置」とも呼ばれます。アクセスしてきた利用者を空いているサーバーへバランスよく均等に振り分けることで、特定のサーバーが過熱しないよう助けてくれる重要な装置です。
どのようなルールで仕事を分けるのか?
ロードバランサーがお客さんを振り分ける際には、いくつかの賢い分散ルール(アルゴリズム)が使われます。最もシンプルな方法は、時計回りのように1番サーバー、2番サーバー、3番サーバーへと順番に1人ずつ案内していく方式です。車輪がぐるぐる回る様子になぞらえて「ラウンドロビン」と呼ばれます。
しかし、お客さんが要求する処理の重さはそれぞれ異なります。短い記事を1つ読むだけですぐに去る人もいれば、大容量の動画をダウンロードするために長時間サーバーを使い続ける人もいます。そのため、「今まさに接続しているお客さんが最も少ないサーバー」をリアルタイムで見つけ出し、新しいお客さんを優先して案内する方式も広く使われています。
さらに、用意されているサーバーの処理性能に差がある場合もあります。最新型の高性能サーバーには仕事を多めに3つ送り、型落ちのサーバーには仕事を1つだけ送る、といった配分も可能です。このように状況に応じてサーバーの余裕に合わせて最も効率的なルートへお客さんを案内します。
もう少し正確に言うと:故障したサーバーを検知する安全装置
もう少し詳しく見ると、ロードバランサーは単に仕事を割り振るだけではありません。稼働しているサーバーが正常に動いているかどうかを、1秒間に何度も信号を送って確認する「ヘルスチェック(死活監視)」という機能も備えています。
もし複数あるサーバーのうち1台が突然故障して停止したらどうなるでしょうか? ロードバランサーは応答しなくなったサーバーを瞬時に察知し、そのサーバーにはお客さんを一切送らないようにします。正常に動いているサーバーだけにアクセスを迂回させるのです。このように故障したサーバーを自動で除外する頼もしい防壁の役割も果たしてくれます。
この仕組みのおかげで、万が一サーバーが何台か壊れても、利用者は故障の事実すら気づかないまま快適にサービスを使い続けられます。また、アクセスが急増して後ろに新しいサーバーを増設した場合でも、ロードバランサーが自動で新しいサーバーにも仕事を割り振ってくれるため、サービスの拡張(スケールアウト)も非常にスムーズに行えます。
🤔 よくある誤解
ロードバランサーを設置すれば、サーバーコンピューター自体の計算速度が速くなる。
コンピューター本来の頭脳(CPU性能など)を高める装置ではありません。1人の処理速度を超能力のように爆発的に上げるのではなく、働く仲間を複数用意して仕事を公平に分担することで、全体の待ち時間を減らす仕組みです。
🧺 日常で出会う場面
ロードバランサーは、集中するアクセス要求を複数のサーバーへ適切に振り分け、サービスが止まることなく安定して動き続けるよう支える交通整理システムです。