HAProxy的安裝及配置

軟件負載均衡一般通過兩種方式來實現:基於操作系統的軟負載實現和基於第三方應用的軟負載實現。LVS就是基於Linux操作系統實現的一種軟負載,HAProxy就是開源的並且基於第三應用實現的軟負載。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章