HAProxy相比LVS的使用要簡單很多,功能方面也很豐富。當 前,HAProxy支持兩種主要的代理模式:"tcp"也即4層(大多用於郵件服務器、內部協議通信服務器等),和7層(HTTP)。在4層模式 下,HAProxy僅在客戶端和服務器之間轉發雙向流量。7層模式下,HAProxy會分析協議,並且能通過允許、拒絕、交換、增加、修改或者刪除請求 (request)或者回應(response)裏指定內容來控制協議,這種操作要基於特定規則。
我現在用HAProxy主要在於它有以下優點,這裏我總結下:
一、免費開源,穩定性也是非常好,這個可通過我做的一些小項目可以看出來,單Haproxy也跑得不錯,穩定性可以與LVS相媲美;
二、根據官方文檔,HAProxy可以跑滿10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),這個作爲軟件級負載均衡,也是比較驚人的;
三、HAProxy可以作爲MySQL、郵件或其它的非web的負載均衡,我們常用於它作爲MySQL(讀)負載均衡;
四、自帶強大的監控服務器狀態的頁面,實際環境中我們結合Nagios進行郵件或短信報警,這個也是我非常喜歡它的原因之一;
五、HAProxy支持虛擬主機。
實驗環境:
HAProxy IP:192.168.207.129 Centos5.5-64bit Web1 IP:192.168.207.130 Centos5.5-64bit Web2 IP:192.168.207.131 Centos5.5-64bit
具體安裝及配置文檔如下:
一、HAProxy的下載及安裝過程:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz make TARGET=linux26 prefix=/usr/local/haproxy install cd /usr/local/haproxy mkdir conf cd conf vim haproxy.conf
內容 如下:
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/haproxy
uid 501
gid 501
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
debug
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 192.168.207.129:80
#option httpchk HEAD /index.php HTTP/1.0
server web1_192.168.207.130 192.168.207.130:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2_192.168.207.131 192.168.207.131:80 cookie app1inst2 check inter 2000 rise 2 fall 5
另外,建議配置一個HAProxy的啓動、關閉、重啓腳本,放在/etc/init.d下,我們在平時的工作中應該養成一個習慣,服務器的啓動或重啓應該是最簡單的,萬一到了生產環境下出錯時,我們可以以最快的方式啓動,如果不用腳本的話,我們就要嘗試以如下方式啓動:
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf
以下腳本生成後,我們直接可以用/etc/init.d/haproxy start來啓動HAProxy服務了。
#!/bin/bash BASE_DIR="/usr/local/haproxy" ARGV="$@"
start() { echo "START HAPoxy SERVERS" $BASE_DIR/sbin/haproxy -f $BASE_DIR/conf/haproxy.cfg }
stop() { echo "STOP HAPoxy Listen" kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid) echo "STOP HAPoxy process" kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid) } case $ARGV in
start) start ERROR=$? ;;
stop) stop ERROR=$? ;;
restart) stop start ERROR=$? ;;
*) echo "hactl.sh [start|restart|stop]" esac exit $ERROR
我們在Firefox或IE上輸入http://192.168.207.129 就可以輪詢的看到後端的web的頁面了,另外我們可以隨時監控頁面http://192.168.207.129/haproxy-status/,效果圖如下:
另外,如果要做HAProxy的高可用,我推薦用HAProxy+Keepalived,網上成功的安例也有許多,大家可以googel學習下,如果你對此篇文章有疑問或其它,
轉自:http://network.51cto.com/art/201103/249586.htm