HAproxyインストールメモ


CentOS6.5にHAProxyをインストールするメモです。

*参考資料*
L7ロードバランサHaproxyを使う（その２ 設定から起動）
[http://koexuka.blogspot.jp/2013/11/l7haproxy.html](http://koexuka.blogspot.jp/2013/11/l7haproxy.html)

L7ロードバランサHaproxyを使う（その３ syslogの設定とコマンドラインツール）
[http://koexuka.blogspot.jp/2013/11/l7haproxy-syslog.html](http://koexuka.blogspot.jp/2013/11/l7haproxy-syslog.html)

　


```haproxy-install.txt
#*********************************************************************
# haproxy
#*********************************************************************
cd /usr/local/src
curl -L -o haproxy-1.5.3.tar.gz http://www.haproxy.org/download/1.5/src/haproxy-1.5.3.tar.gz
tar zxvf haproxy-1.5.3.tar.gz
cd haproxy-1.5.3

make TARGET=linux26

make install

mkdir -p /var/run/haproxy

cp examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
vim /etc/init.d/haproxy
-----------------------------
:%s;/usr/sbin;/usr/local/sbin;g
-----------------------------


vi /etc/logrotate.d/haproxy
-----------------------------
/var/log/haproxy/haproxy.log {
  missingok
  notifempty
  sharedscripts
  postrotate
  /etc/init.d/haproxy reload > /dev/null 2>/dev/null || true
  endscript
}
-----------------------------

groupadd haproxy
useradd -s /sbin/nologin haproxy -g haproxy


mkdir -p /etc/haproxy
cp -p examples/haproxy.cfg /etc/haproxy/.


# http://koexuka.blogspot.jp/2013/11/l7haproxy.html
vi /etc/haproxy/haproxy.cfg
-----------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # ログの出力 
    log         127.0.0.1 local6 debug
 
    # pidファイルのパス
    pidfile     /var/run/haproxy.pid
 
    # 1プロセスに対する最大接続数
    maxconn     4096
 
    # 実行ユーザとグループ
    user        haproxy
    group       haproxy
 
    # 起動プロセスはバックグラウンドで動作します。。
    daemon
 
    # 起動するプロセス数。公式には'1'のままで良いとのことですが、16コアCPUだと4くらいが最もパフォーマンスが出た。。
    nbproc 1
  
   # プロセスごとの最大ファイルディスクリプタを設定。書かなくても自動で設定されるらしい。
    ulimit-n 12000
 
    # 統計情報が見れる。
    stats socket /var/run/haproxy/stats.socket uid 105 gid 105


#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will 
# use if not designated in their block
#---------------------------------------------------------------------
defaults
   # L7でロードバランス。'mode tcp'とすればTCPレベル（L4）でロードバランスするので処理速度の向上が見込める。
    mode        http 
 
    # globalセクションでの設定が引き継がれる。
    log         global
  
    # ヘルスチェックのログを書き出す。
    option      log-health-checks
 
    # backendサーバに接続できない時のタイムアウト秒数（ミリ秒）
    # default 10 second time out if a backend is not found
    timeout connect 10000

    # クライアントサイドでのタイムアウト秒数。' timeout server 'と同じ値が推奨とのこと。
    timeout client  30000

    # サーバサイドのタイムアウト秒数
    timeout server  30000
 
    # 接続に失敗した際のリトライ回数
    retries     3



# 8088ポートで待受ける
# http://example.com/haproxy?hastats
listen hastats *:8088
    mode http
    maxconn 64
    timeout connect 5000
    timeout client 10000
    timeout server 10000
    stats enable
    stats show-legends
    stats uri /haproxy?hastats
 
    # IDとパスワード
    stats auth admin:adminadmin



# 80番ポートで待ち受ける。
frontend  all 0.0.0.0:80
 
    # デフォルトのバックエンドは app を使う。
    default_backend      app

 
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
# app というバックエンドサーバ群
backend app

    # source ipで振り分け
    balance     source

    # ラウンドロビンで振り分け。
    #balance     roundrobin
 
    # サーバは以下の台数負荷分散される。 weight '数値' とすることで振り分けの比重を設定できる。
    server  app1 127.0.0.1:8080 check

-----------------------------


# haproxy状態を確認するコマンドラインツール
yum install --enablerepo=epel socat

/etc/init.d/haproxy restart


// 一般的な情報を出力
echo "show info" | socat unix-connect:/var/run/haproxy/stats.socket stdio
 
// エラー情報を出力
echo "show errors" | socat unix-connect:/var/run/haproxy/stats.socket stdio
 
// 統計情報を出力
echo "show stats" | socat unix-connect:/var/run/haproxy/stats.socket stdio





# log設定
vi /etc/rsyslog.conf

-----------------------------
#$ModLoad imudp
#$UDPServerRun 514
↓↓↓
$ModLoad imudp
$UDPServerRun 514
-----------------------------
/etc/init.d/rsyslog restart


mkdir -p /etc/rsyslog.d

vi /etc/rsyslog.d/haproxy.conf
-----------------------------
$ModLoad imudp
$UDPServerRun 514
$template Haproxy,"%msg%\n"
local6.=info -/var/log/haproxy/haproxy.log;Haproxy
local6.notice -/var/log/haproxy/admin.log;Haproxy
# don't log anywhere else
local6.* ~
-----------------------------
```