Apache 2.2でWebサイトをパフォーマンスアップ!
 − 最新Apacheの機能と設定方法教えます −

鶴長 鎮一(book@tsurunaga.jp)
2006/3/14

ロードバランスクラスタを使う

 Apacheには、レスポンスの遅いサーバの代わりに応答するプロキシ機能が提供されています。Apache 2.0でも、通常のフォワードプロキシおよびWebサーバの負荷分散を可能にするリバースプロキシに対応していました。

 Apache 2.2ではリバースプロキシ機能をさらに高め、トラフィック量やリクエスト回数に応じたロードバランシングが可能になっています。ロードバランスされるバックエンドサーバは、Apacheを再起動することなくオン/オフラインにできます。バックエンドサーバがダウンした場合は、自動的にそのサーバを切り離し、復旧後自動的に復帰させるといったことも可能です。

ロードバランス機能の導入

 キャッシュ機能と同様、プロキシやロードバランス機能はデフォルトでは有効になっていません。Apache 2.2のソースアーカイブを展開した後、次のオプションを指定してconfigureを実行します。

# ./configure --enable-proxy --enable-proxy-balancer

 「--enable-proxy」でプロキシ機能を有効にし、「--enable-proxy-balancer」でロードバランスに対応させます。

 その後make、make installを実行し、/usr/local/apache2にファイルをインストールします。

# make
# make install

 インストール終了後、「httpd -M」でモジュールが組み込まれていることを確認します。DSOを利用していないため、「httpd -l」でも確認できます。

# /usr/local/apache2/bin/httpd -M
Loaded Modules:
(省略)
 proxy_module (static)
 proxy_connect_module (static)
 proxy_ftp_module (static)
 proxy_http_module (static)
 proxy_ajp_module (static)
 proxy_balancer_module (static)
(省略)

または、

# /usr/local/apache2/bin/httpd -l
(省略)
  mod_proxy.c
  mod_proxy_connect.c
  mod_proxy_ftp.c
  mod_proxy_http.c
  mod_proxy_ajp.c
  mod_proxy_balancer.c
(省略)

ロードバランス機能の設定

 次にhttpd.confファイルを修正します。ここではデフォルトの/usr/local/apache2/conf/httpd.confを使用します。その際、ロードバランスのための管理画面を有効にします。管理画面は特定クライアントからのアクセスのみに限定するため、「Allow from xxx」を適切に設定してください。

#ロードバランス管理画面の設定
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from 10.0.0.  #管理画面を使用するクライアントやネットワークを指定
</Location>

#リバースプロキシ、ロードバランスの設定
ProxyRequests Off   #フォワードプロキシ機能を無効に
#リバースプロキシの設定
ProxyPass /cluster_test balancer://mycluster lbmethod=byrequests
 timeout=1
<Proxy balancer://mycluster>
BalancerMember http://10.0.0.10:80 loadfactor=10
BalancerMember http://10.0.0.11:8080 loadfactor=10
</Proxy>

 「ProxyPass」ディレクティブは、もともとリモートサーバをローカルサーバのURLにマッピングするために使用していましたが、リモートサーバのアドレスに「balancer://」を用いることでロードバランスを指定することが可能になります。ここではURL「http://サーバ/cluster_test」に対してロードバランスを用いています。

 続けて「lbmethod=byrequests」でリクエスト回数に基づく負荷分散アルゴリズムを指定しています。トラフィック量に応じて分散させる場合は、

lbmethod=bytraffic

とします。

 「timeout=1」でバックエンドサーバに接続する際のタイムアウトを1秒に設定しています。デフォルトでは0秒ですが、アクセス数が相当数になった場合などでエラーを起こすようなら、設定を見直します。

 ほかにも、「ProxyPass」ディレクティブには次のような値を設定できます。

  • stickysession=JSESSIONID
    バランサのスティッキーセッションを指定します。バックエンドにセッション変数を利用するアプリケーションサーバがある場合、2回目以降のリクエストを最初に接続したバックエンドに対して行うため、スティッキーセッションを指定します。ここで指定する値は、Javaアプリケーションであれば「JSESSIONID」、PHPアプリケーションであれば「PHPSESSIONID」のように、バックエンドアプリケーションがサポートするセッションに合ったものを指定します。

  • nofailover=On
    セッション変数を利用している場合で、バックエンドサーバがセッションレプリケーションをサポートしていない場合は、「On」にする必要があります。Apache Tomcat 5はセッションレプリケーションに対応しています。

  • maxattempts=1
    フェイルオーバー試行最大回数を指定します。

 ロードバランスの具体的なバックエンドの構成は、<Proxy balancer://○○>〜</Proxy>で行います。ここでは2台のサーバを用意しています。「BalancerMember」に続けて、バックエンドサーバのURLを指定します。「loadfactor=10」で負荷分散アルゴリズムのための重み付けを行っています。指定できる数値は「1〜100」の範囲で、値が大きくなるほど使用頻度が高くなります。

 設定が完了したらApacheを起動または再起動し、動作を確認します。「http://サーバ/balancer-manager」にアクセスし、以下のような管理画面が表示されることを確認します。なお、管理画面で設定した内容はhttpd.confに反映されません。そのため、httpdを再起動すると設定は元に戻ります。

画面 ロードバランスマネージャ

 最後に、バックエンドサーバのうちの1台を意図的にダウンさせ、自動的に切り離されることを確認します。さらに、バックエンドサーバ復旧後しばらくして自動で復帰すれば正常に動作しています。

 3年8カ月ぶりのメジャーバージョンアップとはいえ、特に大きな変更はありません。ただし、ここで紹介したキャッシュ機能やロードバランシングのように、パフォーマンス改善の努力は着実に行われています。mod_proxy_ajpの刷新やスティッキーセッション方式のロードバランシングの採用など、Apache Tomcatに代表されるアプリケーションサーバとの連携も強化されています。

 間もなくリリースされるFedora Core 5ではApache 2.2が採用されるなど、各ディストリビューションでもApache 2.2への移行が始まり安定性の面でも評価を得ています。そろそろApache 2.2を試してみてはいかがでしょうか。

3/3

Index
Apache 2.2でWebサイトをパフォーマンスアップ!
 最新Apacheの機能と設定方法教えます
  Page 1
Apache 2.2の主な変更点
  Page 2
強化されたドキュメントキャッシュ機能を使う
 ドキュメントキャッシュ機能の導入
 ドキュメントキャッシュ機能の設定
Page 3
ロードバランスクラスタを使う
 ロードバランス機能の導入
 ロードバランス機能の設定

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間