高可用解决方案 Keepalived 概述

news2024/11/24 23:04:46

概述

Keepalived 介绍

  • Keepalived 是 Linux 下一个轻量级别的高可用解决方案,通过 **VRRP 协议(虚拟路由冗余协议)**来实现服务或者网络的高可用,可以利用其来解决单点故障。

    起初是为 LVS 设计的,一个 LVS 服务会有 2 台服务器运行 Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟 IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。

  • Keepalived 的作用:

    Keepalived 提供了很好的高可用性保障服务,它可以检查服务器的状态,如果有服务器出现问题,Keepalived 会将其从系统中移除,并且同时使用备份服务器代替该服务器的工作,当这台服务器可以正常工作后,Keepalived 再将其放入服务器群中,这个过程是 Keepalived 自动完成的,不需要人工干涉,只需要修复出现问题的服务器即可。

  • Keepalived 的特点:

    • 部署简单,只需要配置一个配置文件即可
    • 加入了虚拟路由冗余协议,可以保证业务或网络不间断稳定运行
  • Keepalived 的核心功能:

    • 健康检查

      采用 tcp 三次握手,icmp 请求,http 请求,udp 、echo 请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活

    • 故障切换

      主要应用在配置了主备的服务器上,使用虚拟路由冗余协议维持主备之间的心跳

      当主服务器出现问题时,由备服务器承载对应的业务,从而在最大限度上减少损失,并提供服务的稳定性


Keepalived 原理

Keepalived 从 3 个层次来检测服务器的状态,Layer3 、Layer4 以及 Layer7 工作在 IP/TCP 协议栈的IP层,TCP层及应用层,原理分别如下:

  • Layer3 工作在网络层

    Keepalived 使用 Layer3 的方式工作时,Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既平时用的 Ping 程序),如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。

    Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。

  • Layer4 工作在传输层

    Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否。keepalived 一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口所对应的节点发生故障,从集群中剔除故障节点。

    例如 web server 的服务端口一般是 80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中剔除。

  • Layer7 工作在应用层

    Layer7 工作在具体的应用层,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。Keepalived 将根据用户编写的脚本来检测各种程序或者服务是否正常,如果与用户的设定不相符,则将对应的把服务器从服务器群中剔除。


Keepalived 组件架构

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

  • core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析
  • check 负责健康检查,包括常见的各种检查方式
  • vrrp 模块是来实现 VRRP 协议的

体系结构

在这里插入图片描述

整个体系结构分层用户层内核层

  • Scheduler I/O Multiplexer

    I/O 复用分发调用器,负责安排 Keepalived 所有的内部的任务请求

  • Memory Management

    内存管理机制,提供了访问内存的一下通用方法 Keepalived

  • Control Plane

    控制面板,实现对配置文件的编译和解析,Keepalived 的配置文件解析比较特殊,它并不是一次解析所有模块的配置,而是只有在用到某模块时才解析相应的配置

  • Core components

    Keepalived 的核心组件,包含了一系列功能模块,主要有 watch dog、Checkers、VRRP Stack、IPVS wrapper、Netlink Reflector

    • watch dog

      一个极为简单又非常有效的检测工具,针对被监视目标设置一个计数器和阈值,watch dog 会自己增加此计数值,然后等待被监视目标周期性的重置该数值,一旦被监控目标发生错误,就无法重置该数值,watch dog 就会检测到。

      Keepalived 是通过它来监控 Checkers 和 VRRP 进程

    • Checkers:实现对服务器运行状态检测和故障隔离

    • VRRP Stack:实现 HA 集群中失败切换功能,通过 VRRP 功能再结合 LVS 负载均衡软件即可部署一个高性能的负载均衡集群

    • IPVS wrapper:实现 IPVS 功能,该模块可以将设置好的IPVS规则发送到内核空间并提交给 IPVS 模块,最终实现负载均衡功能

    • Netlink Reflector:实现 VIP 的设置和切换


VRRP 协议(虚拟路由冗余协议)

  • 在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)来完成的

    而主机之间的路由器一旦出现故障,就会通信失败

    因此在这种通信模式下,路由器就会有单点瓶颈问题,为了解决这个问题,引入了 VRRP 协议(Virtual Router Redundancy Protocol 虚拟路由冗余协议)

    通过 VRRP 可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信

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

  • VRRP 角色

    • 虚拟路由器:VRRP 组中所有的路由器,拥有虚拟的 IP+MAC(00-00-5e-00-01-VRID)地址
    • 主路由器(master):虚拟路由器内部通常只有一台物理路由器对外提供服务,主路由器是由选举算法产生,对外提供各种网络功能
    • 备份路由器(backup):VRRP 组中除主路由器之外的所有路由器,不对外提供任何服务,只接受主路由的通告,当主路由器挂掉之后,重新进行选举算法接替 master 路由器

    master 路由器由选举算法产生,它拥有对外服务的 VIP,提供各种网络服务,如 ARP 请求、数据转发、ICMP 等等,而backup 路由器不拥有 VIP,也不对外提供网络服务

    当 master 发生故障时,backup 将重新进行选举,产生一个新的 master 继续对外提供服务

  • VRRP 工作模式

    VRRP 有三种工作状态,分别是:

    • Initialize 状态
    • Master 状态
    • Backup 状态
  • VRRP 选举机制

    • 优先级
    • 抢占模式下,一旦有优先级高的路由器加入,立即成为 Master
    • 非抢占模式下,只要 Master 不挂掉,优先级高的路由器只能等待

常用命令

# 查看 keepalived 系统日志。-f:持续输出
tail -f /var/log/messages

# 查看 keepalived 配置文件
vi /etc/keepalived/keepalived.conf

# 启动 keepalived 服务
systemctl start keepalived
# 查看 keepalived 服务状态
systemctl status keepalived
# 停止 keepalived 服务
systemctl stop keepalived

# keepalived 启动成功后有 3 个keepalived 的进程
  # 一个是父进程,负责监控其子进程。一个是 vrrp 子进程,另外一个是 checkers 子进程。
ps -ef | grep keepalived

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

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

相关文章

【字典树Trie】LeetCode-139. 单词拆分

139. 单词拆分。 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode&q…

零知识证明(zk-SNARK)- groth16(二)

From Computational Problem to zk-SNARK 本部分就是将计算难题转换为多项式,然后使用zk-SNARK。(注:以下用 P,V 替代 Prover,Verifier) 计算难题->R1CS R1CS(Rank-1 Constraint System)是一种能够将…

连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver‘,亲测有效!!!

Jmeter连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver’ 1.到官方下载驱动注意:根据项目的JDK版本来下载对应的驱动Download | pgJDBC 2.将postgresql-42.2.27.jar复制到lib目录下面, 然后重新启动 连接driver信息如下&#…

三、医学影像云平台(院内PACS叫号系统实践)

1. 业务概述 在云PACS中,排队和叫号系统是最灵活,定制化最强的业务,而且实时性要求高,否则,这里是容易发生医患矛盾的地方,所以,需要慎重。但是,这个系统又有个低要求特点&#xff…

数据库SQL ,零基础入门到精通,看完这一篇就够了!

目录 📚 前言🌴 SQL 介绍 🌼 什么是 SQL🌀 SQL 的类型🌵 学习 SQL 的作用🍄 数据库是什么 🐥 SQL 基础语言学习 🐤 CREATE TABLE – 创建表🐑 INSERT – 插入数据&#…

aspose通过开始和结束位置关键词截取word另存为新文件

关键词匹配实体类: Data EqualsAndHashCode(callSuper false) public class TextConfig implements Serializable {private static final long serialVersionUID 1L;/*** 开始关键词,多个逗号分隔*/private String textStart ;/*** 结束关键词&#x…

第 6 章 统计量及其抽样分布

统计量 卡方分布,t分布,f分布 样本均值的抽样分布 中心极限定理 样本比例的的抽样分布 两个均值之差的抽样分布 样本方差的分布(重要) 两个样本方差比的分布 注意理解下面这个图里面的定义(比较重要&#xff09…

从公司代码仓库更新代码出现错误

错误: 解决:点击idea右上角,将远程代码和本地合并

RDS快速入门

目录 实例创建 设置白名单 RDS(Relational Database Service)是一种托管式的关系型数据库服务,它为用户提供了一种简单、可靠、安全的方式来部署、操作和扩展数据库。具有安全可靠、解决运维烦恼、有效降低成本和自研增加等四大特性&#x…

都2024年了!你还不知道在Docker中安装jdk?

目录 前言: Docker安装JDK(8) 查看以及安装的镜像 拉取JDK(8)的镜像文件 ​编辑 运行容器 进入容器 检查安装 如果我的博客帮助到你,麻烦点个小小的赞即可 前言: 在2024年,Docker已经成为了容器化…

docker搭建Dinky —— 筑梦之路

简介 Dinky 是一个 开箱即用 、易扩展 ,以 Apache Flink 为基础,连接 OLAP 和 数据湖 等众多框架的 一站式 实时计算平台,致力于 流批一体 和 湖仓一体 的探索与实践。 主要功能 其主要功能如下: 沉浸式 FlinkSQL 数据开发&#x…

java SSM投票管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM投票管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B/…

我的CSDN 512天创作者纪念日总结:高效、高现

文章目录 512天创作者纪念日:2023年的12月31日CSDN的512天消息提醒第一篇文章,最后一篇文章总计847篇文章,每月发文分布512天,各专栏文章统计512天,互动总成绩 512天创作者纪念日:2023年的12月31日 2023年…

一个WPF版的Layui前端UI库

前言 相信做.NET后端开发的很多小伙伴都用过Layui前端UI组件库,今天我们分享一个WPF版的Layui前端UI样式库:Layui-WPF。 WPF介绍 WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-6-元素定位大法-下篇

1.简介 上一篇主要是讲解我们日常工作中在使用Playwright进行元素定位的一些比较常用的定位方法的理论基础知识以及在什么情况下推荐使用。今天这一篇讲解和分享一下,在日常中很少用到或者很少见的定位,但是遇到了我们也要会,俗话说&#xf…

Origin 2022软件安装包下载及安装教程

Origin 2022https://docs.qq.com/doc/DUklGWUhMVEZTbUVU 1、选中下载好的安装包,右键选择解压到“Origin 2022”文件夹 2、选中“Setup.exe”右键以管理员身份运行 3、点击“下一步” 4、选择“我接受……”,点击"下一步" 5、选择“安装origi…

Vue中全局事件总线的配置和原理

实现任意组件之间的通信 任意组件通信的原理: 1、实现任意组件之间的通信,需要一个傀儡。这个傀儡既能被vm访问到,也能被VueComponent访问。 2、VueComponent.prototype.proto Vue.prototype为图上1.0黄色的线路。是Vue让组件实例对象VueComponent可以访问到Vue原…

SSM学生成绩信息管理系统----计算机毕业设计

项目介绍 本项目分为管理员、教师、学生三种角色, 管理员角色包含以下功能: 公告管理,写公告,学生增删改查,教师增删改查,查看成绩报表,管理员首页,课程表增删改查等功能。 教师角色包含以下功能: 修改密码,按照条件查询,查看学生信息,管理…

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…

关于Python里xlwings库对Excel表格的操作(二十七)

这篇小笔记主要记录如何【如何使用xlwings库的“Charts类” 在一个工作表中创建多个图表】。前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库&#xff1b; &…