mysqlrouter高可用
环境准备与网络配置
首先添加三台虚拟机,直接编辑网卡配置文件,将IP地址改为顺序的静态IP地址。
配置完成后重启网卡服务,并添加相应的域名解析记录。
图1:虚拟机网络配置完成截图
一、配置路由器
配置server5作为路由设备,方法与server4的配置相同;可以直接使用scp命令将配置文件全部复制过去。
图2:SCP复制配置文件过程
但是在启动服务时发生了报错。
图3:MySQL Router启动报错信息
故障分析:第一行表示开机自启配置已经创建成功,系统完成了软链接写入,下次开机可以自动拉起MySQL Router服务。可能原因是:MySQL Router没有初始化配置文件,无法直接启动。
图4:MySQL Router配置文件初始化过程
图5:MySQL Router配置文件内容
图6:
图7:MySQL Router包下载解压
图8:
图9:
图10:
二、配置LVS调度算法
图11:进入LVS配置界面
图12:LVS调度算法配置文件
图13:
图14:LVS健康VIP配置
配置过程说明:配置完成后查看LVS当前全部负载均衡调度表规则。在配置过程中发现一直无法挂载VIP,经过排查发现IP地址192.168.223.100已被占用,因此将VIP地址改为192.168.223.200,然后重启服务。查看IP显示VIP已经成功挂载在master节点上,如下图所示:
图15:VIP挂载成功确认
图16:LVS调度规则查看
接下来配置后端节点,在DR(Direct Routing)模式下也需要添加VIP地址,server4和server5执行相同的操作。
图17:后端节点VIP配置
ARP表配置说明:安装arptables工具,并进行如下设置:
1. 丢弃所有发给VIP的入站ARP请求:当局域网内其他设备询问"谁是192.168.223.200?"时,本机直接无视、不回复ARP应答,杜绝本机抢着宣告VIP归属。
2. 管控本机向外主动发送的ARP包:只要本机要发送去往VIP的ARP报文,强制把ARP包里的源IP伪装成本机真实物理IP:192.168.223.137。这样本机内部程序访问VIP时,向外发送的ARP报文不会携带VIP作为源IP,避免内网ARP表紊乱。
将当前ARP防火墙规则写入配置文件,实现持久化保存,确保重启服务器后不会丢失规则。
图18:ARP表规则配置
通过LVS负载均衡VIP,连接MySQL读写端口,使用kyy账号登录数据库,登录成功,进入了数据库交互终端。
图19:通过LVS连接MySQL成功
连接链路完整走向: 客户端 → VIP (192.168.223.200:6446) → LVS 四层负载均衡 → 后端主节点 MySQL Router → 主 MySQL 数据库 访问完全通畅,负载均衡 + MySQL 读写端口整套环境已经调试完毕可用。
删除指定 IP 的 ARP 缓存记录
再次通过虚拟 VIP 192.168.223.200、6446 端口,使用账号密码成功接入 MySQL 集群
列出系统中所有进程打开的文件、端口、套接字、设备
客户端 → Keepalived 虚拟 VIP → MySQL Router(6446 代理端口)→ 经由网关路由 → server1 主库
VIP 高可用故障转移 主节点 server6 停掉 Keepalived,备用 server7 自动承接 VIP,连接不中断。 读写端口分离调度 6446 写:仅主库 138,保证数据写入统一;
6447 读:主 + 从两台节点分摊查询压力。
LVS 调度正常 连接成功计数,ActiveConn 出现数值,不再一直为 0。