haproxy

haproxy

HAProxy是一個使用C語言編寫的自由及開放原始碼軟體[1],其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程式代理。 HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬體上,完全可以支持數以萬計的並發連線。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web伺服器不被暴露到網路上。 HAProxy實現了一種事件驅動, 單一進程模型,此模型支持非常大的並發連線數。多進程或多執行緒模型受記憶體限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千並發連線。事件驅動模型因為在有更好的資源和時間管理的用戶空間(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴展性較差。這就是為什麼他們必須進行最佳化以 使每個CPU時間片(Cycle)做更多的工作。 包括 GitHub、Bitbucket[3]、Stack Overflow[4]、Reddit、Tumblr、Twitter[5][6]和 Tuenti[7]在內的知名網站,及亞馬遜網路服務系統都使用了HAProxy。

基本信息

安裝

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 發布。

2012年05月15日,HAproxy 1.5.0 dev10 發布。

2012年05月22日,HAproxy 1.4.21 發布,Web負載均衡。

2012年06月04日,HAproxy 1.5 dev11 發布,該版本修復了 dev8 的很多 bug ,合併和一些新特性,包括伺服器的軟起動和停止,同時增加選項用於對整個 URI 進行哈希而不只是路徑,同時增加選項用於當主伺服器恢復時停止備用伺服器的功能等等,如果你正在使用 dev8 請立即升級。

2012年08月23日,HAproxy 1.4.22 發布,Web負載均衡。

2012年09月10日,HAproxy 1.5 dev12 發布。

2012年09月11日,HAproxy 1.5.0 dev12 發布,該版本最主要的是增加客戶端和伺服器端的原生 SSL 支持,其他方面包括新的 ACL 和模式,支持老的 Linux 核心上的 IPv6 透明模式,可通過 nice 關鍵字來修改會話的調度優先權等等。

2012年11月22日,HAproxy 1.5.0 dev13 發布。

2012年12月24日,HAproxy 1.5.0 dev15 發布。

2012年12月28日,HAproxy 1.5.0 dev17 發布。

相關詞條

熱門詞條

聯絡我們