HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.18.tar.gz
tar -zxvf haproxy-1.4.18.tar.gz
cd haproxy-1.4.18
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir /usr/local/haproxy/etc
vi haproxy.cfg
global
#log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 10240 #最大连接数
chroot /usr/local/haproxy #安装目录
uid 501 #用户haproxy
gid 501 #组haproxy
daemon #守护进程运行
nbproc 2 #进程数量
pidfile /usr/local/haproxy/haproxy.pid
defaults
log global
mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
#option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch #如果cookie写入了serverId而客户端不会刷新cookie,当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
retries 3 #3次连接失败就认为是服务器不可用,也可以通过后面设置
maxconn 2000
balance roundrobin
contimeout 5000 #连接超时
clitimeout 50000 #客户端超时
srvtimeout 50000 #服务器超时
#后台管理
stats enable
stats refresh 3
stats uri /status #后台管理地址
stats auth monitor:monitor #管理帐号:管理密码
stats hide-version #隐藏统计页面上HAProxy的版本信息
frontend http-upstream
mode http #配置TCP模式
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option httpclose #每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式
option forwardfor #如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP
maxconn 2000
#cookie SERVERID insert indirect #允许插入serverid到cookie中,serverid后面可以定义
balance roundrobin
#balance source #负载均衡的方式balance source机制,它跟Nginx的ip_hash机制原理类似,是让客户机访问时始终访问后端的某一台真实的web服务器,这样让session就固定下来了
#balance leastconn #负载均衡的方式,leastconn根据服务器当前的请求数,取当前请求数最少的服务器
bind *:8080 #监听地址
default_backend http-pool
option allbackups #但设置了backup的时候,默认第一个backup会优先,设置option allbackups后所有备份服务器权重一样
frontend mysql-upstream
mode tcp #配置TCP模式
maxconn 2000
balance roundrobin
bind *:3307 #监听地址
default_backend mysql-pool
backend http-pool
option httpchk GET /ok.html #用来做健康检查
option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#服务器定义,cookie 1表示serverid为1,check inter 1500 是检测心跳频率rise 3是3次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
#可以根据机器的性能不同,不使用默认的连接数配置而使用自己的特殊的连接数配置#如minconn 10 maxconn 20
server mms1 10.1.5.134:80 cookie 1 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3 weight 1
server mms2 10.1.6.118:80 cookie 2 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3 weight 1
#备份机器配置,正常情况下备机不会使用,当主机的全部服务器都down的时候备备机会启用
server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
backend mysql-pool
option mysql-check GET /ok.sh #用来做健康检查
server server1 192.168.1.1:3306 weight 3 maxconn 32 check #check表示对这个server进行健康检查
server server2 192.168.1.2:3306 weight 3 maxconn 32 check
##################################
#启动
sudo ./sbin/haproxy -f haproxy.cfg
#重启
sudo ./sbin/haproxy -f haproxy.cfg -st `cat logs/haproxy.pid`