- ベストアンサー
apacheの負荷分散方法のアイデアありませんか?
こんにちは。 Linuxで自宅サーバを立てています。 1台のPCにWEBサーバとしてapacheが入っています。負荷分散&PCが故障したときのためにPCを2台使って負荷分散的な事ができないかと思っています。googleで検索しましたら様々な方法や機器があるようですが、実際のところ本格的な負荷分散のため、というより(そこまでアクセスありません笑)勉強のためやってみたい、というところが大きいので高価な専用ハードやソフトを使わずにできる方法はないかなと模索しています。 ルータ--------| | --------------- | | PC-1(apache) PC-2(apache) | | ------|--------- | PC3(MYSQL) WEBサーバを二重化しても回線やDBがそのままだとあんまり意味無いよ、とつっこみどころはあるかと思いますがご経験談やアドバイスなどお聞かせください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず・・・負荷分散装置などを介さずに、2台のサーバーで負荷分散&冗長化というのは、普通はちょっと無理がありますね。 まず一番簡単な方法は、DNSにAレコードを二つ書いて、ラウンドロビンにする方法。2台がランダムに使われるので、それなりに負荷分散になります。また、賢いOS&ブラウザだと、片方がダウンしたときもう片方を見てくれるかもしれないので、冗長化にもなります。 3台構成でよいのなら、Apache2の負荷分散リバースプロキシモジュール「mod_proxy_balancer」を使ってみるというのがあると思います。この場合、mod_proxy_balancerを入れた一台が負荷分散の役割となり、バックエンドの2台にHTTPのリクエストを分散させます。ただしこの場合も、mod_proxy_balancerのサーバーが故障したときがネック、ですね。。 Linuxでさえなくてよいなら・・・FreeBSDというUNIX系のフリーのOSには、CARPという仕掛けがあり、OSだけで負荷分散、冗長化ができてしまいます。この場合、2台だけで無理なく負荷分散と冗長化ができ、この1台だけは壊れてはダメ、というようなネックになる装置が存在しないので、安価に頑強なシステムが作れて便利です。
その他の回答 (1)
- lowrider_2005
- ベストアンサー率40% (1520/3748)
一番簡単なのはNo1さんの仰るDNSラウンドロビンですが、なんらかの対策(ゾーンファイル書き換えなど)をしないとダウンしたサーバの切り離しができません。 リバースプロキシ系ですと、Poundというソフトウエアがあります。 http://www.apsis.ch/pound/ そのほかにLVS(Linux Virtual Server)を使う手法とかDNSのSVRレコードを使う方法、iptablesのDNATなどいくつか考えられますので、目的にあったものを試してみてください。(私も全部試したわけじゃありません)
お礼
ありがとうございます!
お礼
ありがとうございます。勉強になります。 FreeBSDはLinuxのディストリビューションが違う版くらいにしか思っていなかったのですが結構大元から構造が違うんですね。