CentOS 6
Sponsored Link

HAProxy : HTTP を負荷分散
2015/01/22
 
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 ~]#
yum -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.31:80 check
    server             www02 10.0.0.32:80 check
    
[root@dlp ~]#
/etc/rc.d/init.d/haproxy start

Starting haproxy:   [ OK ]
[root@dlp ~]#
chkconfig haproxy on

[3] 指定したファシリティのログが取得できるように Rsyslog の設定を変更します。
[root@dlp ~]#
vi /etc/rsyslog.conf
# 13,14行目:コメント解除, 15行目:追記

$ModLoad imudp
$UDPServerRun 514
$AllowedSender UDP, 127.0.0.1
# 42行目:以下のように変更

*.info;mail.none;authpriv.none;cron.none
,local2.none
  /var/log/messages
local2.*                                                                      /var/log/haproxy.log

[root@dlp ~]#
/etc/rc.d/init.d/rsyslog restart

[4] バックエンド Webサーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。
[root@www ~]#
vi /etc/httpd/conf/httpd.conf
# 497行目:変更

LogFormat "
\"%{X-Forwarded-For}i\"
%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
[root@www ~]#
/etc/rc.d/init.d/httpd restart

[5] 任意のクライアントからフロントエンドサーバーへ HTTP アクセスして動作を確認してください。
 
Tweet