トリアエズぶろぐ
フリーランスでやってる77世代のWEBプログラマが福岡からのんびりとお送りいたします。
スポンサーサイト


一定期間更新がないため広告を表示しています

<< つなビィのサーバ構成 : 負荷分散構成に悩む>< | main | 負荷分散構成時のファイルストレージサーバとのやり取り方法 >>
意外と簡単で拍子抜けた、mod_proxy_balancerで負荷分散


Linuxやネットワークに詳しくないボクでも、1時間でできちゃいましたよ、mod_proxy_balancerで負荷分散。
結果的には3台じゃなくて2台構成でもOKでした。

つなビィのサーバ構成 : 負荷分散構成に悩む><
で使ってる2台のDBサーバってCentOS5だったなぁと思って、
httpd.conf見てみたら書いてあるじゃん!
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

目標は

LV(ロードバランサー)兼Webサーバ × 1
Webサーバ × 1

の2台構成で負荷分散。
早速wktkで、Google先生を頼りに試行錯誤で書いてみた。

$ vi httpd.conf

## 自サーバのIPは192.168.100.13
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / balancer://TEST/ stickysession=stickyid timeout=2
<Proxy balancer://TEST/>
        BalancerMember http://192.168.100.12/ loadfactor=10
        BalancerMember http://127.0.0.1/ loadfactor=10
</Proxy>
んでテスト。
$ curl http://192.168.100.13
Hi, 192.168.100.12
$ curl http://192.168.100.13
Hi, 192.168.100.12
$ curl http://192.168.100.13
Hi, 192.168.100.12

あれれ、192.168.100.12 にしか行かないよー。。。と思ったらそりゃそうだ
127.0.0.1に行く時点でループ⇒エラーになるわけで。
んじゃ、VirtualDomain作ってわけるしかねーか。

192.168.100.13:80(通常アクセス)

バランサー

192.168.100.13:8001(コンテンツ)

でいいのかな?

$ vi httpd.conf

Listen 8001
NameVirtualHost *:8001
<VirtualHost *:8001>
        DocumentRoot /var/www/html
        ServerName dummy-host.example.com
</VirtualHost>

NameVirtualHost *:80
<VirtualHost *:80>
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / balancer://TEST/ stickysession=stickyid timeout=2
        <Proxy balancer://TEST/>
                BalancerMember http://192.168.100.12/ loadfactor=10
                BalancerMember http://127.0.0.1:8001/ loadfactor=10
        </Proxy>
</VirtualHost>

(書き方あってるか不安だけど)テストー。

$ curl http://192.168.100.13/
Hi, 192.168.100.12
$ curl http://192.168.100.13/
Hi, 192.168.100.13
$ curl http://192.168.100.13/
Hi, 192.168.100.12
$ curl http://192.168.100.13/
Hi, 192.168.100.13

うほっ、動いた!
2台構成でもいけるやーん。ルネッサーンス!
だがしかーし、この場合LVサーバに最初のアクセスとリバースプロキシ後のアクセスログが二重に残る。(おぉ、状況が変わった)

127.0.0.1 - - [13/Aug/2008:00:11:23 +0900] "GET // HTTP/1.1" 200 19 "-" "curl/7.9.8 (i386-vine-linux-gnu) libcurl 7.9.8 (OpenSSL 0.9.6m) (ipv6 enabled)"
192.168.100.2 - - [13/Aug/2008:00:11:23 +0900] "GET / HTTP/1.1" 200 19 "-" "curl/7.9.8 (i386-vine-linux-gnu) libcurl 7.9.8 (OpenSSL 0.9.6m) (ipv6 enabled)"
これだとaccess_logが肥大化するし、なにより気持ち悪いので以下の設定でリバースプロキシ後のアクセスログの出力を停止!
<VirtualHost *:8001>
        ほげほげ
        ErrorLog /dev/null
        CustomLog /dev/null common
</VirtualHost>
ていうかこの設定の仕方がもっと気持ち悪い。他に書き方なかったっけ??

まぁ、そんなこんなで1時間程度で実験成功ー。
↓サブフォルダのテストもOKでちた
$ curl http://192.168.100.13
Hi, 192.168.100.12
$ curl http://192.168.100.13
Hi, 192.168.100.13
$ curl http://192.168.100.13/test/
Hi, 192.168.100.13/test/index.html
$ curl http://192.168.100.13/test/
Hi, 192.168.100.12/test/index.html
こんなに簡単にできてしまうなんて・・・なんて食わず嫌いな俺。
こりゃぁLVS・IPVSの負荷分散も試してみるべき?
さすがに本番DBサーバでIPVSの実験は怖いので新しいサーバが届いてからにしようかな。

でもコンテンツが混在してるつなビィサーバはmod_proxy_balancerがいいのかなぁ。例の本が届いてからじっくり検討するかー。


#2008/8/19
届いた!





参考サイト(感謝!):ブクマ順

livedoor Developers Blog:nowaのサーバ構成 - livedoor Blog(ブログ)

ウノウラボ Unoh Labs: mod_proxy_balancer 小技集

cyano? ブログアーカイブ ? mod_proxy_balancerで中〜大規模サーバー運用するときの勘所 - (1) mod_proxy_balancerの設定編

FFTT : 負荷分散講習会 Apache編

mod_proxy_balancer設定memo - うまい棒blog

naoyaのはてなダイアリー - Apache 2.2.0 + mod_proxy_balancer

YappoLogs: Apache 2.2.0 のロードバランス機能(mod_proxy_balancer)を使いこなす

スポンサーサイト


COMMENT









Trackback URL
http://akihiro.jugem.jp/trackback/206
TRACKBACK