高可用解决方案 Keepalived 概述

概述

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.mzph.cn/news/591568.shtml

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

相关文章

canvas实现文字自动换行,段落居中,单行的时候居中

canvas实现文字自动换行,段落居中,单行的时候居中方法,主要用到以下方法: /****绘制自动换行的字符串****///ctx_2d getContext("2d") 对象 //lineheight 段落文本行高 //bytelength 设置单字节文字一行内的数量 …

计算机毕业论文内容参考|基于智能搜索引擎的图书管理系统的设计与实现

文章目录 摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于智能搜索引擎的图书管理系统的设计与实现。该系统旨在提供一个高效、智能化的图书管理平台,帮助用户更快、更准确地找到所需的图书资…

2024年PMP报考需要什么条件?怎么报名?

一、PMP是什么 PMP 是项目管理的入门级证书,全称是项目管理专业人士资格认证,由美国项目管理协会(PMI)举办的,受到全球200多个国家的认可,从1999 年到现在已经有20多年发展历史了。 顾名思义,…

【WPF.NET开发】预览事件

本文内容 先决条件预览标记为“已处理”的事件通过控件解决事件禁止问题 预览事件,也称为隧道事件,是从应用程序根元素向下遍历元素树到引发事件的元素的路由事件。 引发事件的元素在事件数据中报告为Source 。 并非所有事件场景都支持或需要预览事件。…

物理内存不够怎么办???centos9下如何设置大的swap空间

在做数据分析时,大家除了cpu速度不够以外,还有就是内存经常会爆掉,下面就介绍一下如何利用硬盘空间给物理内存扩容。 当然硬盘的速度要慢很多,如果要使用硬盘扩容也建议使用性能较高的ssd盘来做。 在CentOS 9系统下设置或增加大的…

【大数据面试知识点】分区器Partitioner:HashPartitioner、RangePartitioner

Spark HashParitioner的弊端是什么? HashPartitioner分区的原理很简单,对于给定的key,计算其hashCode,并除于分区的个数取余,如果余数小于0,则用余数分区的个数,最后返回的值就是这个key所属的…

阶段十-分布式-nginx服务器

一、Nginx简介 Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。tomcat并发数量理论值是500,实际也就300左右。 1.2 正向代理 正向代理代理的是客户…

步进电机转速数码管显示

/*----------------------------------------------- 内容:本程序用于测试4相步进电机常规驱动 使用1-2相励磁 1-2相激励功率增倍,步进角度减半,抖动减少 顺序如下 a-ab-b-bc-c-cd-d-da 又称4相8拍 数码管…

世微 DW01 4.2V锂电池保护电路芯片 专业电源管理芯片

一、 描述 DW01A 是一个锂电池保护电路,为避免锂电池因过充电、过放电、电流过大导致电池寿命缩短或电池被损坏而设计的。它具有高精确度的电压检测与时间延迟电路。 二、 主要特点 工作电流低; 过充检测 4.3V,过充释放 4.05V; 过…

缅怀一代传奇!TVP创始委员陈皓与他的《左耳听风:传奇程序员练级攻略》

引言 中文技术圈时常被一种浮躁所困扰。互联网企业历经跑马圈地的红利期后,开始在精细化运营的路上艰难求索;圈子里的程序员们,也被日益放缓的业务需求和不断内卷的行业态势所影响,职业困境、年龄危机成了老生常谈的话题。 成长往…

188.【2023年华为OD机试真题(C卷)】中文分词模拟器(字典树动态规划算法—JavaPythonC++JS实现)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 188.【2023年华为OD机试真题(C卷)】中文分词模拟器(…

CSMM(软件开发能力成熟度模型)办理需要什么条件?

CSMM(软件开发能力成熟度模型)的办理通常需要企业满足一定的条件,这些条件包括但不限于: 1. 企业资质:申请CSMM认证的企业需要具备合法的营业执照和相关的行业资质。 2. 软件开发能力:企业需要有一定的软件…

three.js 多通道组合

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div style"border: 1px so…

AI大模型引领未来智慧科研暨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

C语言中关于while语句的理解以及getchar和putchar

while是一个循环语句&#xff0c;关于while的一些理解可以看下面这串代码 #include <stdio.h> int main() {int i 0;scanf("%d", &i);printf("输入十以内的数字&#xff0c;从输入的数字开始一直数到十&#xff1a;");while (i<10){printf(…

php ext-sodium 拓展安装 linux+windows

php编译安装(linux)&#xff0c;可以参考&#xff1a;php编译安装 一、windows soduim源码包自带&#xff0c;直接修改php.ini&#xff0c;取消extensionsodium注释即可 二、linux 1.安装依赖 apt-get install libsodium-dev2.进入源码目录 这里写自己的源码目录 cd /us…

6种版本的并查集(java实现版)

目录 引入 并查集的具体讲解及代码实现 Quick Find Quick Union 基于size的优化 代码实现 基于rank的优化 代码实现 路径压缩 代码实现 更多关于路径压缩的并查集 引入 由孩子指向父亲的这种特殊的树结构可以很高效的处理连接问题&#xff0c;在一个复杂的图中&…

音视频技术开发周刊 | 326

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 全球最强「开源版Gemini」诞生&#xff01;全能多模态模型Emu2登热榜&#xff0c;多项任务刷新SOTA 最强的全能多模态模型来了&#xff01;就在近日&#xff0c;智源研究院…

使用echarts的bmap配置项绘制区域轮廓遮罩

示例图 代码 <template><div id"map" style"width: 100%; height: 100vh"></div> </template><script> import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; export default…

C++笔试在一个字符串中找到第一个只出现一次的字符,要求时间复杂度O(n)

要在一个字符串中找到第一个只出现一次的字符&#xff0c;并且要求时间复杂度为O(n)&#xff0c;可以使用哈希表来解决。具体思路如下&#xff1a; 1、创建一个哈希表&#xff0c;用于记录每个字符出现的次数。 2、第一次遍历字符串&#xff0c;将每个字符及其出现的次数存储到…