HAProxy

HAProxy 負載均衡實現(xiàn)代理

HAProxy vs Nginx 技術(shù)項目

Nginx vs HAProxy vs LVS 負載平衡器優(yōu)缺點比較

HAProxy提供高可用性、負載均衡以及基于TCP和HTTP應(yīng)用的代理,

支持虛擬主機,它是免費、快速并且可靠的一種解決方案

HAProxy特別適用于那些負載特大的web站點, 這些站點通常又需

要會話保持或七層處理。HAProxy運行在當(dāng)前的硬件上,完全可

以支持?jǐn)?shù)以萬計的并發(fā)連接。并且它的運行模式使得它可以很簡

單安全的整合進您當(dāng)前的架構(gòu)中, 同時可以保護你的web服務(wù)器不

被暴露到網(wǎng)絡(luò)上。

1.7.3? 2017-02-28

1.7? ? 20170403

1.6? ? 20170404

1.5? ? 20161225

1.4? ? 20160314

1.3 ? ? 20160314

1.3.15? 20150201

1.3.14? 20090727

1.2? ? 20080525

1.1? ? 20080525

1.0? ? 20011230

其支持從4層至7層的網(wǎng)絡(luò)交換,即覆蓋所有的TCP協(xié)議。就是說,Haproxy 甚至還支持 Mysql 的均衡負載。。

如果說在功能上,能以proxy反向代理方式實現(xiàn) WEB均衡負載,這樣的產(chǎn)品有很多。包括

Nginx,

Nginx(""engine x"") 是一個高性能的 HTTP 和 反向代理 服務(wù)器,也是一個 IMAP/POP3/SMTP 代理服務(wù)器 。

Nginx是由 Igor Sysoev 為俄羅斯訪問量第二的Rambler.ru 站點開發(fā)的,它已經(jīng)在該站點運行超過四年多了。

Igor 將源代碼以類BSD許可證的形式發(fā)布。自Nginx 發(fā)布四年來,Nginx 已經(jīng)因為它的穩(wěn)定性、豐富的功能集、

示例配置文件和低系統(tǒng)資源的消耗而聞名了。目前國內(nèi)各大門戶網(wǎng)站已經(jīng)部署了Nginx,如新浪、網(wǎng)易、騰訊等;

國內(nèi)幾個重要的視頻分享網(wǎng)站也部署了Nginx,如六房間、酷6等。新近發(fā)現(xiàn)Nginx 技術(shù)在國內(nèi)日趨火熱,越來越

多的網(wǎng)站開始部署Nginx。

ApacheProxy

lighttpd,Cheroke

HAProxy version 1.4.0.3 20100226

但其配置簡單,擁有非常不錯的服務(wù)器健康檢查功能還有專門的系統(tǒng)狀態(tài)監(jiān)控頁面,當(dāng)其代理的后端服務(wù)器出現(xiàn)故障,

HAProxy會自動將該服務(wù)器摘除,

故障恢復(fù)后再自動將該服務(wù)器加入

另外, 版本1.3 是處于活躍開發(fā)階段的版本, 它支持如下新特性:

l? ? ? ? 內(nèi)容交換 : 可以根據(jù)請求(request)的任何一部分 來選擇一組服務(wù)器, 比如請求的 URI , Host頭(header) ,

cookie , 以及其他任何東西. 當(dāng)然,對那些靜態(tài)分離的站點來說,對此特性還有更多的需求。

l? ? ? ? 全透明代理 : 可以用 客戶端IP地址 或者任何其他地址來連接后端服務(wù)器. 這個特性僅在Linux 2.4/2.6內(nèi)

核打了cttproxy 補丁后才可以使用. 這個特性也使得為某特殊服務(wù)器處理部分流量同時又不修改服務(wù)器的地址成為可能。

l? ? ? ? 基于樹的更快的調(diào)度器 : 1.2.16以上的版本要求所有的超時都設(shè)成同樣的值以支持?jǐn)?shù)以萬計的全速連接.

這個特性已經(jīng)移植到1.2.17.

l? ? ? ? 內(nèi)核TCP拼接 : 避免了內(nèi)核到用戶然后用戶到內(nèi)核端的數(shù)據(jù)拷貝, 提高了吞吐量同時又降低了CPU使用率 .

Haproxy 1.3支持Linux L7SW 以滿足在商用硬件上數(shù)Gbps 的吞吐的需求。

l? ? ? ? 連接拒絕 : 因為維護一個連接的打開的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限

制它們的連接打開從而限制它們的危害。 這個已經(jīng)為一個陷于小型DDoS攻擊的網(wǎng)站開發(fā)了而且已經(jīng)拯救了很多站點。

l? ? ? ? 細微的頭部處理 : 使得編寫基于header的規(guī)則更為簡單,同時可以處理URI的某部分。

l? ? ? ? 快而可靠的頭部處理 : 使用完全RFC2616 兼容的完整性檢查對一般的請求全部進行分析和索引僅僅需要不到2ms

的時間。

l? ? ? ? 模塊化設(shè)計 : 允許更多人加入進此項目,調(diào)試也非常簡單. poller已經(jīng)分離, 已經(jīng)使得它們的開發(fā)簡單了很多.

HTTP已經(jīng)從TCP分離出來了,這樣增加新的七層特性變得非常簡單. 其他子系統(tǒng)也會很快實現(xiàn)模塊化

l? ? ? ? 投機I/O 處理 : 在一個套接字就緒前就嘗試從它讀取數(shù)據(jù)。poller僅推測哪個可能就緒哪個沒有,嘗試猜測,

并且如果成功,一些開銷很大的系統(tǒng)調(diào)用就可以省去了。如果失敗,就會調(diào)用這些系統(tǒng)調(diào)用。已知的使用Linux

epoll()已經(jīng)凈提升起碼10%了。

l? ? ? ? ACLs : 使用任意規(guī)則的任意組合作為某動作的執(zhí)行條件。

l? ? ? ? TCP 協(xié)議檢查 : 結(jié)合ACL來對請求的任意部分進行檢查,然后再進行轉(zhuǎn)發(fā)。這就可以執(zhí)行協(xié)議驗證而不是盲目的

進行轉(zhuǎn)發(fā)。比如說允許SSL但拒絕SSH。

l? ? ? ? 更多的負載均衡算法 : 現(xiàn)在,動態(tài)加權(quán)輪循(Dynamic Round Robin),加權(quán)源地址哈希(Weighted Source Hash),

加權(quán)URL哈希和加權(quán)參數(shù)哈希(Weighted Parameter Hash)已經(jīng)實現(xiàn)。其他算法比如Weighted Measured Response

Time也很快會實現(xiàn)。

但要明確一點的,Haproxy 并不是 Http 服務(wù)器。以上提到所有帶反向代理均衡負載的產(chǎn)品,都清一色是 WEB

服務(wù)器。簡單說,就是他們能自個兒提供靜態(tài)(html,jpg,gif..)或動態(tài)(php,cgi..)文件的傳輸以及處理。而

Haproxy 僅僅,而且專門是一款的用于均衡負載的應(yīng)用代理。其自身并不能提供http服務(wù)。

但其配置簡單,擁有非常不錯的服務(wù)器健康檢查功能還有專門的系統(tǒng)狀態(tài)監(jiān)控頁面,當(dāng)其代理的后端服務(wù)器出現(xiàn)故障,

HAProxy會自動將該服務(wù)器摘除,故障恢復(fù)后再自動將該服務(wù)器加入。自1.3版本開始還引入了frontend,backend,frontend

根據(jù)任意HTTP請求頭內(nèi)容做規(guī)則匹配,然后把請求定向到相關(guān)的backend。? Haproxy 單獨進行均衡負載的性能最強,超過了Nginx。

然而 Nginx + Haproxy 的搭配性能最弱,應(yīng)該是跟通過了2層反向代理有關(guān)。

所以想用 Haproxy 替代 Nginx 所自帶的均衡負載功能將會令性能打折。

但雖然如此 Haproxy 對均衡負載功能遠比 Nginx 成熟,例如session粘貼,cookies 引導(dǎo)等都是 nginx 所沒有的。

參考以下

https://my.oschina.net/duxuefeng/blog/35232

http://www.cnblogs.com/firewing/archive/2012/11/06/2756553.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容