サーバーの負荷分散を担うDNSラウンドロビンとロードバランサーの仕組み
大規模なサーバーを運用する上で欠かせないのが負荷分散(ロードバランシング)の技術です。
1台のサーバーに大量にアクセスが集中すると、どんなにスペックが高いマシンでも負荷によってパフォーマンスが低下し、表示の遅延やエラーが頻発するようになります。
そこで、複数台のサーバーにアクセスを振り分ける役割を担うのが、負荷分散のテクノロジーです。
今回の記事では、ウェブサイトの負荷分散を行なう、DNSラウンドロビンとロードバランサーについて解説します。
大規模サービスに欠かせない負荷分散の技術
一定以上の規模のウェブサイトやウェブサービスの運営で重要になるのが、負荷分散の技術です。
ウェブサーバーでは、アクセスが増えるごとにマシンにかかる負荷が大きくなります。
高性能のサーバーマシンを利用することで、ある程度の負荷に耐えられる環境を整えることは可能ですが、月間数千万〜億単位のページビューになると、発生する負荷は単体のサーバーで対処できる範囲を完全に超えます。
そこで、複数のサーバーを同時に運用し、それらにアクセスを分散させることで、1台あたりの負荷を軽減するという対策が取られます。
これは負荷分散(ロードバランシング)と呼ばれる技術で、大規模サーバーの運用には欠かせないノウハウとなっています。
ロードバランシングには「DNSラウンドロビン」と「ロードバランサー」の2種類があり、それぞれの概要は次の通りです。
DNSラウンドロビン
DNSラウンドロビンは、DNS(ドメインネームシステム)を利用した負荷分散システムです。
DNSサーバーはサイトの問い合わせに対して、IPアドレスを返すことで名前解決を行いますが、その際に複数のサーバーのIPアドレスを順番に返すことで、それらのサーバーにアクセスが分散されるという仕組みです。
ロードバランサー
ロードバランサーは、サイトへのアクセスを複数のサーバーに割り当てる交通整理役を担う機器やソフトウェアの総称です。
ロードバランサーが各サーバーの負荷状況を見ながら、最適なサーバーにアクセスを割り振ることで、ひとつのサーバーにアクセスが集中するのを防ぎます。
この2つの負荷分散のシステムは、アクセスの分散という同じ役割を担っていますが、内部の仕組みは全く異なっており、またそれぞれに一長一短があります。
以降の章でそれぞれ特徴について詳しく解説するので、両者の違いについてしっかり把握しておきましょう。
なお、ロードバランシングが必要になるのは(アクセスの集中度合いにもよりますが)月間数百万以上のPVが発生する大規模サイトのみで、一般的な規模のサイトでは基本的には必要のない技術です。
とはいえ、大規模なアクセスによる巨大な負荷をどのように処理すべきなのかを知ることは、サーバーやネットワークの技術を習得する上でも有用なので、ぜひ頭に入れておきましょう。
DNSラウンドロビンによる負荷分散
まずはDNSラウンドロビンから解説していきます。
DNSラウンドロビンとは、DNS(ドメインネームシステム)を利用した負荷分散のシステムです。
ラウンドロビン(Round Robin)はあらかじめ決められた順番に役割を交代していく仕組みのことで、ITの世界ではリソースを順繰りに割り当てるシステムのことを指します。
DNSラウンドロビンは、DNSサーバーによってアクセスを複数のサーバーに割り当てることで、ひとつのサーバーに負荷が集中することを防ぐ仕組みとなっています。
これはDNSの名前解決の仕組みを流用したシステムです。
DNSは、サーバーに割り当てられた数字の組み合わせ(IPアドレス)を、人間が扱いやすい文字列(ドメイン)の形態でアクセスできるようにした仕組みで、DNSサーバーはIPアドレスのリクエストをドメインに変換して応答する「名前解決」の役割を担っています。
DNSラウンドロビンでは、DNSサーバーのDNSレコードに複数のサーバーのIPアドレスをAレコードとして登録しておき、変換の際にそれらを順番に応答するように設定、DNSサーバーが毎回、違うIPアドレスのサーバーを返すようになるため、複数のサーバーにアクセスが分散するという構造になっています。
DNSの仕組みを利用しながら負荷分散を実現するDNSラウンドロビンですが、この技術にはいくつかのメリット・デメリットがあります。
DNSラウンドロビンの2つのメリット
DNSラウンドロビンのメリットとして挙げられるのは次の2点です。
仕組みがシンプルで設定しやすい
DNSラウンドロビンはDNS本来の機能を利用したシンプルな仕組みなので、導入設定が簡単です。
DNSレコードでドメインに対して複数のAレコード(IPアドレス)を登録するだけで、アクセスに対してそれらのIPアドレスのサーバーが順番に割り当てられるようになります。
運用コストがかからない
DNSラウンドロビンは、既存のDNSサーバーに複数のIPアドレスの設定を追加するだけで済むので、導入にコストがかかりません。
新たな機器を増設したり、ソフトウェアをインストールしたりする必要がないため、追加費用をかけずに負荷分散を実施したい場合に最適です。
DNSラウンドロビンの2つのデメリット
DNSラウンドロビンのデメリットには以下の2点が挙げられます。
負荷分散の制御が行えない
DNSラウンドロビンでは、アクセスが振り分けられるサーバーは、DNSレコードに記述されたAレコード(IPアドレス)の順番通りに機械的に選ばれ、その接続先を状況に応じて変更することはできません。
特定のサーバーが過負荷の状態だったり、サーバーが落ちている状態だったとしても、それを無視して振り分けは実行されるため、負荷分散を行っているにも関わらずサイトの表示が重くなったり、エラーが表示される可能性があります。
通信の継続性に欠ける
DNSラウンドロビンでは、アクセスの振り分け先のサーバーが機械的に決められるため、通信の継続性に欠け、セッションが切断されやすくなります。
IPアドレスのキャッシュ機能により、前回と同じサーバーに接続してセッションを維持することは可能ですが、キャッシュが消えれば、次回どのサーバーに割り当てられるかは運次第となります。
ロードバランサーによる負荷分散
サーバーの負荷分散のもうひとつの方法がロードバランサー(LB)です。
ロードバランサーは複数のサーバーを束ねるハブとして機能します。
サイトへのアクセスの要求があると、まずロードバランサーがそれを受け取り、配下のサーバーの中でもっとも負荷のかかっていないものにアクセスを割り振ります。
ロードバランサーは管理下のサーバーを常時監視していて、負荷の状況に応じて最適な割り当てを行う、柔軟性に優れた機能を備えています。
DNSラウンドロビンよりも、高度な負荷分散を行えるシステムと言えるでしょう。
ロードバランサーは、ハードウェア型、ソフトウェア型、クラウド型に分かれます。
ハードウェア型
専用の機器をネットワークに接続して利用するタイプのロードバランサーです。
扱いが難しい上に費用も高額ですが、負荷分散に特化した製品であるため機能的にはもっとも優れており、サーバーから独立している分、セキュリティの堅牢性にも優れています。
ソフトウェア型
サーバーにインストールするタイプのロードバランサーです。
費用はハードウェア型ほど高額ではありませんが、導入するサーバーを自分で用意しなければならず、またセットアップから運用までの作業の難易度も高くなります。
クラウド型
AWS(Amazon Web Service)やMicrosoft Azureで利用するロードバランサーです。
クラウドサーバーが提供しているサーバーの諸機能を仮想化したユニットの中のひとつで、クラウド上ですぐに導入できるため、急な負荷上昇への対処が可能です。
ただしコストの将来予測が難しく、セキュリティ面においても必ずしも盤石とは言えません。
ロードバランサーのメリットとデメリットは、次の通りです。
ロードバランサーのメリット
サーバー状況に応じた振り分け制御が可能
ロードバランサーは複数のサーバーを監視し、その負荷状況に応じて最適な振り分けを動的に行なう、リーストコネクションというアルゴリズムを搭載しています。
そのためサーバーの負荷が均一になるように割り当てることが可能で、全体のパフォーマンスが自動的に最適化されます。
また、振り分け先のサーバーのひとつが停止していた場合も、その状況を察知して別のサーバーにアクセスを振り分けることができるため、エラーを回避できます。
ロードバランサーのデメリット
運用の難易度が高い
ロードバランサーの難点は、導入と運用の難しさです。
基本的に業務用の製品である上に高度な機能を提供しているため、設定は非常に難しくなっています。
独自の仕様となるハードウェア型はもちろん、ソフトウェア型を運用する場合も、付け焼き刃の知識ではほとんど歯が立たないでしょう。
クラウド型に関しては、比較的導入はしやすく、公式のマニュアル以外にもウェブに情報が豊富に公開されているため、クラウド型でロードバランサーの使い方をひととおり覚えておくのもひとつの手かもしれません。
導入コストが高額になる
ロードバランサーのもうひとつのデメリットが導入のコストです。
ハードウェア型のロードバランサーを導入する場合、業務用の専用機器を購入しなければならず、数十万円〜数百万円の費用がかかります。
ソフトウェア型のロードバランサーは数万円程度で、無料のオープンソースも提供されていますが、ソフトを安定して駆動させるにはサーバーに相応のスペックが要求されるため、やはり費用がかかります。
クラウド型のロードバランサーは、クラウドサーバーの諸機能とセットで提供され、実際の使用量に応じて費用が決まる従量課金制となっています。
この方式の場合、稼働が少ないときにはコストが抑制されますが、アクセスが殺到したときのコストの予測が難しいという点は覚えておきましょう。
まとめ
今回は、サーバーの負荷を分散させる技術、DNSラウンドロビンとロードバランサーについて解説しました。
負荷分散は、一定以上のアクセスがあるサーバーを運用する際には欠かせない技術です。
個人レベルでロードバランサーの機器を導入する機会はめったにありませんが、AWSなどのクラウドサーバーにはロードバランサーが提供されていて、手軽に導入することができます。
負荷分散の原理を知ることで、DNSラウンドロビンやロードバランサーが必要になる状況や、その選び方が分かるようになるでしょう。
ある程度以上の規模のサーバーやネットワークに関わる際には、必ず出てくるテクノロジーなので、この機会にしっかりと頭に入れておきましょう。