AProxy 能夠作負載均衡,同時還可對服務器健康檢測,有 down 機的自動中止分發,當服務器正常後,又自動均衡到剛死過的服務器。以前用
nginx ,現試用下 haproxy 。
安裝:
- cd /home/chenlb
- wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.15.7.tar.gz
- tar -zxvf haproxy-1.3.15.7.tar.gz
- cd haproxy-1.3.15.7
- make TARGET=linux26 PREFIX=/home
- make install PREFIX=/home
-
- cd /home/haproxy
- vi haproxy.cfg
建立/修改配置haproxy.cfg:
- global
- log 127.0.0.1 local0
-
-
- maxconn 4096
- chroot /home/haproxy
- uid 99
- gid 99
- daemon
- nbproc 1
- pidfile /home/haproxy/logs/haproxy.pid
-
-
-
- defaults
- log 127.0.0.1 local3
- mode http
- option httplog
- option httpclose
- option dontlognull
- option forwardfor
- option redispatch
- retries 2
- maxconn 2000
- balance roundrobin
- stats uri /haproxy-stats
- contimeout 5000
- clitimeout 50000
- srvtimeout 50000
-
- listen web_proxy 0.0.0.0:1080
- option httpchk GET /ping.jsp
-
- server s1 192.168.0.101:8080 weight 3 check
-
- server s3 192.168.0.103:8080 weight 3 check
啓動 haproxy:
sbin/haproxy -f haproxy.cfg
haproxy 192.168.0.100 分發到 192.168.0.101, 192.168.0.103 (故意down掉)。
能夠打開 stats 看,http://192.168.0.100:1080/haproxy-stats, 如:
haproxy balance stats, 點擊放大
若是修改 haproxy.cfg 配置,想重啓 haproxy 用 kill -HUP `cat logs/haproxy.pid` 是不行的。必須使用 -sf 或 -st 參數,如:
sbin/haproxy -f haproxy.cfg -st `cat logs/haproxy.pid `
#./haproxy –help //haproxy相關命令參數介紹.
haproxy -f <配置文件> [-n 最大併發鏈接總數] [-N 每一個偵聽的最大併發數] [-d] [-D] [-q] [-V] [-c] [-p] [-s] [-l] [-dk] [-ds] [-de] [-dp] [-db] [-m <內存限制M>] [{-sf|-st} pidlist...]
-d 前臺,debug模式
-D daemon模式啓動
-q 安靜模式,不輸出信息
-V 詳細模式
-c 對配置文件進行語法檢查
-s 顯示統計數據
-l 顯示詳細統計數據
-dk 不使用kqueue
-ds 不使用speculative epoll
-de 不使用epoll
-dp 不使用poll
-db 禁用後臺模式,程序跑在前臺
-sf 程序啓動後向pidlist裏的進程發送FINISH信號,這個參數放在命令行的最後
-st 程序啓動後向pidlist裏的進程發送TERMINATE信號,這個參數放在命令行的最後
但配置後,死活不會輸出日誌,還沒找到解決方法,網上有些,但行不通:
syslog.conf里加一行
local3.* /var/log/haproxy.log
# killall -HUP syslogd 重啓 syslogd
# touch /var/log/haproxy.log
# chmod 777 /var/log/haproxy.log
# tail –f /var/log/harpoxy.log 監控日誌
# ./haproxy -f haproxy.cfg 啓動服務.