だるろぐ

だるいぶろぐです

apacheでバランシングしよう

例えばサーバが沢山あるときに、webアプリをそいつら全部にデプロイして、均等にアクセスさせたいとかいうとき。
Big-IP買ったりsquid使ったりDNSラウンドロビンしたりと色々方法はあるけど、apacheでやる場合。


とりあえずフロントからバックへプロキシするときにバランシングする例。フロントへのアクセスは頑張って何とかして。

使えるかの確認

% httpd -v
Server version: Apache/2.2.3

% httpd -M 2>&1 | grep proxy
 proxy_module (shared)
 proxy_balancer_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_connect_module (shared)
 proxy_ajp_module (shared)

設定

# balancer.conf
<Proxy balancer://app>
    BalancerMember http://192.168.0.1:81 retry=10 loadfactor=10
    BalancerMember http://192.168.0.2:81 retry=10 loadfactor=10
    BalancerMember http://192.168.0.3:81 retry=10 loadfactor=10
</Proxy>

後は今まで

    RewriteRule ^/(.*)$ http://192.168.0.1:81/$1 [P,L]
    RewriteRule ^/(.*)$ http://192.168.0.2:81/$1 [P,L]
    RewriteRule ^/(.*)$ http://192.168.0.3:81/$1 [P,L]

とか書いてたところを

    Include /path/to/balancer.conf
    RewriteRule ^/(.*)$ balancer://app/$1 [P,L]

で終わり。素敵。