HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速而且可靠的一種解決方案。
若是說在功能上,能以proxy反向代理方式實現 WEB均衡負載,這樣的產品有不少。包括 Nginx,ApacheProxy,lighttpd等。可是 Haproxy 並非 Http服務器,以上提到全部帶反向代理均衡負載的產品,都是 WEB 服務器,他們能提供靜態(html,jpg,gif..)或動態(PHP,cgi..)文件的傳輸以及處理。而Haproxy僅僅,並且專門是一款的用於均衡負載的應用代理。其自身並不能提供http服務。
其配置簡單,擁有很是不錯的服務器健康檢查功能還有專門的系統狀態監控頁面,當其代理的後端服務器出現故障, HAProxy會自動將該服務器摘除,故障恢復後再自動將該服務器加入。自1.3版本開始還引入了frontend, backend, frontend根據任意HTTP請求頭內容作規則匹配,而後把請求定向到相關的backend。html
- 安裝Haproxy
wdget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz
tar vxf haproxy-1.7.5.tar.gz
進入目錄編譯安裝
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
- 配置Haproxy
建立配置文件
mkdir /usr/local/haproxy/conf
mkdir /usr/local/haproxy/logs
vim conf/haproxy.cfg
1) haproxy.cfg內容以下(tcp負載均衡):
global
log 127.0.0.1 local0 info #[err warning info debug]
maxconn 4096
user root
group root
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
maxconn 2000
timeout connect 5000
timeout client 30000
timeout server30000
retries 3 #後端服務器失敗重連次數,失敗後標記服務器不可用
frontend server_read
bind *:8888 #監聽端口
default_backend cluster_server
backend cluster_server
mode tcp #tcp負載均衡
balance roundrobin #負載均衡算法,roundrobin, leastconn, source, static-rr
server svr1 192.168.1.100:3306 weight 5 check inter 5000 rise 2 fall 3 #後端服務器權重和檢測
server svr2 192.168.1.101:3306 weight 5 check inter 5000 rise 2 fall 3
listen admin_stats
bind 0.0.0.0:1080
mode http
log 127.0.0.1 local0 err
stats uri /stats #監控訪問地址 localhost:1080/stats
stats refresh 5s #監控頁面刷新的間隔
2) haproxy.cfg內容以下(http負載均衡):
global
log 127.0.0.1 local0 info #[err warning info debug]
maxconn 4096
user root
group root
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
maxconn 2000
timeout connect 5000
timeout client 30000
timeout server30000
retries 3 #後端服務器失敗重連次數,失敗後標記服務器不可用
frontend server_read
bind *:8888 #監聽端口
default_backend cluster_server
backend cluster_server
mode http #http負載均衡
balance roundrobin #負載均衡算法,roundrobin, leastconn, source, static-rr
option httpchk GET /index.html #健康檢測方式
server svr1 192.168.1.100:3306 weight 5 check inter 5000 rise 2 fall 3 #後端服務器權重和檢測
server svr2 192.168.1.101:3306 weight 5 check inter 5000 rise 2 fall 3
listen admin_stats
bind 0.0.0.0:1080
mode http
log 127.0.0.1 local0 err
stats uri /stats #監控訪問地址 localhost:1080/stats
stats refresh 5s #監控頁面刷新的間隔
- 啓動haproxy
進入sbin目錄
./haproxy -f ../conf/haproxy.cfg
查看8888端口
netstat -anp | grep 8888
查看監控頁面
http://localhost:1080/stats