2025年5月18日 星期日 乙巳(蛇)年 二月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

Keepalived+Haproxy负载均衡MySQL集群服务器

时间:08-27来源:作者:点击数:55

上一篇我们用三台Ubuntu搭建了MySQL集群服务器

docker搭建了MySQL集群服务器

这里讲一下利用Haproxy对MySQL进行负载均衡

将这台服务器的ip设置为192.168.117.120

MySQL集群服务器的ip分别是

192.168.117.111

192.168.117.112

192.168.117.113

我们需要用Navicat登录其中一台MySQL服务器,创建一个用户haproxy,密码设置为空

对应sql

  • CREATE USER `haproxy`@`%` IDENTIFIED WITH mysql_native_password;

在192.168.117.120 新服务器上安装haproxy软件

  • apt install haproxy -y

修改配置文件

  • vim /etc/haproxy/haproxy.cfg

在文件末添加后台管理界面 以及监听MySQL进行负载均衡

你需要好好看一下添加的内容注释

  • #监控界面
  • listen admin_stats
  • #监控界面的访问的IP和端口
  • bind 0.0.0.0:4001
  • #访问协议
  • mode http
  • #URI相对地址 ip:端口/dbs可以查看后台
  • stats uri /dbs
  • #统计报告格式
  • stats realm Global\ statistics
  • #登陆帐户信息 账户admin 密码123456
  • stats auth admin:123456
  • #数据库负载均衡
  • listen proxy-mysql
  • #访问的IP和端口
  • bind 0.0.0.0:3306
  • #网络协议
  • mode tcp
  • #负载均衡算法(轮询算法、后面的权重不会生效)
  • #轮询算法:roundrobin
  • #权重算法:static-rr
  • #最少连接算法:leastconn
  • #请求源IP算法:source
  • balance roundrobin
  • #日志格式
  • option tcplog
  • #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
  • option mysql-check user haproxy
  • server MySQL_1 192.168.117.111:3306 check weight 1 maxconn 2000
  • server MySQL_2 192.168.117.112:3306 check weight 1 maxconn 2000
  • server MySQL_3 192.168.117.113:3306 check weight 1 maxconn 2000
  • server MySQL_4 192.168.117.114:3306 check weight 1 maxconn 2000
  • server MySQL_5 192.168.117.115:3306 check weight 1 maxconn 2000
  • #使用keepalive检测死链
  • option tcpka

将配置文件生效

  • haproxy -f /etc/haproxy/haproxy.cfg

然后就可以通过浏览器查看mysql服务器的状态

http://localhost:4001/dbs

输入在配置文件填入的 账号admin 密码123456即可查看后台情况

以及通过haproxy的ip 端口3306可以管理mysql数据库 这个也就是暴露在外部使用的数据库服务器ip

在这个数据库中操作和直接在各个节点数据库操作是一样的效果,但haproxy本身不存储数据库

为了让haproxy高可用,我们需要搭建haproxy集群,采用keepalive技术让让haproxy可以实现down机自动切换备用服务器

在haproxy服务器上安装keepalived

  • apt install keepalived -y

查看本机网卡

  • ifconfig

创建keepalived配置文件

  • vim /etc/keepalived/keepalived.conf

添加如下

  • ! Configuration File for keepalived
  • global_defs {
  • # 通知邮件服务器的配置
  • notification_email {
  • # 当master失去VIP或则VIP的时候,会发一封通知邮件到your-email@qq.com
  • your-email@qq.com
  • }
  • # 发件人信息
  • notification_email_from keepalived@qq.com
  • # 邮件服务器地址
  • smtp_server 127.0.0.1
  • # 邮件服务器超时时间
  • smtp_connect_timeout 30
  • # 邮件TITLE
  • router_id LVS_DEVEL
  • }
  • vrrp_instance VI_1 {
  • # 主机: MASTER
  • # 备机: BACKUP
  • state MASTER
  • # 实例绑定的网卡, 用ip a命令查看网卡编号
  • interface ens33
  • # 虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样
  • virtual_router_id 88
  • # 优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
  • priority 100
  • # 主备之间同步检查的时间间隔单位秒
  • advert_int 1
  • # 验证类型和密码
  • authentication {
  • # 验证类型有两种 PASS和HA
  • auth_type PASS
  • # 验证密码,在一个实例中主备密码保持一样
  • auth_pass 123456
  • }
  • # 虚拟IP地址,可以有多个,每行一个
  • virtual_ipaddress {
  • 192.168.117.244
  • }
  • }
  • virtual_server 192.168.117.244 443 {
  • # 健康检查时间间隔
  • delay_loop 6
  • lb_algo rr
  • lb_kind NAT
  • persistence_timeout 50
  • protocol TCP
  • # 通过调度算法把Master切换到真实的负载均衡服务器上
  • # 真实的主机会定期确定进行健康检查,如果MASTER不可用,则切换到备机上
  • real_server 192.168.117.120 443 {
  • weight 1
  • TCP_CHECK {
  • # 连接超端口
  • connect_port 443
  • # 连接超时时间
  • connect_timeout 3
  • }
  • }
  • real_server 192.168.1.121 443 {
  • weight 1
  • TCP_CHECK {
  • connect_port 443
  • connect_timeout 3
  • }
  • }
  • }

注意修改对应参数,virtual_ipaddress是根据网卡网段自己设置的一个虚拟的ip,haproxy的真实ip是192.168.117.120

启动keepalived

  • service keepalived restart

测试 通过ping 虚拟ip测试一下

通过 ping 192.168.117.244

同样的道理可以再创建一台Haproxy+Keepalived的服务器,因为在配置文件里我写入的是两台服务器ip分别是

192.168.117.120 和 192.168.117.121

实际暴露在外面使用的是虚拟ip 192.168.117.244

可以通过Navicat连接虚拟ip调用MySQL集群这样MySQL集群架构变成了

如果你还想进一步学习:搭建Nginx集群+Haproxy集群

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门