一、HAProxy簡介
HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。
HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。
HAProxy實現了一種事件驅動, 單一進程模型,此模型支持非常大的併發連接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千併發連接。事件驅動模型因爲在有更好的資源和時間管理的用戶空間(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是爲什麼他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。
以下爲HAProxy配置兩臺服務器,其地址爲:
服務器1:10.192.235.23:8023
服務器2:10.192.235.211:8023
HAProxy安裝地址:10.192.235.23:18023
二、HAProxy的下載
下載地址1:http://www.haproxy.org/
下載地址2:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/
這裏,我用下載地址2進行下載;我們選擇一個穩定的版本1.8.8
三、HAProxy的解壓
[root@linux-centos7 ~]# cd /usr/local/src/
[root@linux-centos7 src]# tar zxvf haproxy-1.8.8.tar.gz
四、HAProxy的安裝
[root@linux-centos7 src]# cd haproxy-1.8.8
[root@linux-centos7 haproxy-1.8.8]# uname -r
3.10.0-514.26.2.el7.x86_64
[root@linux-centos7 haproxy-1.8.8]# make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy
[root@linux-centos7 haproxy-1.8.8]# make install PREFIX=/usr/local/haproxy
參數說明:
- TARGET=linux310,內核版本,使用uname -r查看內核,如:3.10.0-514.26,此時該參數就爲linux310;kernel 大於2.6.28的可以用:TARGET=linux2628;
- ARCH=x86_64,系統位數;
- PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,爲haprpxy安裝路徑
五、配置文件的修改
1.79及以後的版本解壓後文件內就沒有haproxy.cfg文件;由於沒有配置其他的服務器,這裏就簡單的添加一個可以讓Haproxy啓動的配置。
[root@linux-centos7 haproxy-1.8.8]# cd /usr/local/haproxy
[root@linux-centos7 haproxy]# mkdir conf
[root@linux-centos7 haproxy]# ls
conf doc sbin share
[root@linux-centos7 haproxy]# cd conf/
[root@linux-centos7 conf]# vim haproxy.cfg
配置內容如下:
listen admin_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 viid_local_cluster
bind 0.0.0.0:18023
mode http
option httplog
option forwardfor
option httpclose
log global
default_backend htmpool
backend htmpool
mode http
option redispatch
option abortonclose
balance roundrobin
cookie SERVERID insert indirect nocache
server serverd1 10.192.235.23:8023 check cookie server1 weight 3 check inter 2000 rise 2 fall 3
server serverd2 10.192.235.211:8023 check cookie server2 weight 6 check inter 2000 rise 2 fall 3
說明(配置時注意修改以下參數):
1、listen admin_stats配置管理頁面;bind 0.0.0.0:1080爲Haproxy綁定管理頁面;
2、frontend viid_local_cluster表示監聽的前端請求地址,綁定的請求地址爲:bind 0.0.0.0:18023
3、backend htmpool表示後端的真實服務器;其地址爲10.192.235.23:8023和10.192.235.211:8023
六、啓動和停止HAProxy
1、啓動:
[root@linux-centos7 conf]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
2、驗證一下是否啓動成功:
[root@linux-centos7 conf]# lsof -i :1080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
haproxy 13263 nobody 3u IPv4 994405 0t0 TCP *:socks (LISTEN)
[root@linux-centos7 conf]#
3、管理頁面展示,地址爲安裝Haproxy的主機地址,路徑類似如下:10.192.235.23:1080/stats;
賬號和密碼默認均爲:admin
4、停止:
[root@linux-centos7 conf]# ps -ef|grep haproxy
nobody 13263 1 0 19:16 ? 00:00:00 /usr/haproxy/sbin/haproxy -f /usr/haproxy/conf/haproxy.cfg
root 14579 12890 0 20:21 pts/1 00:00:00 grep --color=auto haproxy
[root@linux-centos7 conf]# kill -9 13263