背景
在做mysql集群的时候需要一个负载均衡解决方案,以便流量可以按照需求传给mysql各个节点,以下主要记录haproxy的配置
安装mysql(略)
创建haproxy用户
create user if not exists 'haproxy'@'%' identified with mysql_native_password by '';
grant all privileges on *.* to 'haproxy'@'%';
flush privileges;
PS:如果是Mysql8需要使用mysql_native_password
加密方法,否则会报错
安装haproxy
yum install haproxy
配置haproxy
vi /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2 err
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
maxconn 4096 #默认的最大连接数
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
#timeout check 2000 #=心跳检测超时
log 127.0.0.1 local2 err #[err warning info debug]
listen admin_status
bind 0.0.0.0:82 #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称
mode http #设置http的7 层模式层
option httpclose
stats refresh 30s #设置监控页面刷新时间:5s
stats uri / # 设置监控页面的url
stats realm Haproxy Statistics #设置页面提示信息
stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名
stats hide-version #隐藏统计页面的HAproxy版本信息
listen proxy-mysql
bind *:3307 #监听端口
mode tcp #监听模式
balance roundrobin #负载均衡方式为轮循
option tcplog
option mysql-check user haproxy #haproxy为免密Mysql用户
server MySQL_1 10.10.10.103:3306 check weight 1 maxconn 2000 #后端服务器1
server MySQL_2 10.10.10.103:23306 check weight 1 maxconn 2000 #后端服务器2
配置rsyslog
将haproxy错误日志写入rsyslog指定的目录
cd /var/log
mkdir haproxy
cd haproxy
touch haproxy.log
chmod a+w haproxy.log
vi /etc/rsyslog.conf
添加
local2.* /var/log/haproxy/haproxy.log
将以下两行取消注释
$ModLoad imudp
$UDPServerRun 514
vi /etc/sysconfig/rsyslog
修改成
SYSLOGD_OPTIONS="-r -m 2 -c 2"
重启rsyslog和haproxy
systemctl restart rsyslog
systemctl restart haproxy
查看效果
访问浏览器82端口查看监控状态,可以看到两个均为已上线 使用navicat连接也可以看到不同的连接次数会连接到不同的后端
标签:haproxy,stats,log,代理,rsyslog,mysql,var From: https://blog.51cto.com/riverxyz/5791506