Apache2.4のlbmethodの設定
【前提条件】
[環境]
- Apache 2.4.3
【参考サイト】
Apache2.4ドキュメント
http://httpd.apache.org/docs/2.4/
【概要】
Apache2.4でロードバランシングの設定をしようとしたときに
lbmethodの設定でつまいづいてしまいました。
どうやらApache2.4から追加の設定が必要のようです。
正確にはApache2.3からだそうですが。
【Proxyの設定】
Proxyの設定は↓のように設定しました。
<Proxy balancer://test_html/ > BalancerMember http://192.168.1.254:21001 BalancerMember http://192.168.1.254:21002 </Proxy>
ローカルのサーバにVirtualHostを2つ作成しています。
それぞれ受け付けるポートを変えています。
モジュールの設定はProxy系のものをロードしています
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
【起動時にエラー】
先ほどの設定の状態でApacheを起動すると
AH00526: Syntax error on line 121 of /usr/local/apache2.4/conf/httpd.conf: ProxyPass Can't find 'byrequests' lb method
「lbmethodって何ですか?」と思い、
調べて見るとロードバランサーのアルゴリズムらしいです。
byrequestはリクエスト数による重み付け、
bytraficは転送量による重み付け、
bybusynessは待機プロセス数による重み付けとのことです。
デフォルトではbyrequestが適用されます。
2.4(2.3)ではhearbeateが追加されていて、
mod_heartbeatを使用する時に設定するようです。
各アルゴリズムは2.2の時には
proxy_balancer_moduleに含まれていたようですが、
2.4(2.3)からはそれぞれモジュール化されているようです。
↓が追加されたモジュールです。
- mod_lbmethod_bybusyness
- mod_lbmethod_byrequests
- mod_lbmethod_bytraffic
- mod_lbmethod_heartbeat