Haproxy

haproxy

HAProxy提供高可用性、 負載均衡以及基於TCP和HTTP應用的代理,支持 虛擬主機,它是免費、快速而且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點一般又須要會話保持或七層處理。HAProxy運行在當前的硬件上,徹底能夠支持數以萬計的 併發鏈接。而且它的運行模式使得它能夠很簡單安全的整合進您當前的架構中, 同時能夠保護你的web服務器不被暴露到網絡上。
HAProxy實現了一種 事件驅動, 單一進程模型,此模型支持很是大的併發鏈接數。 多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,不多能處理數千併發鏈接。 事件驅動模型由於在有更好的資源和時間管理的用戶空間(User-Space) 實現全部這些任務,因此沒有這些問題。此模型的弊端是,在多核系統上,這些程序一般擴展性較差。這就是爲何他們必須進行優化以 使每一個CPU時間片(Cycle)作更多的工做。

安裝

tar zxvf haproxy-1.4.8.tar.gz
cd haproxy-1.4.8
uname -a //查看linux 內核版本
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

配置

配置HAProxy Session親緣性的三種方式
haproxy負載均衡保持客戶端和服務器Session親緣性的三種方式:
1 用戶IP 識別
haproxy 將用戶IP通過hash計算後 指定到固定的真實服務器上(相似於nginx 的IP hash 指令)
配置指令 balance source
2 cookie 識別
haproxy 將WEB服務端發送給客戶端的cookie中插入(或添加前綴)haproxy定義的後端的服務器COOKIE ID。
配置指令例舉 cookie SESSION_COOKIE insert indirect nocache
用firebug能夠觀察到用戶的請求頭的cookie裏 有相似" Cookie jsessionid=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=app1" SESSION_COOKIE=app1就是haproxy添加的內容
3 session 識別
haproxy 將後端服務器產生的session和後端服務器標識存在haproxy中的一張表裏。客戶端請求時先查詢這張表。
配置指令例舉 appsession JSESSIONID len 64 timeout 5h request-learn
配置舉例:
#vi /usr/local/haproxy/haproxy.cfg
backend COOKIE_srv
mode http
cookie SESSION_COOKIE insert indirect nocache
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1
backend SOURCE_srv
mode http
balance source
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1
backend APPSESSION_srv
mode http
appsession JSESSIONID len 64 timeout 5h request-learn
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1

啓動

#啓動haproxy
/usr/local/haproxy/haproxy -f
#查看是否啓動
[zhangy@BlackGhost haproxy]$ ps -ef|grep haproxy
4859 ? 00:00:00 haproxy
4860 ? 00:00:00 haproxy

測試

編輯
[root@BlackGhost haproxy]# /usr/local/bin/webbench -c 100 -t 30 http://localhost:1080/phpinfo.php

說明

編輯
HAProxy監聽的端口是1080,代理192.168.18.2:10000,127.0.0.1:10000
統計監聽的是8888端口 http://localhost:8888/haproxy-stats

版本發佈

編輯
2012年12月28日 : HAproxy 1.5-dev17 發佈。 [3]  
2012年05月15日,HAproxy 1.5.0 dev10 發佈。 [4]  
2012年05月22日,HAproxy 1.4.21 發佈,Web負載均衡。 [5]  
2012年06月04日,HAproxy 1.5 dev11 發佈,該版本修復了 dev8 的不少 bug ,合併和一些新特性,包括服務器的軟起動和中止,同時增長選項用於對整個 URI 進行哈希而不僅是路徑,同時增長選項用於當主服務器恢復時中止備用服務器的功能等等,若是你正在使用 dev8 請當即升級。 [6]  
2012年08月23日,HAproxy 1.4.22 發佈,Web負載均衡。 [7]  
2012年09月10日,HAproxy 1.5 dev12 發佈。
2012年09月11日,HAproxy 1.5.0 dev12 發佈,該版本最主要的是增長客戶端和服務器端的原生 SSL 支持,其餘方面包括新的 ACL 和模式,支持老的 Linux 內核上的 IPv6 透明模式,可經過 nice 關鍵字來修改會話的調度優先級等等。 [8]  
2012年11月22日,HAproxy 1.5.0 dev13 發佈。 [9]  
2012年12月24日,HAproxy 1.5.0 dev15 發佈。 [9]  
2012年12月28日,HAproxy 1.5.0 dev17 發佈。 [9]  
參考資料
相關文章
相關標籤/搜索