HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點, 這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的併發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。
操作系統:
Ubuntu 16.04 LTS x64
安裝haproxy之前,需要安裝pcre, zlib等等
1:安裝開發工具
apt-get install build-essential
2:安裝pcre
apt-get install libpcre3 libpcre3-dev
3:安裝zlib
apt-get install zlib1g zlib1g-dev
安裝haproxy
wget https://github.com/haproxy/haproxy/archive/v1.6.0.tar.gz
tar -xvf haproxy-1.6.0.tar.gz
cd haproxy-1.6.0
make TARGET=linux2628 USE_PCRE=1 USE_ZLIB=1 ARCH=x86_64
make PREFIX=/usr/local/haproxy install
注意:make的一些參數說明,可以去https://github.com/haproxy/haproxy上面瞭解
配置haproxy
haproxy的配置文件haproxy.cfg在解壓後的examples目錄裏面有例子,直接拷貝一個修改即可
cd /usr/local/haproxy
mkdir conf
vim haproxy.cfg 輸入如下內容
global
maxconn 20000
ulimit-n 80012
log 127.0.0.1 local0
nbproc 1
daemon
defaults
timeout server 5000
timeout client 5000
timeout connect 5000
#haproxy管理頁面
frontend stats
bind *:9061
mode http
stats refresh 5s
stats uri /stats
#http代理,這裏演示代理tomcat
frontend txmall.com
bind *:8060
mode http
log global
maxconn 8000
default_backend tomcat
backend tomcat
mode http
retries 2
balance roundrobin
server s1 192.168.1.200:8080
server s2 192.168.1.201:8081
#tcp代理,這裏演示代理mysql
listen mysql
bind *:3306
mode tcp
server m1 192.168.1.100:3306
server m2 192.168.1.101:3306
這裏說一下tcp的代理,這裏代理到mysql,只適用於讀的場景
程序裏面就可以直接連接haproxy的3306端口
最後,啓動haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg
啓動之後,就可以訪問 http://127.0.0.1:9061/stats 查看haproxy的管理頁面