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的管理页面