发布时间:2026/8/24 23:29:11
0823Keepalived + LVS(DR) + MariaDB主主 小白完整实战教程 文章目录Keepalived LVS(DR) MariaDB主主 小白完整实战教程一、业务背景与架构选型数据库业务四大刚性需求传统架构痛点本套方案组件分工项目预期收益二、MariaDB主从/主主复制原理核心日志与线程完整同步流程三、实验环境规划四、基础环境初始化所有机器1. 修改主机名、网卡IP2. router路由器开启IP转发五、部署MariaDB配置主主双向复制db1配置db2配置第一步db2作为从库同步db1db1→db2第二步db1作为从库同步db2db2→db1完成双向主主六、数据库后端RS配置LVS‑DR环境db1、db2两台都操作七、KeepalivedLVS配置调度器ha1、ha2ha1主调度器priority 110ha2备调度器priority 100八、业务测试验证1. 在数据库创建远程测试账号db1执行即可主主会同步到db22. client客户端安装mysql客户端工具访问VIP故障模拟测试核心高可用验证九、常见踩坑排错清单Keepalived LVS(DR) MariaDB主主 小白完整实战教程整套架构四层负载均衡LVS‑DR Keepalived实现调度器主备高可用 MariaDB双主互备复制实现数据库无间断对外服务企业常用数据库高可用方案。 整体流程客户端连接VIP访问数据库 → KeepalivedLVS做四层调度分发请求到两台MariaDB数据库双向主主复制保证两边数据一致任意一台调度器/数据库故障自动切换业务无感知。一、业务背景与架构选型数据库业务四大刚性需求高可用24×7不间断硬件宕机、进程崩溃不能导致业务中断故障自动转移。高并发承载读写量大单台数据库CPU/IO容易瓶颈。数据可靠性故障不丢失数据多节点之间数据同步一致。可扩展增加数据库节点不用修改业务代码。传统架构痛点架构问题单节点数据库单点故障宕机业务全部中断恢复慢有丢数据风险简单一主一从写操作全部压在主库故障切换需要人工操作容易出错业务层硬编码地址没有故障检测后端宕机业务还会继续访问故障节点新增节点需要改代码重启服务本套方案组件分工组件作用MariaDB主主复制两台数据库互为主从双向binlog同步两台库都可以读写一台故障另一台拥有完整数据LVS‑DR四层负载均衡转发数据库3306端口请求响应报文数据库直接返回客户端不经过调度器性能极高自带后端节点健康检测故障节点自动剔除Keepalived1. 给LVS做主备高可用VIP故障漂移消除调度器单点2. 直接写配置生成ipvs规则不用敲命令3. TCP健康检查后端数据库3306端口数据库挂掉自动摘除节点项目预期收益可用性提升故障自动切换无需人工干预写能力双库分担读能力可以继续追加从库横向扩展业务只需要连接一个VIP地址后端数据库变更业务代码零修改。二、MariaDB主从/主主复制原理主主复制本质就是两台数据库互做对方的主从复制A同步BB同步A实现双向数据同步。核心日志与线程binlog二进制日志主库记录所有增删改DDL/DML语句是复制的数据源。relay log中继日志从库从库拉取到binlog先存成本地中继日志再执行。binlog dump线程主库把binlog事件发送给从库IO线程。IO线程从库连接主库拉取binlog写入relay‑log。SQL线程从库读取relay‑log在本机回放SQL实现数据同步。完整同步流程主库执行写操作事务提交写入binlog日志。从库IO线程连接主库指定binlog文件名和position位置请求日志。主库dump线程读取binlog把事件传给从库IO线程。IO线程收到数据写入本机relay‑log记录同步位点。SQL线程读取relay‑log回放SQL语句完成数据同步。主主复制db1→db2做一遍主从db2→db1再反向做一遍主从双向同步。三、实验环境规划主机名IP地址网关角色VIPclient2.meng.cloud10.1.1.2110.1.1.20外部测试客户端无client1.meng.cloud10.1.8.2110.1.8.20内网测试客户端无router.meng.cloud10.1.8.20 / 10.1.1.2010.1.8.2路由器无ha1.meng.cloud10.1.8.1310.1.8.20LVSKeepalived主调度器10.1.8.100ha2.meng.cloud10.1.8.1410.1.8.20LVSKeepalived备调度器10.1.8.100db1.meng.cloud10.1.8.1110.1.8.20MariaDB数据库110.1.8.100dummy网卡db2.meng.cloud10.1.8.1210.1.8.20MariaDB数据库210.1.8.100dummy网卡VIP统一10.1.8.100业务客户端只连接这个IP访问数据库3306端口。四、基础环境初始化所有机器1. 修改主机名、网卡IP#### client2 hostnamectl set-hostname client2.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.1.21/24 ipv4.gateway 10.1.1.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 #### client1 hostnamectl set-hostname client1.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.21/24 ipv4.gateway 10.1.8.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 #### router路由器 hostnamectl set-hostname router.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.20/24 ipv4.gateway 10.1.8.2 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 nmcli connection add type ethernet con-name ens36 ifname ens36 ipv4.method manual ipv4.addresses 10.1.1.20/24 autoconnect yes nmcli connection up ens36 #### ha1调度器 hostnamectl set-hostname ha1.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.13/24 ipv4.gateway 10.1.8.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 #### ha2调度器 hostnamectl set-hostname ha2.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.14/24 ipv4.gateway 10.1.8.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 #### db1数据库 hostnamectl set-hostname db1.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.11/24 ipv4.gateway 10.1.8.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens33 #### db2数据库 hostnamectl set-hostname db2.meng.cloud nmcli connection modify ens33 ipv4.method manual ipv4.addresses 10.1.8.12/24 ipv4.gateway 10.1.8.20 ipv4.dns 223.5.5.5 autoconnect yes nmcli connection up ens332. router路由器开启IP转发echo net.ipv4.ip_forward1 /etc/sysctl.conf sysctl -p systemctl enable --now firewalld firewall-cmd --set-default-zonetrusted firewall-cmd --add-masquerade --permanent firewall-cmd --add-masquerade五、部署MariaDB配置主主双向复制db1配置安装服务开启binlog、relay‑logyum install -y mariadb-server vim /etc/my.cnf.d/server.cnf写入mysqld段落[mysqld] server-id1 log_binmysql-bin relay_logmysql-relay-bin启动服务systemctl enable --now mariadb安全初始化设置root密码huawei移除匿名用户等mysql_secure_installation交互步骤回车(旧密码为空) → Y设置密码输入huawei确认后面全部回车确认。创建复制账号授权给db2mysql -uroot -phuawei grant replication slave, replication client on *.* to repl10.1.8.12 identified by huawei; flush privileges; show master status\G;记录输出File、Position这里示例mysql‑bin.000003Position:327db2配置安装配置my.cnfserver‑id必须不一样db2写2yum install -y mariadb-server vim /etc/my.cnf.d/server.cnf [mysqld] server-id2 log_binmysql-bin relay_logmysql-relay-bin systemctl enable --now mariadb mysql_secure_installation创建复制账号授权给db1mysql -uroot -phuawei grant replication slave, replication client on *.* to repl10.1.8.11 identified by huawei; flush privileges; show master status\G;记录File、Position示例mysql‑bin.000002Position:1769第一步db2作为从库同步db1db1→db2db2数据库执行mysql命令替换成刚刚show master status拿到的文件名和positionchange master to master_host10.1.8.11, master_userrepl, master_passwordhuawei, master_port3306, master_log_filemysql-bin.000003, master_log_pos327, master_connect_retry30; start slave; show slave status\G;✅必须看到Slave_IO_Running: Yes、Slave_SQL_Running: Yes才算正常。测试db1建库建表插入数据db2查询确认数据同步过来。第二步db1作为从库同步db2db2→db1完成双向主主db1数据库执行替换db2的binlog文件名和positionchange master to master_host10.1.8.12, master_userrepl, master_passwordhuawei, master_port3306, master_log_filemysql-bin.000002, master_log_pos1769, master_connect_retry30; start slave; show slave status\G;✅db1这边也必须IO、SQL线程全部Yes双向复制完成两边写数据都可以互相同步。⚠️主主复制注意业务层要做好主键冲突规避否则双向同时插入相同主键会报错。六、数据库后端RS配置LVS‑DR环境db1、db2两台都操作DR模式关键点后端数据库也要绑定VIP/32掩码ARP抑制不对外响应VIP的ARP请求防止ARP漂移。# 创建dummy虚拟网卡绑定VIP掩码32位 nmcli connection add type dummy ifname dummy con-name dummy ipv4.method manual ipv4.addresses 10.1.8.100/32 nmcli connection up dummy # 配置arp抑制内核参数 cat /etc/sysctl.conf EOF net.ipv4.conf.all.arp_ignore 1 net.ipv4.conf.all.arp_announce 2 net.ipv4.conf.dummy.arp_ignore 1 net.ipv4.conf.dummy.arp_announce 2 EOF sysctl -p参数解释arp_ignore1只接收本机真实网卡IP的ARP请求dummy上的VIP不回复ARParp_announce2发送ARP广播不用VIP做源IP避免把VIP‑MAC广播出去造成冲突。七、KeepalivedLVS配置调度器ha1、ha2Keepalived的virtual_server段直接生成ipvs规则TCP_CHECK每隔一段时间探测3306端口数据库端口不通自动把该RS剔除负载均衡集群。ha1主调度器priority 110安装软件yum install -y keepalived ipvsadm cp /etc/keepalived/keepalived.conf{,.bak} vim /etc/keepalived/keepalived.conf完整配置文件! Configuration File for keepalived global_defs { router_id ha1 } vrrp_instance db { state MASTER interface ens33 virtual_router_id 51 priority 110 advert_int 1 authentication { auth_type PASS auth_pass meng123 } virtual_ipaddress { 10.1.8.100/24 } } virtual_server 10.1.8.100 3306 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 10.1.8.11 3306 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 10.1.8.12 3306 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } }启动服务systemctl enable --now keepalived ipvsadm -Ln ip addrha2备调度器priority 100yum install -y keepalived ipvsadm cp /etc/keepalived/keepalived.conf{,.bak} vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id ha2 } vrrp_instance db { state BACKUP interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass meng123 } virtual_ipaddress { 10.1.8.100/24 } } virtual_server 10.1.8.100 3306 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 10.1.8.11 3306 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 10.1.8.12 3306 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } } systemctl enable --now keepalived参数说明 virtual_serverdelay_loop 6每6秒执行一次后端TCP健康检查lb_algo rr轮询调度算法lb_kind DRLVS DR模式persistence_timeout 50会话保持50秒同一个客户端50秒内分配到同一台后端TCP_CHECK探测3306端口端口访问失败自动从ipvs集群移除该real_server。重要提醒real_server后面只能写IP不支持域名LVS四层工作不做域名解析填域名直接启动报错。八、业务测试验证1. 在数据库创建远程测试账号db1执行即可主主会同步到db2mysql -uroot -phuawei grant ALL PRIVILEGES on *.* to meng% identified by huawei; flush privileges;2. client客户端安装mysql客户端工具访问VIPyum install -y mysql # 访问VIP不需要写db1/db2真实IP mysql -umeng -phuawei -h 10.1.8.100故障模拟测试核心高可用验证调度器故障测试ha1执行systemctl stop keepalived观察VIP漂移到ha2客户端依然可以正常连接数据库。恢复ha1 keepalivedVIP切回ha1。数据库节点故障测试db1执行systemctl stop mariadbkeepalived检测3306端口不通自动将db1剔除集群客户端访问VIP只会调度到db2业务不中断启动db1数据库自动重新加入集群。双向复制验证db1新建库表插入数据db2查询看是否同步db2插入数据db1查询看是否同步。九、常见踩坑排错清单LVS‑DR访问不通db1/db2是否配置dummy网卡VIP掩码/32arp_ignore / arp_announce内核参数是否生效所有机器必须在同一个二层广播域DR模式依靠MAC转发跨VLAN不行。MariaDB主主不同步server‑id两台数据库不能相同repl复制账号授权IP是否正确密码一致show slave status\G看IO/SQL线程状态Last_IO_Error、Last_SQL_Error查看报错。Keepalived脑裂两台调度器同时拿到VIP防火墙放行VRRP协议firewall‑cmd --add‑protocolvrrp --permanentvrrp实例virtual_router_id两台必须一致auth_pass密码两台必须一模一样多网卡机器使用mcast_src_ip指定心跳报文发出网卡IP。keepalived启动失败virtual_server、real_server语法不能写错大括号配对不能使用域名写后端地址。主主复制业务坑应用层尽量规避两台库同时生成自增主键否则主键冲突复制报错生产建议配合中间件ProxySQL做读写分离。制账号授权IP是否正确密码一致show slave status\G看IO/SQL线程状态Last_IO_Error、Last_SQL_Error查看报错。Keepalived脑裂两台调度器同时拿到VIP防火墙放行VRRP协议firewall‑cmd --add‑protocolvrrp --permanentvrrp实例virtual_router_id两台必须一致auth_pass密码两台必须一模一样多网卡机器使用mcast_src_ip指定心跳报文发出网卡IP。keepalived启动失败virtual_server、real_server语法不能写错大括号配对不能使用域名写后端地址。主主复制业务坑应用层尽量规避两台库同时生成自增主键否则主键冲突复制报错生产建议配合中间件ProxySQL做读写分离。

相关新闻

2026/8/24 23:29:11

铸造erp系统选哪家?易呈专注中小加工厂生产管理解决方案

铸造erp系统选哪家?易呈专注中小加工厂生产管理解决方案很多中小铸造加工厂都会遇到生产进度看不清、库存对不上、铸件批次难追溯、成本算不清等难题。不少老板在搜索铸造erp系统、小型铸造厂管理软件、铸造车间工单管理、铸造厂库存怎么管好这类问题时,…

2026/8/24 23:29:11

特征工程的最后防线:防泄漏、单调性与切点一致

特征工程最后一道防线是"别作死"——防泄漏。三个保命细节,任何一个出问题,模型上线都翻车。防泄漏(最致命):不小心把答案相关信息喂给模型,导致线下好看线上崩。两类最常见:① 时间泄漏,用了申请时还不存在的信息(如贷前模型用借后还款行为——客户还没借呢);② 标签…

2026/8/24 23:24:10

制造业来料管理:构建生产质量第一道防线的核心策略

1. 来料管理:生产质量的第一道防线在制造业干了十几年,我见过太多因为一颗螺丝、一卷胶带、一块电路板导致整条生产线停摆,甚至整批产品报废的案例。这些问题的根源,往往不在复杂的装配工艺,也不在高精度的加工设备&am…

2026/8/25 1:54:19

自托管沙盒化AI软件工厂:构建安全可控的智能体开发环境

你是否曾想过,让一个AI助手帮你自动完成代码编写、测试、部署,甚至修复Bug,而你只需要给出一个模糊的需求?这听起来像是科幻电影里的场景,但“智能体驱动的软件工厂”正在让这一切成为现实。然而,当你兴奋地…

2026/8/25 1:54:19

基于腾讯云AMS构建直播音频审核系统:架构设计与实战避坑指南

1. 项目概述:为什么需要自建直播音频审核系统? 直播行业这几年有多火,大家有目共睹。但火的同时,监管压力和责任风险也像一把达摩克利斯之剑悬在头上。我见过太多团队,初期为了快速上线,对音频内容完全依赖…

2026/8/25 1:54:19

快手前端面试核心考点与高频手写题解析

1. 快手前端面试核心考点解析快手作为国内头部短视频平台,其前端技术栈具有高并发、高性能、强交互的特点。从近两年的面试反馈来看,快手前端面试主要聚焦以下几个核心维度:1.1 框架深度考察React和Vue3是快手当前主要技术栈,面试…

2026/8/25 1:54:19

JVM动态语言性能优化:Nashorn引擎原理剖析与实战调优

在 JVM 上处理动态语言性能问题,尤其是与 Nashorn 引擎相关的挑战,是许多后端和全栈开发者都曾踩过的“坑”。无论是为了在 Java 应用中嵌入脚本逻辑,还是为了优化遗留系统的 JavaScript 执行效率,理解 JVM 对动态语言的支持机制都…

2026/8/25 1:54:19

AI SRE落地实践:从概念到原型,破解运维智能化核心挑战

1. 先搞清楚“AI SRE”到底在解决什么问题,以及为什么会被质疑 最近关于“AI SRE”的讨论很多,但很多声音都停留在概念和炒作层面,导致不少想尝试的团队和买家感到困惑甚至质疑。作为一个在运维和自动化领域摸爬滚打多年的从业者,…

2026/8/25 1:49:19

万字长文解读 LLM Agent:总体框架、经典论文与实践

LLM Agent真正走向落地,关键不在于给模型叠加更多概念,而在于把任务规划、工具调用、环境反馈与自我反思组织成可验证的工程闭环。本文从工具与Agent的基本定义出发,梳理总体架构和核心交互机制,进一步解读ReAct、Plan-and-Solve等…

2026/8/25 1:04:19

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 0:04:14

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南

三步把QQ空间历史说说导出到本地:GetQzonehistory 极简指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory Meta Description:GetQzonehistory 是一个QQ空间历史说…

2026/8/25 0:04:14

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…