news 2026/7/22 3:42:27

MySQL从库负载均衡:LVS+Keepalived架构实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL从库负载均衡:LVS+Keepalived架构实践

1. 为什么需要MySQL从库负载均衡?

在数据库架构设计中,MySQL主从复制是常见的读写分离方案。但随着业务增长,单一的从库往往难以承受所有读请求的压力。我曾经管理过一个电商系统,在促销活动期间,从库的CPU利用率长期保持在90%以上,导致查询响应时间从平时的50ms飙升到800ms。这就是典型的从库性能瓶颈问题。

LVS(Linux Virtual Server)配合Keepalived实现的负载均衡方案,能够将读请求均匀分发到多个从库节点。这种架构带来三个核心优势:

  1. 横向扩展能力:通过添加从库节点即可线性提升读性能,我们曾经通过增加2个从库实例将QPS从5k提升到15k
  2. 高可用保障:当某个从库故障时,LVS会自动剔除故障节点,确保服务连续性
  3. 透明访问:应用层只需连接虚拟IP,无需感知后端从库的增减变化

2. LVS+Keepalived架构解析

2.1 核心组件分工

在这个方案中,各组件扮演着不同角色:

  • LVS:作为四层负载均衡器,工作在TCP层,根据配置的调度算法(如wrr)将MySQL连接请求分发到后端Real Server
  • Keepalived:实现高可用的关键,通过VRRP协议维护VIP的漂移,并在Director Server故障时自动切换
  • Real Server:实际的MySQL从库实例,需要在本地回环接口绑定VIP

2.2 DR模式的工作原理

我们选择DR(Direct Routing)模式主要基于其性能优势。与NAT模式相比,DR模式的数据包流向具有显著特点:

  1. 请求路径

    • 客户端 → Director Server(LVS)→ Real Server
    • Director Server只修改目标MAC地址,不改变IP包内容
  2. 响应路径

    • Real Server → 客户端(直接返回,不经过Director Server)

这种非对称路径使得Director Server不会成为带宽瓶颈。在实际压力测试中,DR模式比NAT模式的吞吐量高出3倍以上。

3. 环境准备与配置细节

3.1 基础环境规划

建议使用以下服务器配置:

角色数量推荐配置网络要求
LVS Director22C4G同一网段,开启IP转发
MySQL Real Server≥2根据负载需求确定绑定VIP到lo接口,关闭ARP响应

3.2 关键配置步骤

3.2.1 Real Server配置

每个MySQL从库需要执行以下配置:

# 创建Real Server启动脚本 cat > /etc/init.d/realserver <<'EOF' #!/bin/bash VIP=182.148.15.239 case "$1" in start) echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ifconfig lo:0 $VIP netmask 255.255.255.255 up route add -host $VIP dev lo:0 ;; stop) ifconfig lo:0 down route del $VIP >/dev/null 2>&1 ;; *) echo "Usage: $0 {start|stop}" exit 1 esac EOF # 设置权限并启动 chmod +x /etc/init.d/realserver /etc/init.d/realserver start echo "/etc/init.d/realserver start" >> /etc/rc.local

关键参数说明

  • arp_ignore=1:只响应目标IP配置在接收网卡上的ARP请求
  • arp_announce=2:始终使用网卡的最合适本地地址作为ARP源地址
3.2.2 Director Server配置

主备Director都需要安装ipvsadm和keepalived:

# 安装依赖 yum install -y ipvsadm keepalived # 开启IP转发 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p

Keepalived配置示例(主节点):

cat > /etc/keepalived/keepalived.conf <<'EOF' ! Configuration File for keepalived global_defs { router_id LVS_MASTER } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 182.148.15.239 } } virtual_server 182.148.15.239 3306 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.1.101 3306 { weight 3 TCP_CHECK { connect_timeout 3 connect_port 3306 } } real_server 192.168.1.102 3306 { weight 2 TCP_CHECK { connect_timeout 3 connect_port 3306 } } } EOF

4. 生产环境优化建议

4.1 健康检查优化

默认的TCP_CHECK只能检测端口可用性,建议改用MYSQL_CHECK:

real_server 192.168.1.101 3306 { weight 3 MYSQL_CHECK { connect_timeout 3 user "monitor" passwd "password" database "test" } }

需要先在MySQL创建监控账号:

CREATE USER 'monitor'@'%' IDENTIFIED BY 'password'; GRANT USAGE ON *.* TO 'monitor'@'%';

4.2 会话保持配置

对于需要会话一致性的应用,调整persistence_timeout:

virtual_server 182.148.15.239 3306 { persistence_timeout 300 # 5分钟会话保持 persistence_granularity 255.255.255.255 }

4.3 监控指标采集

建议监控以下关键指标:

  1. LVS层面

    # 查看连接分布 ipvsadm -ln --stats # 查看每秒请求数 ipvsadm -ln --rate
  2. MySQL层面

    SHOW STATUS LIKE 'Threads_connected'; SHOW STATUS LIKE 'Queries';

5. 常见问题排查

5.1 VIP无法访问

排查步骤:

  1. 检查Director Server是否绑定了VIP:ip addr show
  2. 验证Real Server的lo接口配置:ifconfig lo:0
  3. 测试基础网络连通性:telnet <VIP> 3306

5.2 负载不均衡

可能原因及解决方案:

  1. 权重设置不合理:根据服务器配置调整weight参数
  2. 会话保持时间过长:适当减小persistence_timeout
  3. 调度算法不合适:对于短连接场景建议使用lc算法

5.3 故障切换延迟

优化建议:

  1. 减小advert_int值(最低可设到1秒)
  2. 配置更敏感的健康检查超时:
    TCP_CHECK { connect_timeout 2 retry 2 delay_before_retry 1 }

6. 性能压测数据参考

在我们的测试环境中,使用3台MySQL从库(16C32G)配合LVS DR模式,得到以下数据:

并发连接数平均QPS平均延迟CPU利用率
50012,00045ms60%
100028,00038ms75%
200052,00042ms85%

当单个从库故障时,系统自动切换时间在3-5秒内完成,期间仅有少量连接会报错。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 3:42:21

项目框架搭建

1.1软件生命周期sdlc 软件从想法到上线的完整过程 步骤 为1.2 瀑布vs敏捷瀑布模型适合需求极其稳定&#xff0c;合同性项目敏捷模型是现代主流选项特点&#xff1a;短周期迭代拥抱变化-需求可微调&#xff0c;但契约要同步文档1.3团队协作与分工2项目的rabc需求分析2.1求…

作者头像 李华
网站建设 2026/7/22 3:40:54

VC++运行库一键安装工具:彻底解决Windows软件缺失DLL报错

1. 项目概述&#xff1a;为什么你的电脑需要“VC运行库”&#xff1f;如果你经常在电脑上安装各种软件&#xff0c;尤其是大型游戏、专业设计或工程软件&#xff0c;大概率遇到过这样的弹窗&#xff1a;“无法启动此程序&#xff0c;因为计算机中丢失 MSVCP140.dll”或者“找不…

作者头像 李华
网站建设 2026/7/22 3:40:48

开源AI模型许可合规:技术原理、部署方案与风险应对

开源模型正面临前所未有的许可合规挑战。近期&#xff0c;美国政策变化可能对全球开源AI生态产生重大影响&#xff0c;特别是涉及商业应用和跨国分发的场景。对于依赖开源模型进行开发和研究的技术团队来说&#xff0c;理解当前的许可困境并提前制定应对策略至关重要。开源模型…

作者头像 李华
网站建设 2026/7/22 3:39:05

AI音乐改编工具实测分享,合规Remix与曲风重制实操经验

平时喜欢做音乐二创、给短视频BGM换风格重编的朋友&#xff0c;大多都试过用AI做Remix&#xff0c;这件事确实有意思&#xff0c;能把一段熟悉的旋律换完全不一样的编曲氛围&#xff0c;但实操下来很容易碰到两类麻烦。第一类是版权风险&#xff0c;随手截取网络热门歌曲上传改…

作者头像 李华
网站建设 2026/7/22 3:38:02

AIGC技术如何革新论文写作:智能降重与自动排版实战

1. 项目概述&#xff1a;AIGC技术如何革新论文写作流程论文写作向来是学术工作者和高校学生的痛点&#xff0c;特别是查重率和格式规范这两座大山。传统降重方式往往需要逐句改写&#xff0c;耗时耗力&#xff1b;而格式调整更是琐碎到让人崩溃&#xff0c;从目录生成到页眉页脚…

作者头像 李华