構築/Linux サーバ/Web Server/2.a apache(with mod proxy balancer)によるロードバランサ構築(L7)

提供: スゴイようぃっきー!

構築 / Linux サーバ / Web Server / 2.a apache(with mod_proxy_balancer)によるロードバランサ構築(L7)



目次

概要

  • apache を利用したプロキシバランサーを構築する。

前提条件

httpd.confのグローバル設定

ServerTokensをオフ

ServerTokens Prod

KeepAliveをオン

KeepAlive On

必要ではないモジュールをロードしないようにコメントアウト

#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule logio_module modules/mod_logio.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule version_module modules/mod_version.so

virtual host のconfをincldeするように指定

Include conf/vhosts/*.conf

各リクエストに対して拡張ステータス情報を保存するように変更

ExtendedStatus On

ServerSignature をオフ

ServerSignature Off

icon関係をコメントアウト

#Alias /icons/ "/var/www/icons/"
#Directory "/var/www/icons">
#    Options Indexes MultiViews
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#</Directory>

dav関係をコメントアウト

#<IfModule mod_dav_fs.c>
#    # Location of the WebDAV lock database.
#    DAVLockDB /var/lib/dav/lockdb
#</IfModule>

cgi-binエイリアスをコメントアウト

#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
#Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>

LanguagePriorityではjaを一番優先に変更

LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW

webサーバ用proxyとsquidのcacheサーバのロードバランス設定

proxy_balancer用の設定記述

[root@Sulu-pb01 ~]# vi /etc/httpd/conf.d/proxy_balancer_def.conf
ProxyPreserveHost On
ProxyRequests Off

<Proxy balancer://appsrvcluster>
        BalancerMember http://192.168.3.121 loadfactor=10
        BalancerMember http://192.168.3.122 loadfactor=10
</Proxy>

<Proxy balancer://squidsrvcluster>
        BalancerMember http://192.168.3.141 loadfactor=10
        BalancerMember http://192.168.3.142 loadfactor=10
</Proxy>
  • ProxyPreserveHost On
    バランス先のアプリサーバがhost名を認識できるように、host名をアプリサーバへ送る設定をonにする。
  • balancer://appsrvcluster という名前でバランシングするwebサーバを宣言
  • balancer://squidsrvcluster という名前でバランシングするcacheサーバを宣言

vhostでのconf設定

  • ローカルの設定(バランシング無し)
    /etc/httpd/conf/vhosts/localhost.conf
NameVirtualHost *:80

# Virtual host Default Virtual Host
<VirtualHost _default_:80>
        ServerName 192.168.3.111
        DirectoryIndex  index.html index.php
        DocumentRoot /var/www/html/
        <Location />
                Order deny,allow
                Deny from all
                Allow from 192.168.3
        </Location>
        <Location /server-status>
                SetHandler server-status
        </Location>
        <Location /server-info>
                SetHandler server-info
        </Location>
        <Location /balancer-manager>
                SetHandler balancer-manager
        </Location>
        CustomLog /var/www/logs/localhost/localhost/access_log combined
        ErrorLog "/var/www/logs/localhost/localhost/error_log"
</VirtualHost>
  • sugoiyo.comの設定(バランシング有り)
    /etc/httpd/conf/vhosts/sugoiyo.com-sugoiyo.com.conf
# Virtual host sugoiyo.com
<VirtualHost *:80>
        ServerName sugoiyo.com
        DirectoryIndex  index.html index.php
        DocumentRoot /var/www/html/

        # LAN以外のアクセスは全てsquidサーバを通す
        RewriteEngine On
        RewriteCond %{REMOTE_ADDR} !^192\.168\.3\.\d+$
        RewriteRule ^/(.*) balancer://squidsrvcluster/$1 [L,P,QSA]

        ProxyPass / balancer://appsrvcluster/

        CustomLog /var/www/logs/www.sugoiyo.com/sugoiyo.com/access_log combined
        ErrorLog "/var/www/logs/www.sugoiyo.com/sugoiyo.com/error_log"
</VirtualHost>

lvsとの連携

lvsが受けているVIPを自身のものとして応答させるために、web server側に以下のコマンドを実行する。

service iptables start
iptables -t nat -A PREROUTING -p tcp -d 192.168.3.100 -j REDIRECT
/etc/init.d/iptables save
chkconfig --level 3 iptables on

死活監視用のhtmlを配置する

echo "web 1" > /var/www/html/test.html


prev | 2.a apache(with mod_proxy_balancer)によるロードバランサ構築(L7) | next


個人用ツール
Google AdSense