中添加 --line-numbers 选项
衡量负载均衡器性能的因素
Session rate会话率:每分钟产生的会话数
Session concurrency 并发会话数: 服务器处理会话的时间越长,并发会话数越多;
Date rate 数据速率: 以MB/s、Mbps衡量
HaProxy简介
官方网站: https://www.haproxy.org/
HAProxy是个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。
适用于负载特大的Web站点,这些站点通常又需要会话保持或者七层代理。
HAProxy的核心功能
- 负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法
- 健康检查:支持TCP和HTTP两种健康检查模式
- 会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持
- SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
- HTTP请求重写与重定向
- 监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态
HAProxy工作模式
- http: 客户端请求被深度分析后再发往服务器;
- tcp:4层调度,不检查七层信息;
- Health: 仅做健康检查(不建议使用);
HAProxy优缺点
优点
- 支持sessio、cookie功能;
- 可以通过Url进行健康检查;
- 效率、负载均衡速度高于Nginx而低于LVS;
- HAProxy支持TCP,可以对MySQL进行负载均衡;
- 调度算法丰富;
缺点
- 正则表达式弱于Nginx;
- 日志依赖于Syslogd;
HAProxy安装
1)安装haproxy
CentOS系统可以使用yum直接进行安装
$ yum install -y haproxy
查看HAProxy版本
$ haproxy -v
HA-Proxy version 1.5.18 2016/05/10
Copyright 2000-2016 Willy Tarreau <willy@haproxy.org>
2022年最新版本为2.6
2)修改配置文件
$ vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid #pid文件
maxconn 4000 #最大连接数(默认4000)
user haproxy
group haproxy
daemon #将进程放入deamon模式运行;
defaults
mode http #工作模式(默认http)
log global #采用全局定义的日志
option httplog #日志类别(http日志格式)
option dontlognull #不记录健康检查的日志信息
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch #Serverid服务器挂掉后强制定向到其它健康的服务器上
retries 3 #连接失败到3次后就任务服务不可用
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m #客户端连接超时
frontend main *:5000 #监听的端口
default_backend app #将请求转发到名为“app”的后端服务
backend static #定义后端服务
balance roundrobin
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
listen status bind *:10250 #定义监控页面
{配置文件构成}
global: 全局配置块,配置参数在全局生效;
default: 为后续的其它部分设置缺省参数,缺省参数可以被后续部分重置(即以后续配置部分为准);
frontend:定义前端服务;
backend:定义后端服务
3)服务启停
$ systemctl enable --now haproxy.service #启动haproxy并设置为开机自启
$ systemctl status haproxy.service #查看服务状态
$ systemctl stop haproxy.service #停止haproxy.service
监控HAProxy状态
查看HAProxy服务端口,然后通过主机IP:端口在浏览器访问HAProxy的监控页面。
$ ss -ntulp | grep haproxy
备注
- Queue队列数据的信息(当前队列数量,最大值,队列限制数量);
- Session rate每秒会话率(当前值,最大值,限制数量);
- Sessions总会话量(当前值,最大值,总量,Lbtot: total number of times a server was selected选中一台服务器所用的总时间);
- Bytes(入站、出站流量);
- Denied(拒绝请求、拒绝回应);
- Errors(错误请求、错误连接、错误回应);
- Warnings(重新尝试警告retry、重新连接redispatches);
- Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量、down机服务器数量、down机时长)。