0
点赞
收藏
分享

微信扫一扫

haproxy代理mysql

背景

在做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端口查看监控状态,可以看到两个均为已上线 image.png 使用navicat连接也可以看到不同的连接次数会连接到不同的后端

举报

相关推荐

0 条评论