本連載では、信頼性の高いシステムを構築する上で欠かせない要素となってきた負荷分散技術と負荷分散装置(ロードバランサ)について解説します。
近年のインターネットの普及によりインターネット利用者数は急速に延びており、それに従いインターネットサイトへのリクエストも増加しています。 その増加速度は過去の経験から予想された速度を上回っていて、今後も正確に予想することは難しいと考えられます。
リクエストが予想以上に増加すると、Webサイトの応答が遅くなったり、Webサイトに接続しにくくなったりして、サービスが低下してしまいます。 そうなると、利用者は不満を増加させます。このような状態が続くと、やがて利用者はそのサイトを利用しなくなるでしょう。
また、インターネットの普及により、ネットワークインフラやWebサイトは、電気や水道などのライフラインと同様に日常生活に不可欠なものとなりつつあります。 Webサイトは365日24時間稼働を期待されており、障害や保守などによるWebサイトの停止は、日常生活への影響として現れてきます。
この様な背景により、Webサイトには次のような能力が求められています。
この様な要求を解決する方法の一つが負荷分散技術です。
今回は、負荷分散技術がこれらの課題をどの様に解決するか説明します。
スケーラビリティは、システムの拡張性を表します。
スケーラビリティの高いシステムであれば、能力が不足することが判ったときに、必要に応じてシステムを拡張できます。
つまり、最初から能力の高いシステムを構築しなくても良いということです。
このため、必要な能力を予め予測するのが難しいWebサイトではスケーラビリティが重要となります。
Webサイトの性能を上げる方法には二種類の方法があります。
1つ目の方法は、より性能の高いハードウェアに置き換えることです(スケールアップ)。新しいハードウェアで新たにWebサーバを構築し、古いサーバと交換します。
2つ目の方法は、ハードウェアを追加することです(スケールアウト)。Webサーバを新たに用意して、今までのサーバに追加します。

1つ目の方法では、ハードウェアを入れ換えて、サーバを再構築する期間はサービスが停止してしまいます。
これでは、スケーラビリティが高いとはいえません。
一方、2つ目の方法では、今までのWebサーバは止める必要がないので、サービスに影響を与えずに拡張することができます。
また、今までのサーバにくらべて特別に高性能なサーバを用意する必要はないので、高性能のサーバで新たに再構築するのに比べれば容易です。
このように、スケールアウトの方が、スケーラビリティの必要なシステムに向いています。
しかし、同じサーバを複数設置しただけでは、課題は解決しません。利用者がどのサーバを利用するかを選択をする必要があるからです。 これでは、サーバを追加する度に利用者に追加したサーバの情報を通知する必要があり、容易に拡張することができません。
負荷分散技術を利用する理由が、ここにあります。
負荷分散技術では、複数のサーバを代表するIPアドレスを決め、利用者にはこのIPアドレスを教えます(このIPアドレスを”仮想IPアドレス”といいます)。
そして、仮想IPアドレスは、負荷分散装置に設定します。これにより、利用者からのリクエストは、負荷分散装置に送信されます。
負荷分散装置には、実際のサーバが接続されており、受信した利用者からのリクエストを各サーバに均等に分散します。 その結果、利用者からは、実際には複数のサーバが、あたかも1台の高性能サーバのように見えることになります。

利用者から見えるのは、常に1台の"仮想的なサーバ"だけです。
実際のサーバを増減しても、利用者にはその変化は見えません。
利用者は、いつもと同じ"仮想的なサーバ"にリクエストを送ればよく、
負荷分散装置が、その時の実際のサーバの構成に応じて、適切なサーバにリクエストを分散します。

このように、負荷分散技術を利用すると、サービスに影響を与えずにサイトの処理能力を増強することできます。
アベイラビリティは、システムの止まりにくさを表します。
故障せず保守も必要ない機器でシステムを構成すれば、もちろんアベイラビリティは高くなりますが、実際には故障も保守も避けることはできません。
そのため、アベイラビリティの高いシステムには次のような機能が要求されます。
負荷分散装置は、このような要求に応えるために、サーバの状態とサーバに送信したリクエストを管理します。
負荷分散装置は、接続しているサーバの運用状況を定期的に診断し、故障しているサーバを負荷分散の対象から自動的に除外します。 これにより、利用者からのリクエストは、正常なサーバで処理されます。
さらに、負荷分散装置は、リクエストをどのサーバに送信したか、そのサーバがリクエストに応答したかを管理します。 故障しているサーバを発見したときに、負荷分散装置はそのサーバに送信したリクエストをチェックします。 応答していないリクエストがあれば、負荷分散装置はそのリクエストを正常なサーバに再び送信します。
このように、負荷分散装置を利用すると、サーバの故障を隠蔽して、Webサイトのサービスを継続させることができます。

この仕組みを応用すると、サービスを停止することなくサーバの保守や修理を行うことができます。
サーバの保守や修理が必要になったとき、オペレーターは負荷分散装置にサーバの使用を停止するよう指示します。
負荷分散装置は、指示されたサーバを負荷分散の対象から外します。
これで、そのサーバは保守や修理ができる状態になります。
サーバの保守や修理が終わったら、サーバを再びシステムに組み込みます。 オペレーターが負荷分散装置にサーバの使用再開を指示すると、負荷分散装置はそのサーバを負荷分散の対象に組み込みます。

このように、負荷分散装置を利用すると、Webサイトのサービスを止めることなく、サーバの保守や修理を行うことができます。
(注) 下図の各モデルの画像をクリックすると、仕様紹介のページが表示されます。