haproxy

1.1、haproxy原理

haproxy提供高可用性、負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。

haproxy特別適用於那些負載特別大的web站點,這些站點通常又需要會話保持或七層處理。haproxy運行在時下的硬件上,完全可以支持數以萬計的併發連接,並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web服務器不被暴露到網絡上。

haproxy實現了一種事件驅動、單一進程模型,此模型支持非常大的併發連接數。多進程或多線程模型受內存限制、系統調度器限制以及無處不在的鎖限制,很少能處理數千併發連接。

事件驅動模型因爲在有更好的資源和時間管理的用戶端(User-Space)實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是爲什麼他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。

1.2、haproxy的優點

(1)免費開源,穩定性也是非常好。單haproxy也跑得不錯,穩定性可以與硬件級的F5相媲美。

(2)根據官方文檔,haproxy可以跑滿10Gbps,這個數值作爲軟件級負載均衡器是相當驚人的。

(3)haproxy支持連接拒絕:因爲維護一個連接的打開的開銷是很低的,有時我們很需要限制×××蠕蟲(attack bots),也就是說限制它們的連接打開從而限制它們的危害。這個已經爲一個陷於小型DDoS×××的網站開發了而且已經拯救了很多站點,這個優點也是其它負載均衡器沒有的。

(4)haproxy支持全透明代理(已具備硬件防火牆的典型特點):可以用客戶端IP地址或者任何其他地址來連接後端服務器。這個特性僅在Linux 2.4/2.6內核打了tcp proxy補丁後纔可以使用。這個特性也使得爲某特殊服務器處理部分流量同時又不修改服務器的地址成爲可能。

(5)haproxy現多於線上的Mysql集羣環境,我們常用於它作爲MySQL(讀)負載均衡。

(6)自帶強大的監控服務器狀態的頁面,實際環境中我們結合Nagios進行郵件或短信報警。

(7)HAProxy支持虛擬主機,許多朋友說它不支持虛擬主機是錯誤的,通過測試我們知道,HAProxy是支持虛擬主機的。

二、實驗環境 rhel6.5

server6 haproxy主機

server7 http服務

server8 http服務
[root@server6 ~]# tar zxf haproxy-1.6.11.tar.gz
[root@server6 ~]# cd ha
hadoop-2.7.3.tar.gz haproxy-1.6.11/ haproxy-1.6.11.tar.gz
[root@server6 ~]# cd haproxy-1.6.11
[root@server6 haproxy-1.6.11]# cd examples/
[root@server6 examples]# yum install -y rpm-build
[root@server6 examples]# rpmbuild -bb haproxy.spec
error: File /root/rpmbuild/SOURCES/haproxy-1.6.11.tar.gz: 沒有那個文件或目錄
提示沒有這個文件:
[root@server6 examples]# cp /root/haproxy-1.6.11.tar.gz /root/rpmbuild/SOURCES/ 拷貝
[root@server6 examples]# rpmbuild -bb haproxy.spec error: Failed build dependencies:
pcre-devel is needed by haproxy-1.6.11-1.x86_64
再次運行提示錯誤,沒裝gcc
安裝完在執行編譯完成:
haproxy
[root@server6 examples]# cd
[root@server6 ~]# cd rpmbuild/
[root@server6 rpmbuild]# cd RPMS/
[root@server6 RPMS]# cd x86_64/
[root@server6 x86_64]# pwd
/root/rpmbuild/RPMS/x86_64
[root@server6 x86_64]# ls
haproxy-1.6.11-1.x86_64.rpm
[root@server6 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm
Preparing... ########################################### [100%]
1:haproxy ########################################### [100%]

haproxy
[root@server6 examples]# cp content-sw-sample.cfg /etc/haproxy/
[root@server6 examples]# cd /etc/haproxy/
[root@server6 haproxy]# mv content-sw-sample.cfg haproxy.cfg
改名
建用戶:
[root@server6 haproxy]# grep 200 /etc/passwd
[root@server6 haproxy]# groupadd -g 200 haproxy
[root@server6 haproxy]# useradd -u 200 -g 200 haproxy
[root@server6 haproxy]# tail -l /etc/passwd
haproxy:x:200:200::/home/haproxy:/bin/bash
查看:
haproxy
haproxy
[root@server6 haproxy]# vim /etc/sysctl.conf

haproxy
[root@server6 haproxy]# vim /etc/security/limits.conf
haproxy
[root@server6 haproxy]# vim haproxy.cfg

haproxyhaproxy
[root@server6 haproxy]# /etc/init.d/haproxy start
Starting haproxy: [確定]
瀏覽器訪問:http://172.25.35.6/admin/stats
haproxy
[root@server6 haproxy]# vim /etc/rsyslog.conf
haproxyhaproxy
[root@server6 haproxy]# /etc/init.d/rsyslog restart
關閉系統日誌記錄器: [確定]
啓動系統日誌記錄器: [確定]
[root@server6 haproxy]# tail -f /var/log/haproxy.log
刷新網頁出現日誌:
haproxy
[root@server6 haproxy]# vim haproxy.cfg
haproxy
重新加載網頁需要輸帳號密碼:帳號:admin 密碼:redhat
物理機測試:
haproxy
停掉server8httpd
haproxy
[root@server6 haproxy]# vim haproxy.cfg
haproxy
物理機測試一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章