HAProxy

it2024-10-05  17

HAProxy简介

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更为平滑和友好。多进程模式支持不够好

拓扑

与lvs-dr类似,但haproxy只需一块网卡 原理

它的原理是proxy代理。客户端把请求发送到HAProxy后,HAProxy再替用户发送请求到web服务器,web服务器响应HAProxy,把页面发给HAProxy。HAProxy再把页面发给客户端。

安装

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 rsyslog

2、查看日志( 访问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机时长)。
最新回复(0)