1、haproxy簡介
web
haproxy是一個提供高可用性,負載均衡的應用代理,支持的協議有TCP,HTTP,而且支持虛擬主機,特別適用於那些負載量大的web應用,這些應用一般須要會話保持或者七層處理,HAProxy實現了一種事件驅動、單一進程模型,此模型支持很是大的併發鏈接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,不多能處理數千併發鏈接。事件驅動模型由於在有更好的資源和時間管理的用戶端(User-Space) 實現全部這些任務,因此沒有這些問題。此模型的弊端是,在多核系統上,這些程序一般擴展性較差。這就是爲何他們必須進行優化以 使每一個CPU時間片(Cycle)作更多的工做。服務器
haproxy目前最新的版本是1.4系列的,提供了不少比較1.3的新的特性:多線程
1.支持客戶端側的長連接(client-side keep-alive)併發
2.支持TCP加速(TCP speedups)負載均衡
3.支持響應池(response buffering)ide
4.支持RDP協議高併發
5.支持基於源的粘性(source-based stickiness)性能
6.有更好的統計數據接口(a much better stats interfaces)優化
7.有更詳細的健康狀態檢測機制(more verbose health checks)spa
8.有基於流量的健康評估機制(traffic-based health)
9.支持HTTP認證
10.服務器管理命令行接口(server management from the CLI)
11.基於ACL的持久性(ACL-based persistence)
支持的平臺以及OS
x8六、x86_6四、Alpha、SPARC、MIPS及PARISC平臺上的Linux 2.4;
x8六、x86_6四、ARM (ixp425)及PPC64平臺上的Linux2.6;
UltraSPARC 2和3上的Sloaris 8/9;
Opteron和UltraSPARC平臺上的Solaris 10;
x86平臺上的FreeBSD 4.1-8;
i386, amd64, macppc, alpha, sparc64和VAX平臺上的OpenBSD 3.1-current;
2、haproxy的性能
1.haproxy使用單進程,事件驅動模型下降了上下午切換的開銷及內存的佔用
2.O(1)事件查看器(event checker)容許其在高併發鏈接中對任何鏈接的任何事件實現即時探測
3.單緩衝機制,不會複製任何數據,節約CPU時鐘週期
4.能夠實現零複製轉發,在Linux kernel 3.5以上還支持零複製啓動
5.MRU內存分配器在固定大小的內存池中可實現即時內存分配,這可以顯著減小建立一個會話的時長
6.採用樹型存儲
7.大部分工做都在用戶空間完成,如時間讀取、緩衝聚合及文件描述符的啓用和禁用等
3、配置haproxy
1.配置文件格式:global配置段,用於設定全局配置參數,proxy配置段,包括:defaults,listen,fronted,backend
2.時間格式:一些包含了值的參數表示時間,如超時時長。這些值通常以毫秒爲單位,但也可使用其它的時間單位後綴:
us: 微秒(microseconds),即1/1000000秒;
ms: 毫秒(milliseconds),即1/1000秒;
s: 秒(seconds);
m: 分鐘(minutes);
h:小時(hours);
d: 天(days)