残念なお知らせですが昨日に引き続きまして、ユティです。今しばらくお付き合いください。昨日はコスト削減で必要なサーバ構成変更の例について書きましたが、今回はサーバの負荷分散についてお話しようと思います。

■負荷分散をする必要性
webサービスを提供する場合、小規模であれば www+app+DB などの1セットという形で稼動している場合も往々にしてあると思いますが、ある程度のユーザー数、PV数になってくると、1セットではサーバが悲鳴を上げることでしょう。そこでアクセスを処理するサーバを増やすことになります。ですが、単純に同じものを増やせばいいかというとそうではなく、サーバのスペックに依存する基本的な処理能力以外に負荷分散についても考える必要があります。では、実際にlivedoorのサービスで用いられている負荷分散方法をご紹介いたします。

●DNSラウンドロビン
1つのホスト名に複数のIPアドレスを割り当て、DNSに登録することで負荷分散することをDNSラウンドロビンといいます。
後述のロードバランサ導入時に比べ、ダウンしたサーバへもアクセスが割り振られてしまうといったデメリットがあります。

例)example.com
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4

ブラウザ     DNS
example.com ⇔ 192.168.0.[1-4]のいずれか



●ロードバランサ
大規模サービスを運用する場合、数百台規模でサーバを稼動させることも少なくありません。そのような場合によく使われる負荷分散方法が、ロードバランサを利用したサーバ構成です。主な特長として
・ダウンしたサーバを自動的に分散対象から外してくれる
・アクセスの振り分けに偏りが発生せず均一に分散してくれる
・特定のサーバを設定から外して復旧作業を行うことができる
といったものが挙げられます。DNSラウンドロビンで問題になることの多くを解決することができますが、高価なハードウェアを導入する必要があり、コストが大きいのが悩みどころです。

例)example.com
192.168.0.1
+10.0.0.1
+10.0.0.2
+10.0.0.3
+10.0.0.4

ブラウザ     DNS
example.com ⇔ 192.0.2.1




ブラウザの高性能化や、前回紹介したLVSのようなソフトウェアバランサーなど、負荷分散に関する分野も常に新しいソリューションが生まれています。これらの検証のため、実験的に案件に導入するといったケースもあります。


というわけで、サーバについて2回にわたってお届けしました。台数を減らすことを重点的に書きましたがアクセス数は日々変わるもので、そのバランスを見て調整していくことが肝要なわけです。

ちなみにここに書いたような内容はライブドアで仕事をする中で得たものです。会社に入るまでは、ただの文系大学生でしたから。知識的に至らないところもまだまだあるので、一般的な話を自分の復習も兼ねて書いてみました。
ツッコミや思うところいろいろあるかと思います。「オレが教えてやるぜ」くらいの気概を持った方(もちろんそうじゃない方も)絶賛お待ちしております。