Mysql主从之keepalive+MySQL高可用

一、Keepalived概述

keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

keepalived 是以VRRP 协议为实现基础的,VRRP 全称VirtualRouter Redundancy Protocol,即虚拟路由冗余协议。虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N 台提供相同功能的路由器组成一个路由器组,这个组里面有一个master 和多个backup,master 上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master 会发组播,当backup收不到vrrp 包时就认为master 宕掉了,这时就需要根据VRRP 的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

二、keepalived 主要有三个模块,分别是core、check 和vrrp。

core:模块为keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。

check:负责健康检查,包括常见的各种检查方式。

vrrp:模块是来实现VRRP 协议的。

Keepalived环境说明

mysql主数据库IP地址master1:192.168.179.10(已搭建主从复制)

mysql备数据库IP地址backup:192.168.179.12(已搭建主从复制)

VIIP虚拟IP地址:192.168.179.15(keepalived 用于漂移的浮动ip地址)
查看安装路径文件:rpm -ql keepalived

三、配置文件

3.1、keepalived 心跳检测脚本(mysql两台服务器都需要配置)

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| cat /usr/mysql/chk_mysql.sh #!/bin/bash counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l) if [ "${counter}" -eq 0 ]; then systemctl stop keepalived fi |

3.2、master节点keepalived配置(192.168.179.10数据库服务器节点)

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| !Configuration File for keepalived global_defs { notification_email { ceshi@qq.com } notification_email_from ceshi@qq.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MASTER-HA } vrrp_script chk_mysql_port { #检测mysql服务是否在运行。用脚本检测等等 script "/usr/mysql/chk_mysql.sh" #这里通过脚本监测 interval 2 #脚本执行间隔,每2s检测一次 weight --5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5   fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)   rise 1 #检测1次成功就算成功。但不修改优先级 } vrrp_instance VI_1 { state dataBase1 #这里所有节点都定义为dataBase1 interface ens33 #指定虚拟ip的网卡接口 mcast_src_ip 192.168.179.10 #本地IP virtual_router_id 51 #路由器标识,MASTER和BACKUP必须是一致的 #定义优先级,数字越大,优先级越高同一个vrrp_instance,MASTER的优先级大于dataBase1的优先级。   priority 101 advert_int 1 nopreempt #不抢占模式,在优先级高的机器上设置即可,优先级低的机器可不设置 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.179.15 #虚拟IP } track_script { chk_mysql_port } } |

3.3、备节点keepalived配置(192.168.179.11数据库服务器节点)

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| !Configuration File for keepalived global_defs { notification_email { ceshi@qq.com } notification_email_from ceshi@qq.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id MASTER-HA } vrrp_script chk_mysql_port { script "/usr/mysql/chk_mysql.sh" interval 2 weight -5 fall 2 rise 1 } vrrp_instance VI_1 { state dataBase1 interface ens33 mcast_src_ip 192.168.179.12 virtual_router_id 51 priority 99 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.179.15 #虚拟IP } track_script { chk_mysql_port } } |

在配置完成之后,启动MySQL数据库和keepalive,需要注意,先启动MySQL,再启动keepalive,因为keepalive启动后会检测MySQL的运行状态,如果MySQL运行异常,keepalive会自动关闭。

相关推荐
Karoku0666 天前
【网站架构部署与优化】LVS负载均衡群集
linux·运维·网络·nginx·架构·负载均衡·lvs
weixin_438197387 天前
LVS+keepalived整合负载均衡配置
服务器·负载均衡·lvs
爱吃龙利鱼7 天前
rocky9.2实现lvs(DR模式)+keepalived实现高可用的案例详解(双机热备、lvs负载均衡、对后端服务器健康检查)
linux·运维·服务器·云原生·负载均衡·lvs
李高杰99610 天前
LVS-DR实战案例,实现四层负载均衡
linux·运维·lvs
小程爱敲代码11 天前
keepalived+lvs集群
运维·网络·lvs
爱吃龙利鱼18 天前
rocky9.2的lvs的NAT模式下的基本使用的详细示例
lvs
单字叶18 天前
LVS+Keepalived高可用集群
lvs
小技与小术18 天前
lvs命令介绍
linux·运维·服务器·lvs
小技与小术19 天前
lvs-nat模式实验详解
linux·运维·服务器·网络·lvs
单字叶19 天前
LVS-DR
lvs