検索
連載

Poundで作るロードバランサとSSLラッパ実用 Apache 2.0運用・管理術(5)(2/4 ページ)

Webサーバの負荷を軽減する方法として、リバースプロキシによる代行とロードバランサによる分散が考えられる。今回は、これらによる負荷の低減方法について解説する。(編集部)

Share
Tweet
LINE
Hatena

Squidリバースプロキシによるキャッシング

 オープンソースのプロキシサーバといえば、最初に名前が挙がるのはSquidでしょう。一般的にプロキシと呼んでいる機能とは、厳密には「フォワードプロキシ」(Forward Proxy)と呼びます。今回はSquidをフォワードプロキシとしてではなく、「リバースプロキシ」(Reverse Proxy)サーバとして利用し、そのキャッシュ効果で性能向上を狙います。

リバースプロキシとは

 Webサーバの前面にSquidリバースプロキシを導入すると、クライアントからのアクセスをWebサーバに代わってSquidが処理することになります。前回、ナローバンドからのアクセスがレスポンス低下の原因になることを説明しました。このナローバンドからのアクセスはSquidが処理する一方、WebサーバとSquidの間は高速に処理されるので、Webサーバがボトルネックになるのを防ぐことができます。

 リバースプロキシを前面に立て、Webサーバをリバースプロキシからしか見えないプライベートネットワークに設置することで、Webサーバを不正アクセスから保護することもできます。

 異なるコンテンツを格納する複数のWebサーバの前面にリバースプロキシを設置し、リバースプロキシがURLに応じてバックエンドのサーバを選択する構成を取ることもできます。これにより、1つのサーバアドレスで、複数のコンテンツをユーザーに見せるといったWebサイトを実現できます。このロードバランサ寄りの機能は、後述する「Pound」の部分で紹介します。

図2 Squidをリバースプロキシにする場合は、DNSの書き換えが必要(WebサーバのIPアドレスをSquidのIPアドレスに置き換える)
図2 Squidをリバースプロキシにする場合は、DNSの書き換えが必要(WebサーバのIPアドレスをSquidのIPアドレスに置き換える)

Squidのインストール

 使用しているディストリビューションがRPMなどのバイナリパッケージを提供している場合は、それを利用するのが効率的です。

# yum install squid
yumコマンドでネットワークインストールする場合

 ソースからインストールする場合は、Squidの公式サイト(http://www.squid-cache.org/)からソースファイルをダウンロードして適当なディレクトリに展開します。生成されたディレクトリに移動し、configureおよびmakeを実行します。

# wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE11.tar.gz
# tar xvfz squid-2.5.STABLE11.tar.gz
# cd squid-2.5.STABLE11
# ./configure
# make
# make install

 ソースからインストールした場合、インストール先は/usr/local/squid/になります。

 ここまでの作業が終わったら、グループとユーザーを作成し、キャッシュ領域を初期化します。

# groupadd squid
グループの作成
# adduser -g squid -d /usr/local/squid/var squid
ユーザーの作成
# chown squid.squid /usr/local/squid/var
パーミッションの変更
# /usr/local/squid/sbin/squid -z
キャッシュの初期化

Squidの設定

 Squidのインストールが完了したら、squid.confファイルを編集してリバースプロキシを立ち上げます。squid.confファイルは、ソースからインストールした場合は/usr/local/squid/etc/squid.conf、Red HatやFedora Core、SUSE、Turbolinuxでは/etc/squid/squid.confに存在します。

http_port 80 (1)
 
cache_dir ufs /usr/local/squid/var/cache 100 16 256 (2)
cache_effective_user squid (2)
 
visible_hostname www.example.jp (3)
 
httpd_accel_host 192.168.0.10 (4)
 
httpd_accel_port 80 (5)
 
httpd_accel_single_host on (6)
 
httpd_accel_with_proxy off (7)
 
httpd_accel_uses_host_header off (8)
 
acl all src 0.0.0.0/0.0.0.0 (9)
http_access allow all (9)
squid.conf
(1) Squidのポート指定。HTTPサービスのデフォルトポート80を指定
(2) キャッシュの指定。キャッシュディレクトリは「/var/spool/squid/」など。適宜変更
(3) エラーページなどに表示されるホスト名の指定
(4) WebサーバのIPアドレスの指定
(5) Webサーバのポート番号の指定
(6) リダイレクトが必要な場合はWebサーバへ転送
(7) フォワードプロキシとして機能させる場合は「on」
(8) プロキシの透過モードで使うときは「on」
(9) アクセス制御の指定。公開用Webサーバなので無制限に

 前述したように、セキュリティを考慮してWebサーバをプライベートネットワークに設置し、Squidからしか接続できないようにすることもできます。また、バックエンドのWebサーバのサービスポートは80番以外でも可能となるため、ポートスキャンを受けないような番号に変更することもできます。

Squidの起動とリバースプロキシの動作確認

 Squidの設定が終わったらSquidを起動し、動作を確認します。

# /etc/init.d/squid start
起動スクリプトがある場合
# /usr/local/squid/sbin/squid
起動スクリプトがない場合

 WebブラウザでSquidサーバにアクセスし、表示を確認します。Apacheのアクセスログも併せて確認します。リバースプロキシを利用した場合、Apacheのアクセスログに記録されるクライアントアドレスは、リバースプロキシサーバのアドレスになります。クライアントのアクセス記録はSquid側に記録されることに注意しましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る