Search on the blog

2012年1月19日木曜日

サーバー奮闘記(19) Apacheで負荷分散

Apacheのmod_proxy_balancerを使って、負荷分散の実験をしたのでメモを残しておきます。サーバーはUbuntuです。

■できたもの
http://goodpreparations.co.cc/gourmet/main.html

■やったこと
  1. 疑似的に複数のHTTPサーバーが起動しているような環境にするため、3つのVirtualHostを作成してlistenするポートで区別することにした。
  2. Apacheのmod_proxyモジュールを利用し、リバースプロキシが実現できることを確認した。
  3. Apacheのmod_proxy_balancerモジュールを利用して、ロードバランシングが実現できることを確認した。
■設定箇所
1. /etc/apache2/sites-available/defaultの変更箇所
<VirtualHost *:80>
    # not use forward proxy
    ProxyRequests Off

    # simple proxy setting
    # set reverse proxy
    #ProxyPass /gourmet http://183.181.30.44:81/gourmet
    # override http header info(URL) to reverse proxy server
    #ProxyPassReverse /gourmet http://183.181.30.44:81/gourmet

    # load balancing proxy setting
    <Proxy balancer://gourmet>
        BalancerMember http://183.181.30.44:81/gourmet/
        BalancerMember http://183.181.30.44:82/gourmet/
    </Proxy>
    ProxyPass /gourmet balancer://gourmet
    ProxyPassReverse /gourmet balancer://gourmet
</VirtualHost>

<VirtualHost *:81>
    # root directory
    DocumentRoot /home/kenji/gourmet

    <Directory />
        # enable to follow symbolic links, hide contents of directory
        Options FollowSymLinks
        # forbid to override the settings on sub-directories
        AllowOverride None
    </Directory>

    # error log path
    ErrorLog /home/kenji/gourmet/error.log

    # custom log path
    CustomLog /home/kenji/gourmet/access.log combined
</VirtualHost>

<VirtualHost *:82>
    DocumentRoot /home/kenji/gourmet

    <Directory />
        Options FollowSymlinks
        AllowOverride None
    </Directory>

    ErrorLog /home/kenji/gourmet/error2.log

    CustomLog /home/kenji/gourmet/access2.log combined
</VirtualHost>


2. /etc/apache2/ports.confの変更箇所
NameVirtualHost *:80
NameVirtualHost *:81
NameVirtualHost *:82
Listen 80
Listen 81
Listen 82

3. mod_proxy_balancerの有効化
デフォルトでは、mod_proxy_balancerモジュールがアクティブじゃなかったので、下記コマンドを実行して有効にしました。

$ a2enmod proxy_balancer

■その他
sites-available(mod-available)、sites-enabled(mod-enabled)の違いがよく分からなかったので調べました。availableの方には文字通り利用可能なリソースを配置して、enabledでアクティブにしたい設定、またはモジュール(availableの方にあるもの)にシンボリックリンクをはるらしいです。

■参考にしたサイト
1. mod_proxyについて
http://httpd.apache.org/docs/2.1/ja/mod/mod_proxy.html

2. mod_proxy_balancerについて
http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy_balancer.html

3. available、enableの違いについて
http://www.linux.net-japan.info/install08.html

0 件のコメント:

コメントを投稿