- ベストアンサー
CGI サーバーを使い分けるには?
現在1つのプログラム(perl)に1台のサーバーで運用する予定です。 利用する人数が多いため1台のサーバーでは不安なためこれを3台(別サービス、URL)のサーバーで使い分けたいのですが、どのような方法が一般的でしょうか?もしくは簡単にできる方法があったら教えてください。 Yahooやmixiなんかもサーバーを複数用意していると思うのですが。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
もしWebサーバーにApache2をお使いでしたら Apacheモジュールのmod_proxy_balancerを 使うという手もあります。 この場合、入り口(URL)は一つとなって 処理を行うサーバーが複数になります。 ただ、サーバーを分けたとして吐き出されるファイルの 整合性とかは大丈夫でしょうか? 同一ファイルに書き出したりする場合は DB化する事をお勧めしておきます。
その他の回答 (5)
- lowrider_2005
- ベストアンサー率40% (1520/3748)
クラスタリングやHA(冗長化)は、大手サイトレベルになればそれこそ数千万~億単位でお金がかかる作業です。 まずは現在の問題点(処理速度なのか、対障害性なのか、など)を明確にし、採りうる手段をリストアップし、予算やプログラムにあわせた手法や将来性を考えて決定すべきです。 補足や回答を拝見する限り、1台のままでCPUやメモリだけで対応するのがよさそうです(=単に速いマシンへの移行)。
- Yeti21
- ベストアンサー率47% (396/830)
>頼めば容易にやってくれるものでしょうか? それはその会社しだいですが、単純には難しいと思いますが、 結局予算しだいだと思います。 どんな会社かわかりませんが、一度聞いてみても良いかもしれませんね。 >でも、ふつうそんなことしませんよね? そういうパターンは何とも...? その時点で振り分けてもどうなんでしょうね? 1セッションあたり余程重い処理なら効果もあるかもしれませんが、 どのようなシステムか、内容次第なのでちょっとわかりません。
お礼
たびたび回答ありがとうございましたm(__)m。 >その時点で振り分けてもどうなんでしょうね? 確かにご指摘のとおりでした(ToT)。 >余程重い処理なら効果もあるかもしれませんが 想像で申し上げるのも無理なことなのですが、おそらく軽めの処理だと思います。 1台のサーバーでやっていくことを考えた方がよさそうですね。
- Yeti21
- ベストアンサー率47% (396/830)
負荷分散を考える場合、あくまで代表例ですが、 専用サーバを置いて、入口で制御する場合、例えば10台のサーバに 順番に割り当てていくラウンドロビンというやり方が多いです。 他に、専用サーバを置かずに、サーバのクラスタリングで、セッションが ある一定数を超えた場合に別のサーバに振っていくようなやり方も有ります。 仰っている方法はこちらに近いと思います。
お礼
回答ありがとうございました。 クラスタリングを調べてみたところサーバー側でソフトを導入することで実現できそうですね。 ただ、ホスティングサービスしている会社はクラスタリングをやってなさそうなんです。 頼めば容易にやってくれるものでしょうか? 無理だとしたらPERLのプログラムで規定のアクセスになったら分散するようにできるのでしょうか? でも、ふつうそんなことしませんよね?
- Yeti21
- ベストアンサー率47% (396/830)
単純なクラスタリングから、負荷分散専用のサーバ設置まで、 予算に応じて色々方法はあると思います。 でも、簡単な話ではないので、専門家か業者に委託されるのが良いと思います。
お礼
回答ありがとうございますm(__)m 理想としては、ある一定の人数以上からアクセスが あったら別のサーバーを参照するようにしたいのですが それはむずかしいですよね? 根本的にそんなことしても意味がないかも知れませんが。
- lowrider_2005
- ベストアンサー率40% (1520/3748)
そのCGIの仕様によります。 ・DBは使うのか ・使う場合、参照だけか、更新もあるか ・ファイルの書き出しがあるか ・セッションを使っているか ・SSLを使用するか などなど。(他にもたくさん) それによっては、ただ単にスクリプトをコピーして複数台で動かすだけで済む場合もありますし、ファイルのロックやDBの同期、SSLアクセラレータの要不要、NFSを使うかどうか、など、場面によっていくつかの解決策を組み合わせなければいけないかもしれません。 以上のことから、「簡単にできる方法」も「一般的な方法」も、ご質問の内容から導き出すのは困難です。 とりあえず開発を担当された方(会社)に相談されるのが一番早いと思います。
お礼
回答ありがとうございますm(__)m 開発者は自分です。 やはりむずかしそうですね。 一応、概要を書きますと ・DBは使っておらず(テキストファイル) ・ファイルの書き出しあり ・SSLはたぶん使用していない といった状況です。 理想としては、一定人数以上アクセスがあったら 別のサーバにあるCGIファイルを参照するみたいに やったほうがよいかと思っています。 ただ、素人考えなのでそんなことやらない方が よいのかも知れません。
お礼
回答ありがとうございました。 >もしWebサーバーにApache2をお使いでしたら ホスティングサービスしている会社に頼まないといけないわけですね。 >Apacheモジュールのmod_proxy_balancerを それは利用できそうな感じでよいヒントになりました。 >整合性とかは大丈夫でしょうか? それが問題。1つのテキストファイルを1つのサーバーに置いておきたい気持ちですが、そんなことしたらサーバーをきりわける意味がないですよね? DB化はまだSQL Server7.0を昔に扱ったことがるくらいで作り治しになりそうです。 いつかはMysql+Perlで作りなおす予定なのですが、個人レベルでどこまでできるのやら・・・?