1、LVS在企業應用中抗負載能力很強,但存在不足
LVS不支持正則處理,不能實現動靜分離(nginx都支持)
對於大型網站,LVS的實施配置複雜,維護成本相對較高
2、Haproxy是一款可提供高可用性、負載均衡、及基於TCP和HTTP應用的代理的軟件
適用於負載大的Web站點
運行在硬件上可支持數以萬計的併發連接的連接請求
Haproxy支持多種調度算法,最常用的有三種
第一種(R算法):
R算法是最簡單最常用的一種算法,即輪詢調度
理解舉例
有三個節點A、B、C,第一個用戶訪問會被指派到節點A,第二個用戶訪問會被指派到節點B,第三個用戶訪問會被指派到C節點
第四個用戶訪問繼續指派到節點A,輪詢分配訪問請求實現負載均衡效果
第二種(LC算法):
LC算法即最小連接數算法,根據後端的節點連接數大小動態分配前端請求
理解舉例
有三個節點A、B、C,各節點的連接數分別爲A:4、B:5、C:6,此時如果有第一個用戶連接請求,會被指派到A上,連接數變爲A:5、B:5、C:6
第二個用戶請求會繼續分配到A上,連接數變爲A6、B:5、C:6;再有新的請求會分配給B,每次將新的請求指派給連接數最小的客戶端
由於實際情況下A、B、C的連接數會動態釋放,很難會出現一樣連接數的情況,因此此算法相比較rr算法有很大改進,是目前用到比較多的一種算法
第三種(SH):
SH即基於來源訪問調度算法,此算法用於一些有 Session會話記錄在服務器端的場景,可以基於來源的IP、Cookie等做集羣調度(上一次請求分給哪個web服務器的下次還是分給該服務器)
理解舉例
有三個節點A、B、C,第一個用戶第一次訪問被指派到了A,第二個用戶第次訪問被指派到了B
當第一個用戶第二次訪問時會被繼續指派到A,第二個用戶第二次訪問時依舊會被指派到B,只要負載均衡調度器不重啓,第一個用戶訪問都會被指派到A,第二個用戶訪問都會被指派到B,實現集羣的調度
此調度算法好處是實現會話保持,但某些IP訪問量非常大時會引起負載不均衡,部分節點訪問量超大,影響業務使用
3.1、Haproxy配置文件通常分爲三個部分
● global:全局配置
● defaults:默認配置
● listen:應用組件配置
3.2、global配置參數
●log127.0.0.1 lcal0:配置日誌記錄,local0爲日誌設備,默認存放到系統日誌
●log127.0.0.1 loca1 notice:notice爲日誌級別,通常有24個級別
●maxconn4096:最大連接數
●uid 99:用戶uid
●gid 99:用戶gid
3.3、defaults配置項配置默認參數
一般會被應用組件繼承,如果在應用組件中沒有特別聲明,將安裝默認配置參數設置
●log global:定義日誌爲global配置中的日誌定義
●mode http:模式爲http
●option httplog:採用http日誌格式記錄日誌
●retries 3:檢查節點服務器失敗連續達到三次則認爲節點不可用
●maxconn2000:最大連接數
●contimeout5000:連接超時時間
●clitimeout50000:客戶端超時時間
●srvtimeout50000:服務器超時時間
3.4、listen配置項目一般爲配置應用模塊參數
●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:定義備份節點