HAProxy : HTTP を負荷分散2016/06/07 |
|
HAProxy によるロードバランサーの構築です。
ここでは以下のような環境を例に設定します。
|
-------+-----------------------------------------------
|
+-------------------+--------------------+
|10.0.0.30 |10.0.0.51 |10.0.0.52
+-----+-----+ +-------+------+ +-------+------+
| 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
systemctl restart haproxy |
| [3] | 指定したファシリティのログが取得できるように Rsyslog の設定を変更します。 |
|
root@dlp:~#
vi /etc/rsyslog.conf # 18,19行目:コメント解除, 17行目:追記 module(load="imudp") input(type="imudp" port="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:~# systemctl restart rsyslog |
| [4] | バックエンド Webサーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
|
root@www01:~# a2enmod remoteip Enabling module remoteip. To activate the new configuration, you need to run: service apache2 restart
root@www01:~#
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
systemctl restart apache2 |
| [5] | 任意のクライアントからフロントエンドサーバーへ HTTP アクセスして動作を確認してください。 |
|
|
| Sponsored Link |
|
|