1.
下載安裝HAproxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
tar zxvf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux2628 PREFIX=/usr/local/haprpxy ##根據內核版本選擇TARGET
make install PREFIX=/usr/local/haproxy
|
2.
設定HAproxy配置文件
cd /usr/local/haproxy
vi haproxy.cfg
global
log 127.0.0.1 local0
#log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/local/haproxy
uid 99 #所屬運行的用戶uid
gid 99 #所屬運行的用戶組
daemon #之後臺形式運行haproxy
nbproc 1 #啓動1個haproxy實例
pidfile /usr/local/haproxy/haproxy.pid #將全部進程寫入pid文件
#debug
#quiet
defaults
log global
log 127.0.0.1 local3 #日誌文件的輸出定向
mode http #所處理的類別,默認採用http模式,可配置成tcp做4層消息轉發
option httplog #日誌類別
option httpclose #每次請求完畢後主動關閉http通道,haproxy不支持keep-alive,只能模擬這種模式的實現
option dontlognull
option forwardfor #若是後端服務器須要得到客戶端真實ip須要配置的參數,能夠從Http Header中得到客戶端ip
option redispatch #當serverid對應的服務器掛掉後,強制定向到其餘健康服務器
retries 2 #2次鏈接失敗就認爲服務器不可用,主要經過後面的check檢查
maxconn 2000
balance roundrobin #負載均衡算法
stats uri /haproxy-stats #haproxy 監控頁面的訪問地址
# 可經過 http://localhost:80/haproxy-stats 訪問
contimeout 5000 #鏈接超時時間
clitimeout 50000 #客戶端鏈接超時時間
srvtimeout 50000 #服務器端鏈接超時時間
listen localhost 0.0.0.0:80 #運行的端口及主機名
mode http
option httpchk GET /index.html #健康檢測
server s1 192.168.148.110:80 weight 3 check #後端的主機 IP &權衡
server s2 192.168.148.110:8080 weight 3 check #後端的主機 IP &權衡
server s3 192.168.148.110:8081 weight 3 check #後端的主機 IP &權衡
|
也可採用先後臺的配置模式
frontend web_vs #前臺
bind 192.168.148.100:80
mode http
option httplog
log global
default_backend web_pool #靜態服務器池
backend web_pool #後臺
balance leastconn #負載均衡算法
option httpchk HEAD /index.html HTTP/1.0 #健康檢查
server s1 192.168.148.110:80 cookie 1 weight 1 check inter 5s rise 2 fall 3
server s2 192.168.148.110:8080 cookie 1 weight 1 check inter 5s rise 2 fall 3
server s3 192.168.148.110:8081 cookie 1 weight 1 check inter 5s rise 2 fall 3
#cookie 1表示serverid爲1,check inter 5s 是檢測心跳頻率
#rise 2是成功2次認爲服務器可用,fall 3是失敗3次認爲服務器不可用,weight表明權重
|
3.
啓動和中止服務
##啓動
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
##重啓
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/run/haproxy.pid`
##中止
Killall haproxy
|
4.
設定haproxy啓動文件
vi /etc/rc.d/init.d/haproxy
#! /bin/sh
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/haproxy.cfg
PIDFILE=$PROGDIR/run/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -n "Starting $DESC: $PROGNAME"
$DAEMON -f $CONFIG
echo "."
}
stop()
{
echo -n "Stopping $DESC: $PROGNAME"
haproxy_pid=$(cat $PIDFILE)
kill -15 $haproxy_pid
echo "."
}
restart()
{
echo -n "Restarting $DESC: $PROGNAME"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
chmod u+x /etc/init.d/haproxy
|
5.
在rsyslog.conf中開啓udp 514的日誌收集
vi /etc/rsyslog.conf
取消如下兩行的註釋
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 51
新增如下條目
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
重啓rsyslog服務
/etc/init.d/rsyslog restart
查看haproxy.log
tail -f /var/log/haproxy.log
|
6.
查看HAproxy的監控頁面
http://192.168.148.100/haproxy-stats
參考資料