Haproxy安裝與配置

一、Haproxy概念                                              

 Haproxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。Haproxy特別適用於那些負載特大的web站點,這些站點通常又需要會保持或七

處理。Haproxy運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很   簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。                              

二、安裝Haproxy                                                 

# mkdir /usr/local/haproxy
# tar zxvf haproxy-1.5.3.tar.gz
# cd haproxy-1.5.3
# make TARGET=linux2628 PREFIX=/usr/local/haproxy
# make install PREFIX=/usr/local/haproxy
# mkdir /etc/haproxy
# cp examples/haproxy.cfg /etc/haproxy/
# groupadd -g 1001 haproxy
# useradd -g haproxy haproxy -s /sbin/nologin

三、配置Haproxy                                                 

    Haproxy配置中分成五部分內容,當然這些組件不是必選的,可以根據需要選擇作爲配置。

    global:參數是進程級的,通常和操作系統(OS)相關。這些參數一般只設置一次,如果配置無誤,就不需要再次  配置進行修改;

    default:配置默認參數的,這些參數可以被利用配置到frontend,backend,listen組件;

    frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用後端的backend(可動態選擇);

    backend:後端服務集羣的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器;

    listen:Frontend和Backend的組合體。

    編寫haproxy.cfg文件:


# vi /etc/haproxy/haproxy.cfg      # 兩節點配置一致
global 
    log 127.0.0.1  local0            #日誌輸出配置,所有日誌都記錄在本機,通過local0輸出
    log 127.0.0.1 local1 notice           
    #log loghost  local0 info  
    maxconn 51200                    #最大連接數
    chroot /usr/local/haproxy        #改變當前工作目錄。
    pidfile /var/run/haproxy.pid 
    uid haproxy  
    gid haproxy  
    daemon         #以後臺程序運行
    #quiet  
    nbproc 1       #進程數  
      
defaults  
    log global 
    mode http          #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK  
    retries 3          #兩次連接失敗就認爲是服務器不可用,也可以通過後面設置
    option  httplog                        #日誌類別,採用httplog
    option  dontlognull    
    #option redispatch     #當serverId對應的服務器掛掉後,強制定向到其他健康的服務器  
    #option abortonclose   #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接 
    maxconn 20000          #默認的最大連接數
    timeout connect 5000ms #連接超時  
    timeout client 30000ms #客戶端超時  
    timeout server 30000ms #服務器超時  
    timeout check 2000    #心跳檢測超時       
  
listen admin_stats  
    bind 0.0.0.0:8888 #監聽端口 
    stats enable       #開啓統計頁面功能 
    option httplog    #採用http日誌格式  
    stats refresh 10s #統計頁面自動刷新時間  
    stats uri /stats  #統計頁面url  
    stats realm Haproxy Manager #統計頁面密碼框上提示文本  
    stats auth admin:123456 #統計頁面用戶名和密碼設置,開啓登錄驗證功能  
    stats admin if TRUE #若登錄用戶驗證通過,則賦予管理功能
    stats hide-version #隱藏統計頁面上HAProxy的版本信息 
    
  listen web *:88
   option  httpclose    #每次請求完畢後主動關閉http通道,ha-proxy不支持keep-alive,只能模擬這種模式的實現  
   option  forwardfor   #如果後端服務器需要獲得客戶端真實ip需要配置的參數,可以從Http Header中獲得客戶端ip  
   balance roundrobin   #負載均衡算法
   #option httpchk HEAD /index.php HTTP/1.0    #啓用HTTP協議檢查服務器監控狀態,在web服務器上分別建立index.html頁面,可以添加不同的內容,給待會測試用,內容分別填寫100:80,150:8080,200:8080好了,如果沒有,haproxy會認爲對應的web服務器掛掉了。
   server web1 192.168.1.101:8080 cookie 100 check inter 5000 fall 1 rise 2        
   server web2 192.168.1.102:8080 cookie 150 check inter 5000 fall 1 rise 2
   ##server 服務器定義:cookie 表示server id;check inter 2000 是檢測心跳頻率;rise 2 是2次正確認爲服務器可用;fall 5 是5次失敗認爲服務器不可用;weight 代表權重
   
 附:這裏還說一下啊,HAProxy的算法現在也越來越多了,具體有如下8種: 
①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的; 
②static-rr,表示根據權重,建議關注; 
③leastconn,表示最少連接者先處理,建議關注; 
④source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似,我們用其作爲解決session問題的一種方法,建議關注; 
⑤ri,表示根據請求的URI; 
⑥rl_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name; 
⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求; 
⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

四、通過腳本來啓動與關閉haproxy                                       

  1、編寫haproxy腳本 

# vi /etc/rc.d/init.d/haproxy
#!/bin/bash  
BASE_DIR="/var/run"  
ARGV="$@"  
 
start()  
{  
echo "START HAPoxy SERVERS"  
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg  
}  
 
stop()  
{  
echo "STOP HAPoxy Listen"  
kill -TTOU $(cat $BASE_DIR/haproxy.pid)  
echo "STOP HAPoxy process"  
kill -USR1 $(cat $BASE_DIR/haproxy.pid)  
}  
case $ARGV in  
 start)  
start  
ERROR=$?  
;;  
 
stop)  
stop  
ERROR=$?  
;;  
 
restart)  
stop  
start  
ERROR=$?  
;;  
 
*)  
echo "hactl.sh [start|restart|stop]"  
esac  
exit $ERROR

   2、讓腳本隨系統自動啓動

# chmod +x /etc/rc.d/init.d/haproxy 
# chkconfig --add haproxy

haproxy does not support chkconfig
----解決上面的問題的辦法是在/etc/rc.d/init.d/haproxy中添加下面兩行到#!/bin/bash之後
# vi /etc/rc.d/init.d/haproxy
#!/bin/bash  
#chkconfig: 2345 10 90
#description:haproxy
 


----其中2345是默認啓動級別,級別有0-6共7個級別。----等級0表示:表示關機----等級1表示:單用戶模式----等級2表示:無網絡連接的多用戶命令行模式----等級3表示:有網絡連接的多用戶命令行模式----等級4表示:不可用----等級5表示:帶圖形界面的多用戶模式----等級6表示:重新啓動----10是啓動優先級,90是停機優先級,優先級範圍是0-100,數字越大,優先級越低。

    3、啓動與停止haproxy                                                                                                            

# service haproxy stop
STOP HAPoxy Listen
STOP HAPoxy process
# ps -ef |grep haproxy |grep -v grep
# service haproxy start
START HAPoxy SERVERS
# ps -ef |grep haproxy |grep -v grep
root     11259     1  0 15:33 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg


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