HAProxy簡介
(1)HAProxy 是一款提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理軟件,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。 HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在時下的硬件上,完全可以支持數以萬計的 並發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。
(2)HAProxy 實現了一種事件驅動、單一進程模型,此模型支持非常大的並發連接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千並發連接。事件驅動模型因為在有更好的資源和時間管理的用戶端(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什么他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。
(3)HAProxy 支持連接拒絕 : 因為維護一個連接的打開的開銷是很低的,有時我們很需要限制攻擊蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。 這個已經為一個陷於小型DDoS攻擊的網站開發了而且已經拯救
了很多站點,這個優點也是其它負載均衡器沒有的。
(4)HAProxy 支持全透明代理(已具備硬件防火牆的典型特點): 可以用客戶端IP地址或者任何其他地址來連接后端服務器. 這個特性僅在Linux 2.4/2.6內核打了cttproxy補丁后才可以使用. 這個特性也使得為某特殊服務器處理部分流量同時又不修改服務器的地址成為可能。
haproxy-1.7.11.tar.gz 放置並解壓到/data下,重命名為haproxy
tar -zxvf haproxy-1.7.11.tar.gz mv haproxy-1.7.11 haproxy
[root@yaoyao data]# ls haproxy haproxy-1.7.11.tar.gz
[root@yaoyao data]# uname -a Linux yaoyao 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
cd /data/haproxy [root@yaoyao data]# make TARGET=linux2632 ARCH=x86_64 PREFIX=/data/haproxy TARGET=linux2632 、ARCH=x86_64 可以用uname -a 命令來查看,指定操作系統版本,prefix指定安裝目錄;
常見編譯報錯:
make: gcc: error trying to exec 'cc1': execvp: 沒有該文件或目錄的錯誤 排查錯誤: 1、檢查gcc、gcc-c++是否安裝rpm -qa gcc、rpm -qa gcc-c++(已安裝); 2、檢查glibc-devel、cpp、binutils、mpfr、jemalloc是否安裝(未安裝); 解決: 發現gcc的相關依賴包未安裝,安裝完后,可執行make編譯
[root@yaoyao haproxy]# make install PREFIX=/data/haproxy install -d "/data/haproxy/sbin" install haproxy "/data/haproxy/sbin" install -d "/data/haproxy/share/man"/man1 install -m 644 doc/haproxy.1 "/data/haproxy/share/man"/man1 install -d "/data/haproxy/doc/haproxy" for x in 51Degrees-device-detection architecture close-options configuration cookie-options DeviceAtlas-device-detection intro linux-syn-cookies lua management netscaler-client-ip-insertion-protocol network-namespaces proxy-protocol SPOE WURFL-device-detection; do \ install -m 644 doc/$x.txt "/data/haproxy/doc/haproxy" ; \ done
創建haproxy配置文件
[root@yaoyao haproxy]# pwd /data/haproxy [root@yaoyao haproxy]# ls CHANGELOG CONTRIBUTING ebtree haproxy include MAINTAINERS README sbin share SUBVERS VERDATE contrib doc examples haproxy.cfg LICENSE Makefile ROADMAP scripts src tests VERSION
[root@yaoyao haproxy]# cat haproxy.cfg global log 127.0.0.1 local0 log 127.0.0.1 local1 notice daemon nbproc 1 maxconn 4096 defaults log global mode http option httplog option dontlognull retries 3 option httpclose option redispatch option abortonclose maxconn 4096 timeout connect 5000ms timeout client 30000ms timeout server 180000ms balance roundrobin listen stats bind 0.0.0.0:1080 mode http option httplog maxconn 10 stats refresh 30s stats uri /stats stats realm XingCloud\ Haproxy stats auth admin:admin stats auth Frank:Frank stats hide-version stats admin if TRUE frontend web bind *:8080 default_backend webserver1 frontend main bind *:9000 default_backend webserver2 backend webserver1 balance source server web1 10.0.90.234:8080 check server web2 10.0.90.235:8080 check backend webserver2 balance source server web1 10.0.90.234:9000 check server web2 10.0.90.235:9000 check
啟動haproxy服務
[root@yaoyao haproxy]# sbin/haproxy -f haproxy.cfg
查看haproxy服務
[root@yaoyao haproxy]# netstat -ntlp |grep haproxy tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 43495/sbin/haproxy tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 43495/sbin/haproxy tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 43495/sbin/haproxy
看到以上信息說明haproxy服務已經成功了!