Haproxy安裝及配置(轉)

來源:互聯網
上載者:User

標籤:des   blog   http   使用   os   io   檔案   for   

1.安裝

# wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

# tar zcvf haproxy-1.3.20.tar.gz

# cd haproxy-1.3.20

# make TARGET=linux26 PREFIX=/usr/local/haproxy                                #將haproxy安裝到/usr/local/haproxy

# make install PREFIX=/usr/local/haproxy

2.配置

安裝完畢後,進入安裝目錄設定檔,預設情況下目錄裡是沒有.cfg設定檔的,可以回到安裝檔案目錄下將examples下的haproxy.cfg拷貝到usr/local/haproxy下。

# cd /usr/local/haproxy

# vi haproxy.cfg

 

 預設檔案內容如下: # this config needs haproxy-1.1.28 or haproxy-1.2.1  globallog 127.0.0.1 local0log 127.0.0.1 local1 notice#log loghost local0 infomaxconn 4096chroot /usr/share/haproxyuid 99gid 99daemon#debug#quiet defaultslog globalmode httpoption httplogoption dontlognullretries 3redispatchmaxconn 2000contimeout 5000clitimeout 50000srvtimeout 50000 listen appli1-rewrite 0.0.0.0:10001cookie SERVERID rewritebalance roundrobinserver app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2  fall 5server app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2  fall 5server app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2  fall 5server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2  fall 5 listen appli2-insert 0.0.0.0:10002option httpchkbalance roundrobincookie SERVERID insert indirect nocacheserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3capture cookie vgnvisitor= len 32 option httpclose # disable keep-aliverspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address listen appli3-relais 0.0.0.0:10003dispatch 192.168.135.17:80 listen appli4-backup 0.0.0.0:10004option httpchk /index.htmloption persistbalance roundrobinserver inst1 192.168.114.56:80 check inter 2000 fall 3server inst2 192.168.114.56:81 check inter 2000 fall 3 backup listen ssl-relay 0.0.0.0:8443option ssl-hello-chkbalance sourceserver inst1 192.168.110.56:443 check inter 2000 fall 3server inst2 192.168.110.57:443 check inter 2000 fall 3server back1 192.168.120.58:443 backup listen appli5-backup 0.0.0.0:10005option httpchk *balance roundrobincookie SERVERID insert indirect nocacheserver inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3server inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3server inst3 192.168.114.57:80 backup check inter 2000 fall 3capture cookie ASPSESSION len 32srvtimeout 20000 option httpclose # disable keep-aliveoption checkcache # block response if set-cookie & cacheable rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address errorloc 502 http://192.168.114.58/error502.htmlerrorfile 503 /etc/haproxy/errors/503.http  

根據實際需求,更改設定檔,我的配置如下

global           #全域設定

       log 127.0.0.1   local0      #日誌輸出配置,所有日誌都記錄在本機,通過local0輸出

       #log loghost    local0 info

       maxconn 4096             #最大串連數

       chroot /usr/local/haproxy

       uid 99                   #所屬啟動並執行使用者uid

       gid 99                   #所屬啟動並執行使用者組

       daemon                   #以後台形式運行haproxy

       nbproc 2                 #啟動2個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       #日誌類別,採用httplog

       option  dontlognull  

       option  forwardfor   #如果後端伺服器需要獲得用戶端真實ip需要配置的參數,可以從Http Header中獲得用戶端ip

       option  httpclose    #每次請求完畢後主動關閉http通道,haproxy不支援keep-alive,只能類比這種模式的實現

       retries 3           #3次串連失敗就認為伺服器不可用,主要通過後面的check檢查

       option  redispatch   #當serverid對應的伺服器掛掉後,強制定向到其他健康伺服器

       maxconn 2000                     #最大串連數

stats   uri     /haproxy-admin  #haproxy 監控頁面的訪問地址

       contimeout      5000            #連線逾時時間

       clitimeout      50000           #用戶端連線逾時時間

       srvtimeout      50000           #伺服器端連線逾時時間

 

stats auth  Frank:Frank   #設定監控頁面的使用者和密碼:Frank

 

stats hide-version         #隱藏統計頁面的HAproxy版本資訊



frontend http-in                        #前台

       bind *:80

       mode    http

       option  httplog

       log     global

       default_backend htmpool       #靜態伺服器集區

 

backend htmpool                    #後台

       balance leastconn#負載平衡演算法

       option  httpchk HEAD /index.htm HTTP/1.0       #健全狀態檢查

       server  web1 10.16.0.9:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3

       server  web2 10.16.0.10:8085 cookie 2 weight 3 check inter 2000 rise 2 fall 3

 

#cookie 1表示serverid為1,check inter 1500 是檢測心跳頻率

 

 #rise 2是2次正確認為伺服器可用,fall 3是3次失敗認為伺服器不可用,weight代表權重

 

3.加上日誌支援

# vim /etc/syslog.conf

在最下邊增加
local3.*         /var/log/haproxy.log
local0.*         /var/log/haproxy.log

 

#vim /etc/sysconfig/syslog

修改: SYSLOGD_OPTIONS="-r -m 0"

重啟Log Serviceservice syslog restart

 

4.設定開機啟動

為了方便系統在開機時載入,還可以建立啟動指令碼:
# vim /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/$PROGNAME.conf
PIDFILE=$PROGDIR/$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 $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 +x /etc/rc.d/init.d/haproxy

就可以使用 service haproxy start|stop|restart 來控***務的啟動停止跟重啟。
並通過以下命令載入到開機服務啟動列表
# chkconfig --add haproxy

 

5.啟動服務

啟動服務:
# /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/logs/haproxy.pid`  (沒有換行)

停止服務:
# killall haproxy

 

6.舉例

在瀏覽器中輸入haproxy監控地址:http://10.16.0.246:1080/haproxy-admin,

 

在瀏覽器輸入haproxy設定的對外訪問地址:http://10.16.0.244/,

 

 

 

參考文獻:

http://network.51cto.com/art/201110/295955_1.htm

http://blog.csdn.net/maijian/article/details/6082283

http://blog.sina.com.cn/s/blog_51d3553f0100u1bb.html

http://andrewyu.blog.51cto.com/1604432/647907

http://blog.chinaunix.net/space.php?uid=22600159&do=blog&id=2124188

http://sookk8.blog.51cto.com/455855/579719

http://freehat.blog.51cto.com/1239536/1347882

http://www.cnblogs.com/dkblog/archive/2012/03/13/2393321.html

http://jlsfwq.blog.51cto.com/818700/165617

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.