CentOS 6.3 編譯安裝HAproxy 1.4.22

1.         下載安裝HAproxy html

wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz linux

tar zxvf haproxy-1.4.22.tar.gz web

cd haproxy-1.4.22 redis

make TARGET=linux2628 PREFIX=/usr/local/haprpxy  ##根據內核版本選擇TARGET 算法

make install PREFIX=/usr/local/haproxy 後端

 

 

2.         設定HAproxy配置文件 服務器

cd /usr/local/haproxy cookie

vi haproxy.cfg 負載均衡

 

global frontend

        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                         #啓動1haproxy實例

        pidfile /usr/local/haproxy/haproxy.pid  #將全部進程寫入pid文件

        #debug

        #quiet

defaults

        log     global

        log     127.0.0.1       local3        #日誌文件的輸出定向

        mode    http                       #所處理的類別,默認採用http模式,可配置成tcp4層消息轉發

        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表示serverid1check 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

 

 

參考資料

http://www.oschina.net/question/17_8785

http://johnsz.blog.51cto.com/525379/715922

相關文章
相關標籤/搜索