GoogleやYahooをはじめはてななど大手サービス会社は数多くのサーバを稼動してサービスを提供しているのですが、ちょっとわからないことがあります。
まずはじめに たとえばBlogアプリケーションがあるとします。 http://www.example.com/blog/post にアクセスするとBlogを投稿出来るようになっているのですが、アクセス集中した際にロードバランサでアクセスを複数のサーバに分散しているとき、全てのサーバー上にBlogアプリケーションをインストールしているから分散しても同じ画面が表示されることになっているのですか?
2つめに サーバを2台用意して1つはWebサーバ(HTMLの表示やPerlなどのアプリケーション起動)で、もう一台はDBサーバとしてMySQLのみをインストールし、Webサーバから送られてきたデータを格納する方法を実践的でしょうか?それとも1台のサーバに全てインストールしてその中で全てを行うべきでしょうか?
よろしくお願いします。
・負荷分散の話
ロードバランサ配下には、基本的に同構成のサーバが存在しますが、全く同じモノである必要はありません。
同機能(ここでいえば、ブログエントリ)出来るアプリケーションが稼働さえしていて、フロント側のユーザーとバックのデータベースへの橋渡しに同じインターフェースを提供さえ出来ていれば良い訳です。
※ソフトやバージョンが異なっていても(データの橋渡しが保証され)支障が無ければ、問題なし、みたいな。
・サーバ台数の話
サイトの規模や可用性、耐障害性によりけりな問題です。
※あとコストというか費用。
1つのサーバで全てを行った場合、搭載されているsoftware分リソースが底上げされてしまいますから、その上で、アクセスを処理できているのであれば、1台に全てを入れるのも良しです。
止められないサービスを前提としていても、同構成のサーバをコールドスタンバイ機として用意しておき、問題発生の際のダウンタイムを最小限に留める、などの対策や最初からロードバランサ配下に置いておくのも良いです。
ただ、無停止条件のクラスタ構成が必要な規模では、最低限でもフロント2台+バック2台の構成が必要であると思います。
なるほど。参考になります