- - PR -
DNSラウンドロビンとmod_proxy_balancerで簡易ロードバランス
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-07 11:57
簡易的にロードバランサーの導入を検討しています。
高価なロードバランサー機器の導入は考えていません。 段階的にテストしてみようと思い、まず、DNSラウンド ロビンに設定しました。 nslookupで確認すると、IPアドレス2つが順序を入れ 替えながら表示されます。 ブラウザ(IE7)で確認すると、一方のサーバへのみ 集中します。 ブラウザの仕様がわからないのですが、おそらく一度 名前解決するとそのIPアドレスを憶えているのかと。 あくまでも推測ですが... そこで、Apache2.2のmod_proxy_balancerを使用しよう と思いいろいろ調べましたが、疑問点が出てきたので、 お知恵をお貸しください。 あるサイトで、サーバ構成を インターネット | | proxyサーバ1 proxyサーバ2 | × | Webサーバ1 Webサーバ2 このようにすると書いてあったのですが、4台構成は、 ちょっと簡易的にやろうとしていることとコスト的に 見合わないので、これを2台で構成できないかと考えて います。 proxyサーバはグローバルIPアドレスからのアクセスに 対してのみ働くようにし、ロードバランスするサーバ は、同じサーバのローカルIPアドレスにすればできる と思っているのですが、proxyの無限ループになりそう な気もします。 どうでしょうか?ご意見をいただけないでしょうか? 具体的な設定方法など教えていただけると助かります。 やってみればよいのですが、Apacheのバージョンを2.0 から2.2へ上げられない(実は本番系でテストしている) ので、まずはできるかできないかだけ知りたいのです。 できるのであれば、ちゃんとテストマシンを用意して やってみます。 | ||||||||
|
投稿日時: 2007-02-07 13:05
DNSはキャッシュされるので1台ではラウンドロビンできません。 異なるPCからならラウンドロビン的な動作になるでしょう。 ipconfig /flushdnsでOSレベルのキャッシュはクリアできますが、 IEが自身でもメモリ上に保存している場合は無意味かもしれません。
同じサーバの場合はVirtual Hostで分ける必要がありそうです。 簡易ロードバランサの構築という事ですが、Linuxであれば、 IPVS(IP Virtual Server)を使った本物のロードバランサも Ultra Monkey等を利用すれば比較的簡単に作れますよ。 | ||||||||
|
投稿日時: 2007-02-07 13:13
こんにちは。
それはできるでしょうけど、有意義かどうかは何とも言えないところですね。 何のためにロードバランサを導入するのでしょうか? その目的や背景によるでしょう。 負荷を分散したいのか、耐障害性を確保したいのか。その両方か。 Webアプリケーション ( Java … Tomcat等, PHP, mod_XX, cgi 等 ) は絡むのか。絡むとして、セッション維持はどうするか。 4台はムリというのが、試験段階だからなのか、商用導入時もそうなのか。 DNSラウンドロビン + mod_proxy_balancer ではなく、LVS の方が合っている話かもしれないですし。 | ||||||||
|
投稿日時: 2007-02-07 15:14
あしゅさん、angelさん、ありがとうございます。
IPVS、Ultra Monkey、LVS。 どれも、今回の調査の中で目にしたキーワードです。 そちらも、まだ理解できていないので、調べてみます。 ちなみに目的は、負荷分散と耐障害性確保の両方ですが、 DNSラウンドロビンではヘルスチェックできないことも 理解しております。 最近のブラウザは一方のWebサーバのHTTPポートの応答 がなければ、次のWebサーバを見に行くようです。 Webアプリは、PHPとCGIとSSIを使っていますが、 セッション維持は行いません。 4台はムリというのは、商用導入時もそうです。 VirtualHostは、既に名前ベースのものを利用していて、 今回の要件ですと、IPアドレスベースになるでしょうか。 共存可能かな? ローカルIPアドレスにhostsかなんかで、名前を付けて あげればよいですね。 できそうな気がしてきました。 ipconfig /flushdnsしても、一方のサーバへのみ集中 します。IEが憶えてるかな。 | ||||||||
|
投稿日時: 2007-02-07 23:36
やってみるだけであれば、
それぞれのサーバにプロキシとアパッチ設定して Nicに二つのIPアドレスを設定するのは? 出来たとしてもFirewallなぃ気持ち悪いけど。。 | ||||||||
|
投稿日時: 2007-02-08 02:38
負荷分散をどのレベルで考えるか、ですが…。
単に冗長性を確保するなら、2台1組のHAクラスタが分かりやすいでしょうね。 DNSラウンドロビンで耐障害性は良しとするなら、何も考えず2台並べるだけで O.K. このケースで第一感は、APの処理が相対的に負荷が高いと見て、各サーバにApacheのインスタンスを2種類用意する構成を考えました。 1. リバースプロキシ 静的コンテンツは直接処理、AP は後背の AP用Apacheに、mod_proxy_balancer の機能で振り分ける。セッション維持の必要がないので、そのまま振り分けるだけ。 2. APサーバ PHP, CGI, SSI 処理専門。クライアントからの直アクセスはさせず、あくまでリバースプロキシを通した接続に限る。 冗長化は、1のリバースプロキシを HAクラスタ化したいところ。これは、静的コンテンツ+ プロキシなら1台でも十分に捌けるという想定の時です。 ちなみに、最初から LVS で負荷分散するなら、こういう分け方は考える必要はないでしょうね。 以上、ご参考まで。 | ||||||||
|
投稿日時: 2007-02-08 12:31
apacheのインスタンスを2つ持つのはなるほどです。
LVSを調べていて、これがやろうとしていることに 向いているように思えました(途中で話を変えて すいません)。 ただ、やっぱり、 インターネット | | LVSサーバ1 LVSサーバ2 | × | Webサーバ1 Webサーバ2 このようにしないといけないのでしょうか? 2台で、ロードバランサもWebサーバも冗長化したいです。 | ||||||||
|
投稿日時: 2007-02-08 13:00
できますよ。 http://ultramonkey.jp/2.0.1/topologies/ ここの「高可用性と負荷分散の効率化」を参考にして下さい。 |