HAProxy : HTTP を負荷分散2016/01/07 |
HAProxy によるロードバランサーの構築です。
ここでは以下のような環境を例に設定します。 | -------+----------------------------------------------- | +-------------------+--------------------+ |10.0.0.30 |10.0.0.31 |10.0.0.32 +-----+-----+ +-------+------+ +-------+------+ | Frontend | | Backend#1 | | Backend#2 | | HAProxy | | Web Server | | Web Server | +-----------+ +--------------+ +--------------+ |
HAProxy をインストールした Frontend サーバーへの HTTP 通信を Backend#1, Backend#2 の
Webサーバーへ負荷分散するように設定します。
|
|
[1] | HAProxy をインストールします。 |
root@dlp:~# apt-get -y install haproxy
|
[2] | HAProxy の設定です。 |
root@dlp:~# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
root@dlp:~#
vi /etc/haproxy/haproxy.cfg # 新規作成 global # ログの出力先とログレベル log 127.0.0.1 local2 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid # プロセス毎の最大接続数 maxconn 256 # 実行ユーザー/グループ user haproxy group haproxy # デーモンとして起動 daemon defaults # レイヤー7で負荷分散 mode http # ログ設定は global を継承 log global # HTTP リクエストログ取得 option httplog # バックエンドが応答しない場合のタイムアウト時間 timeout connect 10s # クライアントサイドのタイムアウト時間 timeout client 30s # サーバーサイドのタイムアウト時間 timeout server 30s # フロントエンドを定義 ( http-in の箇所は任意の名前 ) frontend http-in # 80ポートで待ち受け bind *:80 # デフォルトのバックエンドを定義 default_backend backend_servers # X-Forwarded-For ヘッダーを渡す option forwardfor # バックエンドを定義 backend backend_servers # ラウンドロビンで負荷分散 balance roundrobin # バックエンドサーバーを定義 server www01 10.0.0.51:80 check server www02 10.0.0.52:80 check sed -i -e "s/^ENABLED=0/ENABLED=1/g" /etc/default/haproxy root@dlp:~# /etc/init.d/haproxy start * Starting haproxy haproxy ...done. |
[3] | 指定したファシリティのログが取得できるように Rsyslog の設定を変更します。 |
root@dlp:~#
vi /etc/rsyslog.conf # 18,19行目:コメント解除, 17行目:追記 $ModLoad imudp $UDPServerRun 514
$AllowedSender UDP, 127.0.0.1
root@dlp:~#
vi /etc/rsyslog.d/50-default.conf # 9行目:以下のように変更して追記 *.*;auth,authpriv.none;local2.none -/var/log/syslog local2.* /var/log/haproxy.logroot@dlp:~# initctl restart rsyslog |
[4] | バックエンド Webサーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
root@node01:~# a2enmod remoteip Enabling module remoteip. To activate the new configuration, you need to run: service apache2 restart
root@node01:~#
vi /etc/apache2/apache2.conf # 206-209行目:以下のように変更 # RemoteIPInternalProxy は HAProxy のIPアドレスを指定
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 10.0.0.30 LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combinedLogFormat " %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
/etc/init.d/apache2 restart * Restarting web server apache2 ...done. |
[5] | 任意のクライアントからフロントエンドサーバーへ HTTP アクセスして動作を確認してください。 |
Sponsored Link |