CentOS6.5にHAProxyをインストールするメモです。
参考資料
L7ロードバランサHaproxyを使う(その2 設定から起動)
http://koexuka.blogspot.jp/2013/11/l7haproxy.html
L7ロードバランサHaproxyを使う(その3 syslogの設定とコマンドラインツール)
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.* ~
-----------------------------