Haproxy是目前比較流行的一種群集排程工具,同類群集排程工具有很多,如LVS和Nginx。相比較而言,LVS性能最好,但是搭建相對複雜,Nginx的upstream子產品支援群集功能,但是相對群集節點健康檢查功能不強,性能沒有Haproxy好,更多的是應用在企業内網環境中。
HAProxy雖然名字前有HA,但它并不是一款高可用軟體,而是一款用于實作負載均衡的軟體,可實作四層與七層的負載均衡。
上述幾個web群集排程器屬于軟體類型的,還有很多硬體群集排程器,硬體一般使用比較多的是F5,也有很多公司使用國産的一些産品,如梭子魚、綠盟等。硬體群集排程器有一些比較顯而易見的缺點,如果說出問題了,還要需要廠家的技術支援,廠家維護時還需要我們的錯誤日志,在出現問題到問題解決這段時間,可能一個月的時間都過去了。若是使用軟體型的群集排程器,那麼隻要我們運維人員技術過硬,發現問題到解決問題,很快的。
關于haproxy的常用排程算法,可以參考博文:Haproxy支援的排程算法。
haproxy的詳細配置過程和配置日志記錄,可以參考博文:keepalived+Haproxy搭建高可用Web群集。
這篇博文不談如何配置haproxy,主要來聊一下它的配置檔案說明以及生産環境中的參數調優。
haproxy的配置檔案通常分為三個部分:global、defaults和listen。依次為全局配置、默
認配置、應用元件配置。
global配置:
global log 127.0.0.1 local #配置日志記錄,local0為日志裝置,預設存放到系統日志
log 127.0.0.1 local1 notice #notice為日志級别,通常有24個級别
#log loghost local0 info
maxconn 4096 #最大連接配接數
chroot /usr/share/haproxy #該服務自設定的根目錄,一般需将此行注釋掉
uid 99 #使用者UID
gid 99 #使用者GID
daemon #守護程序模式
defaults配置項配置預設參數,一般會被應用元件繼承,如果在應用元件中沒有特别的聲明,将安裝預設配置參數:
defaults log global #定義日志為global配置中的日志定義
mode http #模式為http
option httplog #采用http日志格式記錄日志
option dontlognull
retries 3 #檢查節點伺服器失敗次數,連續達到三次失敗,則認為節點不可用
redispatch #當伺服器負載很高時,自動結束目前隊列處理比較久的連接配接
maxconn 2000 #最大連接配接數
contimeout 5000 #連接配接逾時時間
clitimeout 50000 #用戶端逾時時間
srvtimeout 50000 #伺服器逾時時間
listen appli4-backup 0.0.0.0:10004 #定義一個名為appli4-backup的應用
option httpchk /index.html #檢查伺服器的index.html檔案
option persist #強制将請求發送到已經down掉的伺服器,一般禁用此選項。
balance roundrobin #負載均衡排程算法使用輪詢算法
server inst1 192.168.114.56:80 check inter 2000 fall 3 #定義線上節點
server inst2 192.168.114.56:81 check inter 2000 fall 3 backup #定義備份節點#注意:在以上定義備份節點的參數中,#“check inter 2000”表示haproxy伺服器和節點之間的一個心跳頻率,#“fall 3”表示連續三次檢測不到心跳頻率則認為該節點失效。#節點配置後帶有“ backup”表示該節點隻是個備份節點,隻有主節點失效該節點才會上。#去除backup,表示為主節點,和其他主節點共同提供服務。