【原创】使用keepalived虚拟IP(VIP)实现MySQL的高可用故障转移

news2024/11/18 3:42:31

1. 背景

A、B服务器均部署有MySQL数据库,且互为主主。此处为A、B服务器部署MySQL数据库实现高可用的部署,当其中一台MySQL宕机后,VIP可自动切换至另一台MySQL提供服务,实现故障的自动迁移,实现高可用的目的。具体流程如下图所示:

在这里插入图片描述
Keepalived官网:Keepalived

通过Keepalived的VIP不仅仅能实现数据库的故障转移,还可以实现很多其他的高可用故障转移业务,可自由发挥,以下是详细的部署安装教程。

2. 安装

2.1. 安装keepalived

# 安装keepalived
yum install keepalived -y 
# 设置开机启动
systemctl enable keepalived

3. 配置与启动

3.1. 配置Master

! Configuration File for keepalived

# 全局配置
global_defs {
   # 路由ID,当前计算机结点标识符,需要保证全局唯一
   router_id keep_16
}

vrrp_strict check_mysql_alive {
    script "/etc/keepalived/check_mysql_alive.sh"    # 检测脚本位置
    interval 2                                       # 每隔2s执行一次检测脚本
    weight 10                                        # 脚本运行成功,权重+10
}

# 计算机结点
vrrp_instance VI_1 {
    # 当前节点状态,MASTER/BACKUP
    state MASTER
    # 当前实例绑定的网卡
    interface ens33
    # 虚拟路由ID,需保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,优先级高的在master挂掉之后就能成为master,一般保证主节点的优先级最高
    priority 100
    # 主备之间同步检查的时间间隔(心跳),默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点进入,需要保证主备一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 追踪脚本,当前实例vrrp_instance实例化以后便会运行
    track_script {
        check_mysql_alive    # 对应vrrp_strict定义的名称
    }
    # 虚拟IP(VIP)
    virtual_ipaddress {
        192.168.3.20
    }
}

3.2. 配置Backup

# 全局配置
global_defs {
   # 路由ID,当前计算机结点标识符,需要保证全局唯一
   router_id keep_26
}

# 计算机结点
vrrp_instance VI_1 {
    # 当前节点状态,MASTER/BACKUP
    state BACKUP
    # 当前实例绑定的网卡
    interface ens33
    # 虚拟路由ID,需保证主备节点一致
    virtual_router_id 51
    # 优先级/权重,优先级高的在master挂掉之后就能成为master,一般保证主节点的优先级最高
    priority 80
    # 主备之间同步检查的时间间隔(心跳),默认1s
    advert_int 1
    # 认证授权的密码,防止非法节点进入,需要保证主备一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # 虚拟IP(VIP),主备一致
    virtual_ipaddress {
        192.168.3.20
    }
}

3.3. 启动与测试

如上配置完成之后,启动Keepalived

systemctl start keepalived

在Server A服务器上,手动停止mysql,模拟mysql数据库宕机,查看keepalived日志,可见keepalived检测到mysql_check.sh返回非0,将keepalived置为fault,并将vip转移到Server B
在这里插入图片描述
在备用服务器Server B上,可以看到keepalived状态变为master:
在这里插入图片描述

4. FAQ

4.1. 注意

1、VIP需要采用内网中与部署服务器同一网段不会被使用空闲的一个内网IP,vip使用真实地址可通过查看arp路由表。

# 查看ARP路由表
arp

2、失败请检查日志,Keepalived默认日志文件路径为

/var/log/keepalived.log

3、内网环境需要支持VRRP协议

4.2. 配置防火墙

若测试不通过,在防火墙上开启富策略,放通keepalived广播消息发送地址192.168.3.20(这里放通整个/24网段),同时开通直连策略,放通vrrp协议

#开通富策略,放通广播消息
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 destination address=192.168.3.20/24 protocol value=ip accept'
#在直连策略中放通vrrp协议
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface ens224 --destination 192.168.3.20 --protocol vrrp -j ACCEPT
firewall-cmd --reload
firewall-cmd --list-all

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1955751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微服务-MybatisPlus下

微服务-MybatisPlus下 文章目录 微服务-MybatisPlus下1 MybatisPlus扩展功能1.1 代码生成1.2 静态工具1.3 逻辑删除1.4 枚举处理器1.5 JSON处理器**1.5.1.定义实体****1.5.2.使用类型处理器** **1.6 配置加密(选学)**1.6.1.生成秘钥**1.6.2.修改配置****…

哪里可以查找短视频素材?6个素材查找下载渠道分享!

在短视频的风靡浪潮中,不少创作者纷纷投身于这一领域,无论是分享生活点滴还是进行商业宣传,高质量的短视频内容总能吸引众多观众的目光。然而,精良的短视频制作离不开优质的素材支持。本文将为大家介绍6个优秀的高质量短视频素材下…

ProxmoxPVE虚拟化平台--U盘挂载、硬盘直通

界面说明 ### 网络设置 ISO镜像文件 虚拟机中使用到的磁盘 挂载USB设备 这个操作比较简单,不涉及命令 选中需要到的虚拟机,然后选择: 添加->USB设置选择使用USB端口:选择对应的U盘即可 硬盘直通 通常情况下我们需要将原有…

前端Long类型精度丢失:后端处理策略

文章目录 精度丢失的具体原因解决方法1. 使用 JsonSerialize 和 ToStringSerializer2. 使用 JsonFormat 注解3. 全局配置解决方案 结论 开发商城管理系统的品牌管理界面时,发现一个问题,接口返回品牌Id和页面展示的品牌Id不一致,如接口返回的…

C/C++大雪纷飞代码

目录 写在前面 C语言简介 EasyX简介 大雪纷飞 运行结果 写在后面 写在前面 本期博主给大家带来了C/C实现的大雪纷飞代码,一起来看看吧! 系列推荐 序号目录直达链接1爱心代码https://want595.blog.csdn.net/article/details/1363606842李峋同款跳…

Prime Land(牛客)

计算出n-1 对n-1进行质因数分解 // Problem: Prime Land // Contest: NowCoder // URL: https://ac.nowcoder.com/acm/contest/21094/D // Memory Limit: 524288 MB // Time Limit: 2000 ms // // Powered by CP Editor (https://cpeditor.org)#include<iostream> #in…

PAT1060它们是否相等

感谢松鼠爱葡萄 大佬代码太简洁了ilil #include <iostream> #include <cstring>using namespace std;string change(string a, int n) { // 找到小数点的位置&#xff0c;从0开始计数int k a.find("."); // 如果字符串中没有 "."&…

Linux 理解文件系统

查看文件信息 ls -l 每行包含7列&#xff1a; 模式硬链接数文件所有者组大小最后修改时间文件名 stat查看更多信息 硬盘抽象理解 注意&#xff1a; 一个block的大小是由格式化的时候确定的&#xff0c;并且不可以更改mke2fs的-b选项可以设定block大小为1024、2048或4096字节…

光盘文件系统 (iso9660) 格式解析

越简单的系统, 越可靠, 越不容易出问题. 光盘文件系统 (iso9660) 十分简单, 只需不到 200 行代码, 即可实现定位读取其中的文件. 参考资料: https://wiki.osdev.org/ISO_9660 相关文章: 《光盘防水嘛 ? DVDR 刻录光盘泡水实验》 https://blog.csdn.net/secext2022/article/d…

GD 32 UNIX时间戳

前言 ... UINX时间戳定义 UNIX时间戳是一种表示时间的方法&#xff0c;广泛用于计算机系统和网络协议中。它定义的时间起点是1970年1月1日午夜&#xff08;协调世界时UTC&#xff09;&#xff0c;也就是所谓的“UNIX纪元”开始的时刻。 Unix 时间戳(Unix Timestamp)定义为从U…

DjangoRF实战-2-apps-users

1、用户模块 创建一个用户模块子应用&#xff0c;用来管理用户&#xff0c;和认证和授权。 1.1根目录创建apps&#xff0c; 为了使用方便&#xff0c;还需要再pycharm中设置一下资源路径&#xff0c;就可以自动提示 1.2注册子应用 1.3添加应用根目录到环境变量path python导…

搭建cool-admin-java(前端vue)项目

为什么选择 Cool Admin&#xff1f;​ 随着技术不断地发展&#xff0c;特别是最近 Ai 相关的技术发展&#xff0c;以往的框架已经越来越不能满足现代化的开发需求。 Cool Admin 做为后来者有后发优势&#xff0c;主要特点&#xff1a; Ai 编码&#xff0c;从页面到后端代码&…

成为git砖家(5): 理解 HEAD

文章目录 1. git rev-parse 命令2. 什么是 HEAD2.1 创建分支当并未切换&#xff0c; HEAD 不变2.2 切换分支&#xff0c;HEAD 改变2.3 再次切换分支&#xff0c; HEAD 再次改变 3. detached HEAD4. HEAD 表示分支、表示 detached HEAD 有什么区别&#xff1f;区别相同点 5. HEA…

【大模型学习】1:基于通用大语言模型的构建方法

基于通用大语言模型的构建 目录 前言 一、大模型是什么&#xff1f; 二、如何构建大语言模型&#xff1f; 1.基本介绍 2.数据 3.模型构建 总结 前言 本人之前没接触过大模型&#xff0c;研究生的研究方向也不是这一块的&#xff0c;所以是以工程的心态快速上手做到工科领域的不…

数据库实验:SQL Server创建数据库及基本表

一、实验目的&#xff1a; 1、掌握使用SQL SERVER Management Studio工具连接数据库引擎&#xff1b; 2、掌握使用CREATE TABLE 创建基本表的用法&#xff1b; 3、掌握使用ALTER TABLE 修改基本表的用法&#xff1b; 4、掌握使用DROP TABLE删除基本表的用法&#xff1b; 二…

【C++指南】类和对象(中)

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注

Python的输入规则

Python的输入特别有意思&#xff0c;它和C的输入不一样&#xff0c;它的输入的原型是类似于C的string类型&#xff0c;但是对于一些有意思的算法题来说&#xff0c;光是读入string型的内容并不容易解题&#xff0c;于是我们可以从两个方面来将输入给转化。 1. 先使用函数input…

【Node.js基础05】包的理解与使用

一&#xff1a;包的理解与简介 1 什么是包 包是一个将模块、代码、以及其他资料聚合成的文件夹 2 包的分类 项目包&#xff1a;编写项目代码的文件夹 软件包&#xff1a;封装工具和方法供开发者使用 3 为什么要在软件包中编写package.json文件 记录包的清单信息 二&…

用 node 搭建基于 gotenberg、LibreOffice 或者 onlyoffice 文档转换服务

1. 使用 gotenberg 和 LibreOffice a. 开启 docker&#xff0c;运行以下指令 docker run --rm -p 3000:3000 gotenberg/gotenberg:8 gotenbderg 默认运行在本地 3000 端口 b. 项目中添加如下依赖 npm install chromiumly dotenv -D chromiumly 是用来连接 gotenberg 服务的包…

深入理解计算机系统 CSAPP 练习题12.4

我们每次都用read_set初始化ready_set是因为我们每次都处理read_set里的描述符,这是我们希望服务器做的事情.每次一有描述符3或描述符0,select函数会更新ready_set ,我们判断更新后ready_set的情况.然后干对应的事. 由此可以看到select函数的神奇之处,它把一个复杂的事情简单化…