【keepalived】高可用神器,实现应用的自动主备切换

目录

1.概述

2.配置

3.效果

4.keepalived主备切换原理

5.联系作者


1.概述

什么是keepalived:

keepalived是一个基于VRRP协议来实现的服务高可用方案。VRRP协议,即虚拟路由冗余协议,其一开始提出来是为了解决局域网中配置静态网关出现单点失效的现象的路由协议。

说人话就是,VRRP协议允许一台机器可以拥有一个或者多个虚拟IP。这个虚拟IP首先会与一个实际IP绑定,对这个虚拟IP的访问会打到这个实际IP上,如果这个实际IP挂了,虚拟IP会重新绑定到另一个可用的IP上(俗称IP漂移)。

用来干什么:

对于请求来说,我只需要访问固定的IP地址(虚拟IP),至于后面到底是谁提供的服务是不关心的,只要能持续的提供服务即可。这样自然而然就实现了高可用。

本文要做什么:

本文会用keepalived来实现两个nginx节点之间的高可用。实现当其中一个nginx挂掉之后,虚拟IP漂移到另一个还活着的nginx上的效果。至于其它类型的应用的主备自动切换,使用上是类似的。

本次示例的IP地址规划如下:

192.168.31.20  

master
192.168.31.30backup

nginx的安装这里就不赘述了,可以去看博主另一篇文章:

linx安装nginx__BugMan的博客-CSDN博客

或者另一位作者的文章:

Linux中安装Nginx,很详细_linux安装nginx详细步骤-CSDN博客

2.配置

安装keepalived的方式多种多样,这里我们用yum installed的方式来安装。

yum install -y keepalived

首先我们要在/etc/keepalived/下编写一个check_nginx.sh脚本用来检查nginx是否活着,要是挂了,直接停止当前节点上的keepalived。

#!/bin/bash
counter=$(ps -C nginx --no-headinglwc -1)
  if["${counter]"= "0"]; 
    then systemctl start nginx
    sleep 2
    counter=$(ps -C nginx --no-heading | wc -l)
    if["${counter}"="0"]; 
    then systemctl stop keepalived
  fi
fi

接下来我们配置keepalived.conf:

要注意这里有个天坑:这里的配置文件哪些的括号该换行,哪些的括号该有空格,必须严格和下面的格式对其,就是一个括号没有换行,格式的都会报错!

主节点的keepalived的配置:

#全局配置,路由ID不变
global_defs
{
  router_id LVS_DEVEL
}

vrrp_script chk_nginx
{
  script "/etc/keepalived/check_nginx.sh"
  #时间间隔,单位默认为秒
  interval 2
  #权重,当脚本执行成功或失败,对当前节点的优先级是增加还是减少
  weight -5
}

vrrp_instance VI_1 {
 #主节点
 state MASTER
 #绑定的网卡
 interface enp0s3
 #虚拟路由id,保证主从之间一致
 virtual_router_id 51
 #优先级,高优先级的为主
 priority 101
 #指定发送VRRP通告的间隔,单位秒
 advert_int 2
 #安全认证密码
 authentication {
  auth_type PASS
  auth_pass 1111
 }

 #对外暴露的VIP地址
 virtual_ipaddress
 {
  192.168.31.240
 }

 #指定nginx执行状态脚本
 track_script {
  chk_nginx
 }
}

配置好后我们用systemctl start来启动keepalived,并切查看一下keepalived的启动日志,正常启动的日志会如下:

配置备节点的keepalived:

和主节点只有略微不同,就是state切换为BACKUP,priority优先级比主节点低一些即可。

#全局配置,路由ID不变
global_defs 
{
  router_id LVS_DEVEL
}

vrrp_script chk_nginx 
{
  script "/etc/keepalived/check_nginx.sh"
  #时间间隔,单位默认为秒
  interval 2
  #权重,当脚本执行成功或失败,对当前节点的优先级是增加还是减少
  weight -5
}

vrrp_instance VI_1 {
 #备份节点
 state BACKUP
 #绑定的网卡
 interface enp0s3
 #虚拟路由id,保证主从之间一致
 virtual_router_id 51
 #优先级,高优先级的为主
 priority 100
 #指定发送VRRP通告的间隔,单位秒
 advert_int 2
 #安全认证密码
 authentication {
  auth_type PASS
  auth_pass 1111
 }

 #对外暴露的VIP地址
 virtual_ipaddress 
 {
  192.168.31.240
 }

 #指定nginx执行状态脚本
 track_script {
  chk_nginx
 }
}

启动备节点并查看日志:

3.效果

访问虚拟IP,可以看到请求被打到了主节点上去了:

关掉主节点的keepalived,可以看到从节点立马切换为了主节点:

再访问,请求直接打到了备用节点上面去了:

4.keepalived主备切换原理

到这里我相信不少同学有这样一个疑惑:

备份节点是如何感知到master节点挂掉的?

这里大概聊一聊这个问题。在 Keepalived 主备切换的过程中,备份节点(Backup)是通过一种叫做 VRRP(Virtual Router Redundancy Protocol)协议来感知主节点(Master)的状态的。

VRRP 是一种用于提供冗余路由的协议,其基本原理是将多个路由器组成一个虚拟路由器,这个虚拟路由器有一个虚拟 IP 地址和一个虚拟 MAC 地址。在这个虚拟路由器中,有一个节点被选举为 Master,其他节点成为 Backup。

主备节点之间通过 VRRP 协议交互,主要包括以下步骤:

  1. VRRP 路由器选举: 在一个 VRRP 组中,多个节点参与竞选成为 Master 节点。通过选举算法,其中一个节点成为 Master,负责处理虚拟 IP 地址的数据包。

  2. VRRP 路由器间的心跳: Master 和 Backup 之间定期发送 VRRP 心跳消息,以确保彼此的存活状态。

  3. 检测 Master 节点失效: 如果 Backup 节点在一定时间内没有收到来自 Master 的心跳消息,它将认为 Master 节点失效。

  4. 备份节点接管: 一旦 Backup 节点检测到 Master 节点失效,它会迅速接管虚拟 IP 地址,成为新的 Master。

在 Keepalived 中,VRRP 协议被用于实现高可用性的主备切换。备份节点通过 VRRP 协议感知主节点的状态,当检测到主节点不可用时,备份节点会迅速接管服务,确保服务的可用性。这样,即使主节点出现故障,整个系统仍然能够保持正常运行。

5.联系作者

商务合作、各种交流:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在虚拟机中,规划一个文件配额管理系统

两台虚拟机(windows 2008 和 windows XP)都设置为自定义下的仅主机模式Vmnet1,检查IP地址,确认两台虚拟机处于同一网段,并在windows 2008 上ping通 windows XP 一、文件配额管理系统 在window 2008中,添加…

草柴返利APP领淘宝天猫优惠券拿购物返利 淘宝天猫订单如何隐藏删除订单记录?

草柴返利APP领淘宝天猫优惠券拿购物返利 手机安装「草柴」返利APP,复制要购买的商品链接到草柴,查询该商品淘宝天猫优惠券及购物返利,确认收货后到草柴返利APP提取返利; 淘宝天猫订单如何隐藏删除订单记录? 1、打开手…

6.1810: Operating System Engineering 2023 <Lab4 traps: Traps>

一、本节任务 二、要点(Traps and system calls) 有三种事件会使 CPU 暂停当前的指令执行,并强制将控制转移到处理该事件的特殊代码中: 系统调用(ecall);异常(如非法指令&#xff…

Elasticsearch:向量搜索的优势 — 以及 IT 领导者需要它来改善搜索体验的 5 个原因

作者:Evan Castle 与谷歌和亚马逊等高质量搜索引擎的频繁互动提高了客户对快速且相关搜索的期望。 向量搜索(也称为语义向量搜索)利用深度学习和机器学习来捕获数据的含义和上下文。 向量搜索的好处 向量搜索可以增强公司的搜索体验并带来广…

web:[SUCTF 2019]CheckIn(一句话木马,.user.ini)

题目 页面显示 上传文件&#xff0c;随便上传一个文件试试 上传了一个文本&#xff0c;显示失败&#xff0c;不是图片 那就换图片马上传试试 不能包含<?,换一种写法&#xff0c;需要加上GIF89a&#xff0c;进行exif_imagetype绕过 上传成功 这里用.user.ini或者用post传参…

YOLOv8改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)

一、本文介绍 本文给大家带来的改进是Triplet Attention三重注意力机制。这个机制&#xff0c;它通过三个不同的视角来分析输入的数据&#xff0c;就好比三个人从不同的角度来观察同一幅画&#xff0c;然后共同决定哪些部分最值得注意。三重注意力机制的主要思想是在网络中引入…

anaconda3的激活和Cvcode配置C++:报错:CondaIOError: Missing write permissions in:

报错&#xff1a;CondaIOError: Missing write permissions in: 原因&#xff1a;anaconda所在文件夹只有root 才有权限 查看用户名 whoamisudo chown -R 用户名 /home/anaconda3激活anaconda3 #激活 source activate #退出 source deactivate 配置Cvcode配置C 首先看g的…

maven生命周期回顾

目录 文章目录 **目录**两种最常用打包方法&#xff1a;生命周期&#xff1a; 两种最常用打包方法&#xff1a; 1.先 clean&#xff0c;然后 package2.先 clean&#xff0c;然后install 生命周期&#xff1a; 根据maven生命周期&#xff0c;当你执行mvn install时&#xff0c…

上半年营收下滑12%、市值蒸发86亿港元,柠萌影视也“卷”微短剧

短剧之火点燃了资本市场。 近日&#xff0c;#爆款短剧制作方否认8天收入过亿#话题冲上热搜。“爆剧制造机”柠萌影视凭借《二十九》系列在C端付费收入达到千万而“出圈”。 与此同时&#xff0c;柠萌影视此前公布的2023半年报显示&#xff0c;其业绩并不理想。 「不二研究」…

Linux CentOS7 联网配置 | 安装中文输入法

参考视频&#xff1a;保姆式教学虚拟机联网liunx(centos)_哔哩哔哩_bilibili 配置网络&#xff1a;解决上网问题 第一步&#xff1a;选择网络模式 第二步&#xff1a;配置网卡命令&#xff1a;打开终端执行命令&#xff1a; 1、先切换到根目录下&#xff0c;防止在第执行cd …

STM32串口接收数据包(自定义帧头帧尾)

1、基本概述 本实验基于stm32c8t6单片机&#xff0c;串口作为基础且重要的外设&#xff0c;具有广泛的应用。本文主要理解串口数据包的发送与接收是如何实现的&#xff0c;重要的是理解程序的实现思路。 2、关键程序 定义好需要用到的变量&#xff1a; uint8_t rxd_buf[4];//…

matlab实践(十):贝塞尔曲线

1.贝塞尔曲线 贝塞尔曲线的原理是基于贝塞尔曲线的数学表达式和插值算法。 贝塞尔曲线的数学表达式可以通过控制点来定义。对于二次贝塞尔曲线&#xff0c;它由三个控制点P0、P1和P2组成&#xff0c;其中P0和P2是曲线的起点和终点&#xff0c;P1是曲线上的一个中间点。曲线上…