HAProxy负载平衡集群配置及参数说明
准备4台Linux服务器,两台做Web服务器,1台安装HAProxy,1台做客户端
client
192.168.4.100/24
proxy (双网卡)
192.168.4.5/24
192.168.2.5/24
web1
192.168.2.100/24
web2
192.168.2.200/24
web1、web2 配置web服务器apache or nginx
echo web100 > /var/www/html/index.html
echo web200 > /var/www/html/index.html
部署HAProxy服务器
yum -y install haproxy
proxy开启路由转发功能
[root@proxy ~]# echo 1 > /proc/sys/net/ipv4/ip_forward // 临时变更
[root@proxy ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf // 永久变更
修改配置文件
[root@proxy ~]# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2 // [err warning info debug]
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid // haproxy的pid存放路径
maxconn 4000 // 最大连接数,默认4000
user haproxy
group haproxy
daemon // 创建1个进程进入deamon模式运行
defaults
mode http // http/tcp/health 默认模式采用全局定义的日志
option dontlognull // 不记录健康检查的日志信息
option httpclose // 每次请求完毕后主动关闭http通道
option httplog // 日志类别http日志格式
option forwardfor // 后端服务器可以从Http Header中获得客户端ip
option redispatch // serverid服务器挂掉后强制定向到其他健康服务器
timeout connect 10000 // 如果backend没有指定,默认为10s
timeout client 300000 // 客户端连接超时
timeout server 300000 // 服务器连接超时
maxconn 60000 // 最大连接数
retries 3 // 3次连接失败就认为服务不可用,也可以通过后面设置
listen stats
bind 0.0.0.0:80 // 监控页面的端口号
stats refresh 30s // 统计页面自动刷新时间30秒
stats uri /monitor // 统计页面url
stats realm HaManager // 统计页面密码框上提示文本
stats auth admin:admin // 统计页面用户名和密码设置
#stats hide-version // 隐藏统计页面上HAProxy的版本信息
访问后台用户服务器的listen
listen myweb 0.0.0.0:80 // 运行在所有地址的80端口上
cookie SERVERID rewrite // 向服务器写入cookie
balance roundrobin // 调度算是rr
server web1 192.168.2.100:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.2.200:80 cookie app1inst2 check inter 2000 rise 2 fall 5
每2000ms检查一次服务器,2次成功是好的,5次失败表示故障
......
启动服务器并设置开机启动
[root@proxy ~]# systemctl start haproxy
[root@proxy ~]# systemctl enable haproxy
客户端验证
[root@client ~]# curl 192.168.4.5
web100
[root@client ~]# curl 192.168.4.5
web200
.........
配置haproxy日志:(配置本机接受通过网络发来的日志)
[root@proxy ~]# vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp //打开接受udp系统日志
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp //打开接受tcp系统日志
$InputTCPServerRun 514
......
重启日志服务
[root@proxy ~]# systemctl restart rsyslog
访问haproxy调度器,可以看到日志信息
[root@proxy ~]# tail -f /var/log/messages
客户端访问 http://192.168.4.5:1080/monitor 测试状态监控页面
firefox http://192.168.4.4:1080/monitor
监控页面参数备注:
Queue队列数据的信息(当前队列数量,最大值,队列限制数量);
Session rate每秒会话率(当前值,最大值,限制数量);
Sessions总会话量(当前值,最大值,总量,Lbtot: total number of times a server was selected选中一台服务器所用的总时间);
Bytes(入站、出站流量);
Denied(拒绝请求、拒绝回应);
Errors(错误请求、错误连接、错误回应);
Warnings(重新尝试警告retry、重新连接redispatches);
Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量、down机服务器数量、down机时长)。
附加:
HTTP协议响应的状态码
200:正常
301:重定向
404:not found
403:forbidden 禁止访问
501:Internal Error 服务期内部错误