HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,它是免费、开源、快速并且可靠的一种解决方案。
HAProxy的特点
HAProxy 也是支持虚拟主机的,可以工作在4、7层(支持多网段。HAProxy 的优点能够补充 Nginx 的一些缺点,比如支持 Session 的保持,Cookie的引导;同时支持通过获取指定的 url 来检测后端服务器的状态。HAProxy 跟 LVS 类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy 会比 Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的。HAProxy 支持 TCP 协议的负载均衡转发,可以对 MySQL 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,大家可以用 LVS+Keepalived 对 MySQL主从做负载均衡。HAProxy 负载均衡策略非常多, HAProxy 的负载均衡算法现在具体有如下8种: – roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的; –static-rr,表示根据权重,建议关注; – leastconn,表示最少连接者先处理,建议关注; – source,表示根据请求源 IP,这个跟 Nginx 的 IP_hash 机制类似,我们用其作为解决 session 问题的一种方法,建议关注; – ri,表示根据请求的 URI; – rl_param,表示根据请求的 URl 参数’balance url_param’ requires an URLparameter name; – hdr(name),表示根据 HTTP 请求头来锁定每一次 HTTP 请求; – rdp-cookie(name),表示根据据 cookie(name)来锁定并哈希每一次 TCP 请求。HAPorxy缺点:
不支持POP/SMTP协议不支持SPDY协议. 不支持HTTP cache功能。现在不少开源的lb项目,都或多或少具备HTTP cache功能。重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好。多进程模式支持不够好安装
yum install -y haproxy启停
systemctl start haproxy systemctl stop haproxy systemctl status haproxy配置文件
HAProxy 配置参数来源
命令行:总具有最高优先级global部分:全局设置进程级别参数代理申明部分 – 来自于default、listen、frontend、backend配置文件可由如下部分构成 – default 为后续的其他部分设置缺省参数缺省参数可以被后续部分重置– frontend
描述接收客户端侦听套接字(socket)集– backend
描述转发连接的服务器集– listen
把frontend和backend结合到一起的完整申明
删除 #main frontend which proxys to the backends 以下的内容,并自定义如下内容
listen stats bind 0.0.0.0:1080 # 监控页面端口号 stats refresh 30s # 监控页面自动刷新时间 stats uri /health # 自定义监控页面网址 stats realm HaManager # 统计页面密码框上的提示文本 stats auth admin:admin # 用户名:密码 stats hide-version # 隐藏统计页面上的HAProxy的版本信息 listen myweb 0.0.0.0:80 cookie SERVERID rewrite balance roundrobin #调度算法 rr server web1 192.168.4.1:80 cookie a1i1 check inter 2000 rise 2 fall 5 # 每2000ms检查一次服务器,2次成功成功是好的,5次表示失败 server web2 192.168.4.2:80 cookie a1i2 check inter 2000 rise 2 fall 5/etc/rsyslog.conf
构成
Facility.priority 相当于 服务、优先级
Facility 可以记录这些关键字:auth, authpriv, cron,daemon,kern,lpr,mail,mark,news,security,syslog,user,uucp,以及local0到local7 local0到local7是预留出来的接口,供第三方程序调用 Priority 可以使用的关键字:debug、info、notice、warning、warn、err error、crit、alert、emerg、panic Debug是最不严重的级别,panic是最严重的界别。如果日志记录优先级是info,表示比info严重的日志都需要记录
配置haproxy日志 1、配置本机接受通过网络发来的日志
vim /etc/rsyslog.conf Provides UDP syslog reception #$ModLoad imudp $UDPServerRun 514 #Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514 systemctl restart rsyslog2、查看日志( 访问HAProxy调度器 可以看到日志信息)
tailf /var/log/meassages备注:
Queue队列数据的信息(当前队列数量,最大值,队列限制数量);Session rate每秒会话率(当前值,最大值,限制数量);Sessions总会话量(当前值,最大值,总量,Lbtot: total number of times a server was selected选中一台服务器所用的总时 间);Bytes(入站、出站流量);Denied(拒绝请求、拒绝回应);Errors(错误请求、错误连接、错误回应);Warnings(重新尝试警告retry、重新连接redispatches);Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量、down机服务器数量、down机时长)。