keepalived介绍以及配置主备库自动切换,一条龙服务

news2025/1/11 12:39:40

Keepalived是什么?

Keepalived是一种用于实现高可用性(HA)的开源软件,它通过虚拟路由冗余协议(VRRP,Virtual Router Redundancy Protocol)来实现主备切换,从而提高服务的可用性。

虚拟路由冗余协议(VRRP,Virtual Router Redundancy Protocol)是什么?

虚拟路由冗余协议(VRRP,Virtual Router Redundancy Protocol)是一种网络协议,用于在多个路由器之间实现虚拟路由器的高可用性。它允许多个物理路由器共享一个虚拟IP地址,从而在主路由器(Master)故障时自动切换到备份路由器(Backup),确保网络服务的连续性。以下是VRRP的工作原理和实现方式:

VRRP的基本原理

虚拟路由器:

在VRRP中,一组物理路由器被视为一个虚拟路由器,拥有一个虚拟IP地址(VIP)。
虚拟路由器对外界看起来像是一个单独的路由器。

角色划分:

每个参与VRRP的物理路由器会被分配一个角色:主路由器(Master)或备份路由器(Backup)。
主路由器负责处理虚拟IP地址的所有流量,而备份路由器在主路由器故障时接管该流量。

优先级:

每个路由器都有一个优先级,范围从1到255。优先级越高,该路由器越有可能成为主路由器。
通常情况下,优先级最高的路由器会被选为主路由器。

VRRP广告报文:

主路由器会定期发送VRRP广告报文,通知备份路由器自己处于正常工作状态。
广告报文中包含虚拟路由器的ID、优先级、广告间隔等信息。

故障切换:

如果备份路由器在规定时间内未收到主路由器的广告报文,则认为主路由器故障,进行主备切换。
备份路由器中优先级最高的路由器会成为新的主路由器,并开始发送广告报文。

理解了VRRP协议,在去看Keeepalived就会好理解很多。

Keepalived 中什么是VIP

VIP(Virtual IP,虚拟IP地址)是指由多个物理服务器或节点共享的一个IP地址。VIP用于在高可用性(HA)环境中,实现对外提供一个固定的访问入口,尽管实际的服务可能在不同的物理节点上运行。通过使用VIP,客户端只需要连接到这个固定的IP地址,而不需要关心背后的物理服务器的变化。

Keepalived通常在局域网中工作

以上,我们知道什么是VRRP协议也知道它是怎么选举的
所以, Keepalived 通常在同一个局域网(LAN)中工作。
在配置 Keepalived 时,确保所有参与的节点(包括主节点和备份节点)都在同一个子网内,并且能够互相进行组播通信。
例如:
主节点和备份节点的 IP 地址可能分别是
192.168.31.190 和 192.168.31.191。
虚拟 IP 地址可以配置为 192.168.31.200

Ubuntu安装Keepalived

第一步: 下载Keepalived

sudo apt-get update
sudo apt-get install keepalived

第二步: 配置Keepalived

说一下我的ip 190 主库,191是备库

在主库备库 /etc/keepalived中创建
check_mysql.sh keepalived.conf
这个两配置文件check_mysql.sh 是一样的

这里配置的时候需要注意的是weight -10,这个数字必须是负数, 不然即使你的脚本执行成功也不会切换到备库,因为你的权重没有减少, Keepalived不会选举备库为master

主库keepalived.conf配置:

! Configuration File for keepalived

global_defs {
router_id MySQL-HA
}

vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
weight -10
}

vrrp_instance mysql-ha {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass abc12345
}
track_script {
check_mysql
}
virtual_ipaddress {
192.168.31.200
}
}

备库keepalived.conf配置:

! Configuration File for keepalived

global_defs {
router_id MySQL-HA
}

vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
interval 2
weight -10
}

vrrp_instance mysql-ha {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass abc12345
}
track_script {
check_mysql
}
virtual_ipaddress {
192.168.31.200
}
}

主备库的check_mysql.sh 脚本

if ! mysql -u root -p'abc12345' -e "show status;" &>/dev/null; then
exit 1
fi
exit 0
为什么是etc/keepalived 这个路径?

Keepalived 知道默认的配置文件位置是 /etc/keepalived/keepalived.conf,因为这是预定义的标准位置。

第三步: 启动Keepalived

启动命令:
在主从服务器上分别启动Keepalived服务:

sudo systemctl start keepalived

设置Keepalived服务开机自启动:

sudo systemctl enable keepalived

重启Keepalived

sudo systemctl restart keepalived

停止Keepalived

sudo systemctl stop keepalived

主库宕机之后,切换到备库需要注意的问题

  1. 主库宕机之后, 由于两边数据是不一样的, 我应该怎么知道Keepalived现在在哪台机器上?
    使用ip addr show命令, 这里可以看到我的虚拟ip在我的主库上

在这里插入图片描述
190是主库哈
在这里插入图片描述
然后我把主库的mysql关闭模拟宕机之后的场景,使用sudo systemctl status keepalived命令看到,我这个已经成为备用的了
在这里插入图片描述
这个时候我在把主库启动看看会不会恢复过来, 也是成功恢复
在这里插入图片描述

到这里主备配置成功

需要注意的点:

  1. keepalived.conf文件中的auth_pass 主备必须一样
  2. keepalived.conf文件中的virtual_router_id 也必须一样
  3. keepalived.conf文件中的vrrp_script里面的weight 必须为负数
  4. vrrp_script仅仅通过监控脚本返回的状态码来识别集群服务是否正常,如果返回状态码是0,那么就认为服务正常 ,check_mysql 脚本的返回值为 1,表示脚本执行失败

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

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

相关文章

Matplotlib知识点详解(巨详细!!!)

37.Matplotlib: 配置参数: 如果浏览器不显示图片,加上 %matplotlib inline 让图片可以显示中文 plt.rcParams[font.sans-serif]SimHei 让图片可以显示负号 plt.rcParams[axes.unicode_minus]False 支持svg矢量图 %config Inlineback…

[C++] 深入浅出list容器

文章目录 list介绍list接口的使用构造函数iterator迭代器capacity**element access**modifiers list中的迭代器失效问题常见容器及其迭代器类型特性单向迭代器(Forward Iterator)双向迭代器(Bidirectional Iterator)随机访问迭代器…

肆[4],VisionMaster全局触发测试说明

1,环境 VisionMaster4.3 2,实现功能 2.1,全局触发进行流程控制执行。 2.2,取像完成,立即运动到下一个位置,同步进行图片处理。 2.3,发送结果的同时,还需要显示图像处理的痕迹。 …

力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯)

力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯) 文章目录 力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯)一、138. 随机链表的复制二、739. 每日温…

⌈ 传知代码 ⌋ 记忆注意力用于多模态情感计算!

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

【TS】TypeScript数组类型:掌握数据集合的类型安全

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript数组类型:掌握数据集合的类型安全引言1. TypeScript数组类…

Three.js结合物理引擎实现掉落效果

<template> </template><script setup> import * as THREE from three import gsap from gsap //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from three/addons/libs/lil-gui…

好用的抠图软件在哪里找?这篇文章就有几款好用的抠图工具

在图像处理的世界中&#xff0c;抠图技术无疑是一项至关重要的技能。 无论是设计师、摄影师还是普通的图像编辑爱好者&#xff0c;都可能需要从一张图片中精确地分离出某个对象或元素。但是&#xff0c;手动抠图不仅耗时而且技术要求高&#xff0c;这时候&#xff0c;一款优秀…

PTrade常见问题系列17

是否支持量化帐号的指定服务器分发? 是否可以支持部分量化帐号不根据原有分发规则&#xff0c;而是直接指定分发&#xff1f; 1、若需要增加VIP服务器专用于新增的帐号进行分配&#xff0c;可以参考【量化】量化Nginx用户指定服务器处理步骤.docx&#xff1b; 2、若所有服务…

【音视频之SDL2】Windows配置SDL2项目模板

文章目录 前言 SDL2 简介核心功能 Windows配置SDL2项目模板下载SDL2编译好的文件VS配置SDL2 测试代码效果展示 总结 前言 在开发跨平台的音视频应用程序时&#xff0c;SDL2&#xff08;Simple DirectMedia Layer 2&#xff09;是一个备受欢迎的选择。SDL2 是一个开源库&#x…

“AI+”时代,人工智能前景怎么样?

随着“互联网”到“AI”的转型&#xff0c;时代发展迎来了新的阶段。 在政策、技术和市场的三重驱动之下&#xff0c;人工智能正在快速响应各领域的广泛诉求。虽然人工智能的兴起“打消”了一些传统领域的念想&#xff0c;但同时也开辟了更加多元化的市场。 当下互联网大厂人…

AgentBench: Evaluating LLMs As Agents

AgentBench: Evaluating LLMs As Agents Github&#xff1a; https://github.com/THUDM/AgentBench 榜单&#xff1a;https://llmbench.ai/agent/data demos&#xff1a;https://llmbench.ai/agent/demo 备注&#xff1a;该论文介绍为AgentBench v0.2版本 一、介绍 现如今&am…

计算机网络01

文章目录 浏览器输入URL后发生了什么&#xff1f;Linux 系统是如何收发网络包的&#xff1f;Linux 网络协议栈Linux 接收网络包的流程Linux 发送网络包的流程 浏览器输入URL后发生了什么&#xff1f; URL解析 当在浏览器中输入URL后&#xff0c;浏览器首先对拿到的URL进行识别…

sdwan

分支互联网络解决方案 - 华为企业业务 分支互联网络解决方案 随着5G、AI、物联网等新兴技术与云紧密结合&#xff0c;企业业务智能化和云化加速。 企业分支WAN流量激增&#xff0c;传统以MPLS专线为主的广域互联网络难以支撑业务发展。SD-WAN成为应对云时代的必然选择。 SD…

将 magma example 改写成 cusolver example eqrf

1&#xff0c;简单安装Magma 1.1 下载编译 OpenBLAS $ git clone https://github.com/OpenMathLib/OpenBLAS.git $ cd OpenBLAS/ $ make -j DEBUG1 $ make install PREFIX/home/hipper/ex_magma/local_d/OpenBLAS/1.2 下载编译 magma $ git clone https://bitbucket.org/icl…

专业且免费的重复文件查找与删除工具,文本,图片,音频和视频等

AllDup是一款专业的重复文件查找与删除工具。作为一款免费软件&#xff0c;AllDup以其出色的功能和简洁的操作界面广受欢迎。它不仅可以有效地识别和删除电脑硬盘以及外部设备如USB闪存驱动器中的重复文件&#xff0c;还能对多媒体文件如图片、音频和视频等进行特殊处理&#x…

GUI图形化界面操作(下部)

目录 ​编辑 前言 Swing 窗口 注意点 新增的组件 进度条组件 开关按钮 多面板和分割面板 多面板 分割面板 ​编辑 选项窗口 对话框带三个选项是&#xff0c;否&#xff0c;取消。 对话框提示输入文本: 前言 修炼中&#xff0c;该篇文章为俺很久前的学习笔记 Swi…

Tomcat的安装配置教程

一、服务器的安装 tomcat官方安装网站&#xff1a;http://tomcat.apache.org/ 点击选择想要安装的版本 选择与本机的字节匹配的压缩包进行安装 二、 环境配置 打开系统 进行高级系统配置 配置环境变量 新建系统变量 增加新变量&#xff0c;复制tomcat文件的安装路径为…

HTML,CSS,JavaScript实现——井字棋游戏

和大家分享一个经典的游戏项目——井字棋游戏。这个项目不仅能带你回味童年的乐趣&#xff0c;还能帮助你练习 HTML、CSS 和 JavaScript 编程。 项目介绍 井字棋游戏是一个两人对战游戏&#xff0c;玩家轮流在一个3x3的网格上标记 X 或 O。先将三个标记连成一条直线&#xff…