安装
tar xf haproxy-1.5.7.tar.gz
make TARGET=linux2628 ARCH=x86_64 (2.6.2.8内核以上的都用2628)
make install
haproxy日志记录
global段
log 127.0.0.1 local3 info
/etc/rsyslog.conf下
ModLoad imudp
UDPServerRun 514
local3.* /var/log/haproxy.log (这行写在save boot messages之后,并且haproxy.log要给写权限)
/etc/sysconfig/rsyslog下
SYSLOGD_OPTIONS="-r -m 0 -c 2"
重启生效
haproxy的启动,haproxy -f /etc/haproxy/haproxy.cfg -c是语法检测,与nginx -t一样,平滑重启加-st参数haproxy -f /etc/haproxy/haproxy.cfg -st `haproxy.pid`
配置,把haproxy.cfg拷贝到/etc/haproxy目录下
global段一看就知道了
defaults段
mode tcp|http (tcp是四层,在此模式下,客户端和服务器端之间建立一个全双工的连接,不会对七层报文进行检查,经常用于ssh,ssl,smtp等应用, http是七层,客户端请求在转发前会被深度分析,不符合规则的直接丢弃。 )
来一发配置文件
注意:
httpclose参数,表示在客户端和服务器完成一次连接请求后,HAProxy会主动关闭TCP连接,很有效的一个参数。
forwardfor参数,记录客户端的真实IP
originalto参数,记录发起请求的原目的IP地址
dontlognull参数,不记录上级负载发过来的用于检测没有数据的心跳包。
cookie参数,表示允许向cookie插入SERVERID,每台服务器的SERVERID可在server关键字中使用cookie定义。
balance的一些算法:
roundrobin 轮询,最常用
source 基于请求源的IP算法,能让客户端请求始终转发到一台特定的RS。
leastconn 此算法会将新的连接请求转发至具有最少连接数的RS,在会话时间较长的场景中推荐,比如数据库负载均衡,短会话不推荐使用,比如基于HTTP的服务。
backup指定备份服务器,当所有RS异常后,才会生效
这里定义的监控网址是stats,admin if True可以在监控界面手动启动或禁用RS,1.4.9版本之后有效
以上都是基本介绍,要发挥HAproxy在七层下的强大功能,还要了解ACL规则(特别重要)。
通过ACL规则实现基于HAproxy的智能负载均衡系统:(常用于frontend段)
acl 自定义acl名称 acl方法 -i [匹配的路径或文件]
常用的acl方法:
hdr_reg(host),hdr_dom(host),hdr_beg(host),url_sub,url_dir,path_beg,path_end
例子:
acl www_policy hdr_reg(host) -i ^(www.z.cn|z.cn)
acl bbs_policy hdr_dom(host) -i bbs.z.cn
acl url_policy url_sub -i buy_sid=
acl url_static path_end -i .gif .png .jpg .css .js
acl host_www hdr_beg(host) -i www
acl host_static hdr_beg -i www
use_backend server_www if www_policy
use_backend server_app if url_policy
use_backend server_cache if bbs_policy
use_backend static if host_static || host_ww url_static
use_backend www if host_www
default_backend server_cache
第三条是指url包含but_sid=的话就返回true,use_backend后面跟的是backend定义的地址池,其他一眼就能看出来意思。