構築/Linux サーバ/Web Server/2.a apache(with mod proxy balancer)によるロードバランサ構築(L7)
提供: スゴイようぃっきー!
構築 / Linux サーバ / Web Server / 2.a apache(with mod_proxy_balancer)によるロードバランサ構築(L7)
目次 |
概要
- apache を利用したプロキシバランサーを構築する。
前提条件
- 構築/Linux サーバ/Web Server/1. 共通にて構築したCentOS 5.4 を利用する。
httpd.confのグローバル設定
- ProxyPreserveHostとProxyディレクティブがミソ
ViewVCで差分を確認できます
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
