HAProxy 是一款基於 TCP 和 HTTP 協(xié)定的高效能負(fù)載平衡器,也是一款 Open Source 的 GPL 免費軟體,可以為企業(yè)帶來負(fù)載平衡需求的解決方案,HAProxy 適應(yīng)於負(fù)載較大的 web伺服器,HAProxy 的高效能得以應(yīng)付同時上萬個連結(jié)的session,HAProxy的高安全性得以保護(hù) web伺服器 在防火牆內(nèi),並且很簡單地架設(shè)在現(xiàn)有的網(wǎng)路架構(gòu),以下為官網(wǎng)提供 HAProxy的架構(gòu):
圖片來源:http://haproxy.1wt.eu/
HAProxy負(fù)載平衡器-版本比較
目前 HAProxy 的版本有3個版本,有2個版本(1.1跟1.2)為目前較穩(wěn)定的版本,1.3的版本為目前正在發(fā)展的版本,較不穩(wěn)定;但是,相對提供較多元功能,HAProxy 詳細(xì)版本介紹如下:
版本 1.1 – 此版本最目前最穩(wěn)定(stable)的版本,目前已經(jīng)不再更新功能。
版本 1.2 – 此版本為以 1.1版本為基礎(chǔ),加上新功能的版本,新功能如下:
- 支援 poll/epoll ,用來支援大量的session
- IPV6
- 應(yīng)用程式 cookie
- hot-reconfiguration
- 高級的動態(tài)流量管理
- TCP keep alive
- source hash
- 加權(quán)負(fù)載平衡演算法
- rbtree 算法的調(diào)整器
- web 狀態(tài)表介面
以上一些專有名稱 丫忠 是直接翻譯過來,請原諒 丫忠 並沒有詳細(xì)介紹^^
版本 1.3 – 此版本為目前正在開發(fā)的版本,支援的功能也比較多元,基本上 丫忠 認(rèn)為此版本的功能較能符合使用者對於 web伺服器 上應(yīng)用的需求,例如:內(nèi)容交換功能、全透代理功能等,可以分別依據(jù) 來源內(nèi)容 及 來源IP 分配到後端不同的伺服器,詳細(xì)功能介紹如下所示:
- 內(nèi)容交換:可以根據(jù)來源端的請求(request)分配到不同的 伺服器 ,來源端請求 如:URI , heade , cookie …等,丫忠認(rèn)為此功能非常實用,就等丫忠有空時再實做出此功能的應(yīng)用囉
- 全透明代理:可以根據(jù) 來源端IP 分配到後端不同的伺服器(此功能在 kernel Linux 2.4/2.6 時,需要補丁 cttproxy 才可以使用)
- 與核心(kernel)串接:與 kernel 的串接提高了 HAProxy最大承載量,同時也降低了 CPU 的使用率,此版本也支援 Linux L7SW 以滿足商用對於 最大承載量的需求。
- 拒絕連接:DDos攻擊是網(wǎng)路駭客最常見的攻擊方式之一,然而此功能可以有效阻擋DDos攻擊。
- 快速可靠的標(biāo)頭(header)處理:基於 RFC2616 規(guī)格相容的標(biāo)頭(header)處理,對於請求(request)進(jìn)行完整性分析和索引,只需要不到 2ms的時間
- 模組化設(shè)計:模組化設(shè)計可以很方便讓有興趣的人一同加入開發(fā),HTTP 已經(jīng)從 TCP協(xié)定 中分離出來,使得 HTTP模組 的開發(fā)更加方便快速
- ACLs
- TCP過濾檢查:結(jié)合 ACL 來針對請求(request)進(jìn)行過濾檢查,如此就可以進(jìn)行條件式檢查,例如:只允許SSL 但是不允許SSH
- 加權(quán)負(fù)載平衡演算法
HAProxy負(fù)載平衡器-支援平臺
HAProxy 目前支援的平臺如下:
- 運作於 x86, x86_64, Alpha, SPARC, MIPS, PARISC 的Linux 2.4
- 運作於 x86, ARM (ixp425), PPC64 的 Linux 2.6
- 運作於 UltraSPARC 2 and 3 的Solaris 8/9 on
- 運作於 Opteron 的 Solaris 10
- 運作於 x86 的 FreeBSD 4.10 – 6.2
- 運作於 i386, amd64, macppc, alpha, sparc64 和 VAX的OpenBSD 3.1 to -current
HAProxy負(fù)載平衡器-高效能說明
- 單一程序:事件驅(qū)動 模組大大的降低了 內(nèi)容交換 的消耗 和 記憶體 的使用率。每毫秒(ms)可以處理幾百個任務(wù),每個 session 僅消耗幾 KB的記憶體,然而類似的情況在 Apache中,卻需要消耗幾MB的記憶體。
- 事件檢查器:可以在上萬個連接中及時檢查各種事件,目前僅支援運作在 Linux平臺上的HAProxy 1.2的版本
- 單一緩衝區(qū):儘可能避免在I/O之間的任何資料拷貝動作,以節(jié)省CPU及記憶體的使用
- MRU記憶體配置(memory allocator)
- work factoring
- event aggregation
- two FSMs
- reduced footprint
- 優(yōu)化HTTP標(biāo)頭(header)分析
- 減少系統(tǒng)調(diào)用次數(shù)
HAProxy負(fù)載平衡器-下載
請至 HAProxy官網(wǎng)下載
相似於 HAProxy 的負(fù)載平衡器
- Linux Virtual Servers (LVS) :丫忠有列出 LVS vs HAProxy 優(yōu)缺點比較,網(wǎng)友可以比較看看,LVS 整合於Linux 2.4 和 2.6 kernel的非??焖俚?3/4層負(fù)載平衡器,需要結(jié)合使用 keep-alived 才能夠使用 後端伺服器狀態(tài)檢查功能,這通常對於有需求於 基於IP負(fù)載平衡器 的網(wǎng)友來說,是一個解決方案。
- Pure 負(fù)載均衡器(PLB) :Pure 負(fù)載平衡器 使用了和 HAProxy一樣的事件驅(qū)動模組,但是其目的僅為了提升高效能和可用性,並且 沒有任何HTTP處理和session keep-alived.
- Pound:Pound 可以把它當(dāng)作 HAProxy 的一個擴(kuò)充,Pound 支援 SSL,可以根據(jù)請求的URL進(jìn)行分配,設(shè)定檔也很尐;但是 Pound 不支援 session keep-alived,適用於一般中小型企業(yè)
- Pen :Pen 是一款很簡單的 TCP負(fù)載平衡器,支援 高達(dá)2048個客戶端IP(Client IP)的session keep-alived,支援 基於IP的ACL;但是,缺點是當(dāng)同時 session數(shù)達(dá)到幾千個後就達(dá)到最高效能了
寫完了 HAProxy負(fù)載平衡器的介紹 後,丫忠是有股衝動想要安裝HAProxy來試看看,丫忠已經(jīng)有下載後並且安裝了,安裝方式很簡單,只要 make TARGET=xxxx 就完成了,接下來就是 HAProxy負(fù)載平衡器的安裝方式及實例架構(gòu)了,等完成後再將文件分享出來給大家參考看看!!
參考資料:http://cn.haproxy.org/
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。