定義
ロードバランサー(Load Balancer)は、インターネットサービスにアクセスが一度に集中したとき、処理する仕事を複数台のサーバー(コンピューター)へまんべんなく振り分ける交通整理の仕組みです。特定の1台だけに仕事が集中してウェブサイトが落ちてしまう事故を防いでくれます。
高速道路の料金所でレーンを開ける仕組み
高速道路の料金所で、精算窓口が1つしか開いていなかったらどうなるでしょうか。お盆や年末年始の帰省ラッシュのように車が延々と詰まって、道路全体が大渋滞になってしまいますよね。でも窓口を10か所に増やして、入口の誘導員が空いている窓口へ車をどんどん振り分ければ、車はスイスイ流れていきます。
インターネットの世界もまったく同じです。人気アーティストのライブチケットの先行販売や、大学の履修登録の日には、何十万人もの人が同時にウェブサイトへアクセスします。このとき、リクエストを処理するコンピューター(サーバー)が1台だけだと、押し寄せる仕事をさばききれず過負荷になって、画面が真っ白のまま固まってしまいます。
そこで大きなサービスは、同じ仕事をこなすコンピューターを何台も並べて用意しておきます。そしてそのコンピューターたちのすぐ手前に、ロードバランサーを置きます。ロードバランサーは日本語では「負荷分散装置」と呼ばれます。アクセスしてきた人たちを、手の空いているコンピューターへアクセス量をまんべんなく分けて送り、どの1台にも負荷が偏らないようにしてくれる、大切な装置です。
どんなルールで仕事を振り分けるの?
ロードバランサーがお客さんを振り分けるときは、いくつかの賢い分配ルール(アルゴリズム)を使います。いちばんシンプルな方法は、1番サーバー、2番サーバー、3番サーバーというように、順番にお客さんを1人ずつ送っていく方式です。ぐるぐる回るという意味で「ラウンドロビン」と呼ばれます。
ただ、お客さんが頼む仕事の重さは人それぞれです。短い文章を1つ読んですぐ帰る人もいれば、容量の大きい動画をダウンロードして、コンピューターを長いあいだ占領する人もいます。そこで、今つながっているお客さんがいちばん少ないコンピューターをリアルタイムで探して、新しいお客さんを送る方式もよく使われています。
さらに、用意したコンピューターの性能がそれぞれ違うこともあります。最新型のコンピューターには仕事を3つずつたっぷり送り、旧型には1つずつだけ送る、といったこともできます。このように状況に応じて、サーバーの余裕の度合いに合わせて、いちばん効率のよい道へお客さんを案内します。
もう少し正確に言うと:故障したサーバーを外す安全装置
もう少し正確に言うと、ロードバランサーは仕事を分けるだけではありません。働いているコンピューターが正常に動いているかどうかを、数秒から数十秒おきに信号を送って確かめる「ヘルスチェック(状態確認)」という機能も、あわせて担っています。
もし何台かのうち1台が突然故障して止まったら、どうなるでしょうか。ロードバランサーは、何回か続けて応答がないコンピューターを見つけると、そのコンピューターへはもうお客さんを送りません。きちんと動いている正常なコンピューターだけに、お客さんを回します。こうして故障したサーバーを自動的に外してくれる、頼もしい防御壁の役割を果たします。
おかげで、コンピューターが数台突然故障しても、ほとんどのユーザーは故障に気づかないままサービスを使い続けられます。また、アクセスが爆発的に増えて後ろに新しいサーバーをつなぎ足しても、ロードバランサーが新しいコンピューターにもお客さんを振り分けてくれるので、サービスの拡張がとても簡単になります。
よくある誤解
ロードバランサーを設置すれば、サーバーコンピューター自体の計算速度が速くなる。
コンピューターの頭脳の性能を上げる装置ではありません。1人が超能力のように仕事を速くこなすのではなく、働く人を何人も置いて仕事を公平に分け、全体の待ち時間を減らす仕組みです。
日常で出会う場面
履修登録や年末年始の新幹線チケット予約のように何十万人がアクセスしても、サーバーが完全に止まらないように守ってくれます。
NetflixやYouTubeのように世界中の何億人もが使う動画サービスで、トラフィックを分散するときに使われます。
つまり ひとことで
ロードバランサーは、押し寄せるアクセスを複数台のサーバーに振り分けて、サービスが止まらず安定して動くよう支える交通整理の装置です。