mysql双主互从通过KeepAlived虚拟IP实现高可用

mysql双主互从通过KeepAlived虚拟IP实现高可用

在mysql 双主互从的基础上,

架构图:

Keepalived有两个主要的功能:

  • 提供虚拟IP,实现双机热备
  • 通过LVS,实现负载均衡

安装

python 复制代码
# 安装
yum -y install keepalived 
# 卸载
yum remove keepalived 

修改 keepalived 配置文件

python 复制代码
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.original
vi /etc/keepalived/keepalived.conf

master

keepalived.conf

python 复制代码
global_defs {
	router_id LVS_1
	script_user root
}

vrrp_script check_mysql_port {
	script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
	interval 2     # 每隔两秒运行上一行脚本
	weight 2
}


vrrp_instance VI_1 {
    # 主机=MASTER;备用机=BACKUP
	state MASTER
    # 该实例绑定的网卡名称
	interface ens192
    # 保证主备节点一致
	virtual_router_id 148
    # 权重,master值 > backup值
	priority 100
    # 主备组播报发送间隔时间1秒
	advert_int 1
    # 认证权限密码,防止非法节点进入
	authentication {
    auth_type PASS
    auth_pass 1111
	}	
    # 虚拟出来的ip,可以有多个(vip)
	virtual_ipaddress {
    178.119.30.13
	}
    # 调用监控脚本
	track_script {
    check_mysql_port
	}
}

检测xxx.sh

check_mysql_port.sh

安装killall 命令

python 复制代码
# 查询
yum search killall
# 安装对应组件
yum install psmisc -y

安装netstat

python 复制代码
yum install -y net-tools
python 复制代码
#!/bin/bash
A=`netstat -nltp|grep 3306|wc -l`
if [ $A -eq 2;
then
    echo "$host mysql login successfully"
    exit 0
else
    echo "mysql login failed"
    killall keepalived
    exit 2
fi

修改脚本xxx.sh权限

python 复制代码
chmod 777 check_mysql_port.sh

slave

keepalived.conf

python 复制代码
global_defs {
	router_id LVS_1
	script_user root
}

vrrp_script check_mysql_port {
	script "/etc/keepalived/check_mysql_port.sh"    # 脚本存放的位置
	interval 2     # 每隔两秒运行上一行脚本
	weight 2
}


vrrp_instance VI_1 {
    # 主机=MASTER;备用机=BACKUP
	state BACKUP
    # 该实例绑定的网卡名称
	interface ens192
    # 保证主备节点一致
	virtual_router_id 148
    # 权重,master值 > backup值
	priority 80
    # 主备组播报发送间隔时间1秒
	advert_int 1
    # 认证权限密码,防止非法节点进入
	authentication {
    auth_type PASS
    auth_pass 1111
	}	
    # 虚拟出来的ip,可以有多个(vip)
	virtual_ipaddress {
    178.119.30.13
	}
    # 调用监控脚本
	track_script {
    check_mysql_port
	}
}

master VS slave

结果展示

启动keepalived

  • master



  • slave

停止容器,使vip飘移

  • master

  • slave

systemctl 命令

python 复制代码
# 启动 keepalived
systemctl start keepalived  

# 加入开机启动 keepalived
systemctl enable keepalived 

# 重新启动 keepalived
systemctl restart keepalived  

# 查看 keepalived 状态
systemctl status keepalived   

# 加载配置文件
systemctl daemon-reload

service VS systemctl

相关推荐
xrandzj几秒前
MySQL8.0 从零通关核心操作手册(Ubuntu实战版)
数据库·mysql
我不会插花弄玉14 分钟前
4.数据类型【由浅入深-MySQL】
数据库·mysql
好好学习的星熊3 小时前
SQL 面试题(数据分析师)
sql·mysql
破土士V3 小时前
MySQL基础知识集合
数据库·mysql
360智汇云4 小时前
MySQL-DTS数据同步工具:告别手动拼方案,迁移同步一站完成
数据库·mysql
宠友信息6 小时前
内容社区源码开发实践解析,用Spring Boot打造1:1仿小红书源码平台
java·spring boot·redis·websocket·mysql·spring·uni-app
λqaq78 小时前
MySQL 数据库基础(2)约束、用户权限、远程连接、外键与 TCP/UDP 理解
linux·数据库·python·tcp/ip·mysql
叫我:松哥9 小时前
基于flask图书数据管理系统,技术栈flask+MySQL+boostrap
python·mysql·flask
PHP实战开发录10 小时前
企业微信客户标签同步冲突排查记录
mysql·系统安全·php·企业微信·开发
又是重名了11 小时前
集团项目信创改造3 mysql to dm 插入获取主键
数据库·mysql·dameng