【云原生】高可用集群KEEPALIVED(理论篇)

news2024/11/28 4:33:49

一、高可用集群

1.1 集群类型

  • LB:Load Balance 负载均衡 LVS/HAProxy/nginx(http/upstream, stream/upstream)
  • HA:High Availability 高可用集群数据库、Redis
  • SPoF: Single Point of Failure,解决单点故障
  • HPC: High Performance computing 高性能集群

1.2 系统可用性

SLA:Service-Level Agreement服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)

A= MTBF/(MTBF+MTTR)

99.95%:(60*24*30)*(1-0.9995)=21.6分钟 #一般按一个月停机时间统计 

指标:99.9% 99.99% 99.999%99.9999%

1.3 系统故障

硬件故障:设计缺陷、wear out(损耗)、非人为不可抗拒因素

软件故障:设计缺陷 bug

1.4 实现高可用

提升系统高用性的解决方案:降低MTTR-Mean Time To Repair(平均故障时间)

解决方案:建立冗余机制

  • active/passive 主/备.
  • active/active 双主.
  • active --> HEARTBEAT --> passive
  • active <--> HEARTBEAT <--> active

1.5.VRRP: Virtual Router Redundancy Protocol

虚拟路由冗余协议,解决静态网关单点风险

  • 物理层:路由器、三层交换机
  • 软件层:keepalived 

1.5.1 VRRP 相关术语

  • 虚拟路由器:Virtual Router
  • 虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
  • VIP:VirtuallP
  • VMAC: Virutal MAC(00-00-5e-00-01-VRID)
  • 物理路由器(master:主设备、backup:备用设备、priority:优先级)

1.5.2 VRRP 相关技术

通告:心跳,优先级等;周期性

工作方式:抢占式,非抢占式

安全认证:

  • 无认证
  • 简单字符认证:预共享密钥
  • MD5

工作模式:

  • 主/备:单虚拟路由器
  • 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

二、Keepalived 部署 

 2.1 keepalived简介

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务

官网:http://keepalived.org/

功能:

  • 基于vrrp协议完成地址流动
  • 为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)
  • 为ipvs集群的各RS做健康状态检测
  • 基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

2.2 Keepalived 架构

官方文档:

https://keepalived.org/doc/

http://keepalived.org/documentation.html

  •  用户空间核心组件:

        vrrp stack:VIP消息通告

        checkers:监测real server

        system call:实现 vrrp 协议状态转换时调用脚本的功能

        SMTP:邮件组件

        IPVS wrapper:生成IPVS规则

        Netlink Reflector:网络接口

        WatchDog:监控进程

  • 控制组件:提供keepalived.conf 的解析器,完成Keepalived配置
  • IO复用器:针对网络目的而优化的自己的线程抽象
  • 内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限 

 2.3 Keepalived 环境准备

  • 各节点时间必须同步:ntp, chrony 关闭防火墙及SELinux
  • 各节点之间可通过主机名互相通信:非必须
  • 建议使用/etc/hosts文件实现:非必须
  • 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须 

2.4 Keepalived 相关文件

  • 软件包名:keepalived
  • 主程序文件:/usr/sbin/keepalived
  • 主配置文件:/etc/keepalived/keepalived.conf
  • 配置文件示例:/usr/share/doc/keepalived/
  • Unit File:/lib/systemd/system/keepalived.service
  • Unit File的环境配置文件:/etc/sysconfig/keepalived

RHEL7中可能会遇到一下bug:

systemctl restart keepalived #新配置可能无法生效

systemctl stop keepalived;systemctl start keepalived #无法停止进程,需要 kill 停止

2.5 KeepAlived 配置说明

2.5.1 配置文件组成部分

配置文件:/etc/keepalived/keepalived.conf

配置文件组成

  • GLOBAL CONFIGURATION

        Global definitions:定义邮件配置,route_id,vrrp配置,多播地址等

  • VRRP CONFIGURATION

        VRRP instance(s):定义每个vrrp虚拟路由器

  • LVS CONFIGURATION

        Virtual server group(s)

        Virtual server(s): LVS集群的VS和RS

2.5.2 配置语法说明

帮助

man keepalived.conf
 2.5.2.1 全局配置
! Configuration File for keepalived
global_defs {
   notification_email {
       594233887@qq.com #keepalived发生故障切换时邮件发送的目标邮箱,可以按行区分写多个
       timiniglee-zln@163.com
   }
   notification_email_from keepalived@KA1.timinglee.org #发邮件的地址
   smtp_server 127.0.0.1 #邮件服务器地址
   smtp_connect_timeout 30 #邮件服务器连接timeout
   router_id KA1.timinglee.org #每个keepalived主机唯一标识
                               #建议使用当前主机名,但多节点重名不影响
   vrrp_skip_check_adv_addr #对所有通告报文都检查,会比较消耗性能
   #启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
  
   vrrp_strict #严格遵循vrrp协议
               #启用此项后以下状况将无法启动服务:
               #1.无VIP地址 
               #2.配置了单播邻居 
               #3.在VRRP版本2中有IPv6地址
               #建议不加此项配置
  
  vrrp_garp_interval 0 #报文发送延迟,0表示不延迟
  vrrp_gna_interval 0 #消息发送延迟
  vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围: 
  
}
2.5.2.2  配置虚拟路由器
vrrp_instance VI_1 {
   state MASTER
   interface eth0 #绑定为当前虚拟路由器使用的物理接口,如:eth0,可以和VIP不在一个网卡
    
   virtual_router_id 51
   #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一否则服务无法启动
   #同属一个虚拟路由器的多个keepalived节点必须相同
   #务必要确认在同一网络中此值必须唯一
    
   priority 100 #当前物理节点在此虚拟路由器的优先级,范围:1-254
                #值越大优先级越高,每个keepalived主机节点此值不同
   
   advert_int 1 #vrrp通告的时间间隔,默认1s
   authentication { #认证机制
       auth_type AH|PASS #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)示例:
        
       uth_pass 1111 #预共享密钥,仅前8位有效
       #同一个虚拟路由器的多个keepalived节点必须一样
   }
   virtual_ipaddress { #虚拟IP,生产环境可能指定上百个IP地址
        
       <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
       172.25.254.100 #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认32
       172.25.254.101/24 dev eth1
       172.25.254.102/24 dev eth2 label eth2:1
   }
}

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

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

相关文章

第二十五天培训笔记

2 、在 python 中连接数据库并结合游标对数据库进行操作 前提&#xff1a;要有 python3 环境 pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple // 设置 pip3 的全 局配置&#xff0c;将默认的 Python 包索引源&#xff08; index-url &am…

Raspberry Pi Pico 2 上实现:实时机器学习(ML)音频噪音抑制功能

Arm 公司的首席软件工程师 Sandeep Mistry 为我们展示了一种全新的巧妙方法&#xff1a; 在 Raspberry Pi Pico 2 上如何将音频噪音抑制应用于麦克风输入。 机器学习&#xff08;ML&#xff09;技术彻底改变了许多软件应用程序的开发方式。应用程序开发人员现在可以为所需系统整…

【C++ 项目】负载均衡在线 OJ

文章目录 &#x1f308; 一、项目介绍&#x1f308; 二、项目源码&#x1f308; 三、项目演示⭐ 1. 前端界面展示⭐ 2. 后端界面展示 &#x1f308; 四、项目准备⭐ 1. 项目所用技术⭐ 2. 项目开发环境⭐ 3. 项目宏观结构 &#x1f308; 五、comm 公共模块⭐ 1. util.hpp 工具⭐…

【机器学习第9章——聚类】

机器学习第9章——聚类 9.聚类9.1 聚类任务9.2 性能度量9.3 距离计算9.4 原型聚类9.4.1 k均值算法9.4.2 学习向量量化(LVQ)9.4.3 高斯混合聚类 9.5 密度聚类DBSCAN算法 9.6 层次聚类9.7 kmeans手动算法实现9.8 kmeans算法运用 9.聚类 9.1 聚类任务 在“无监督学习”任务中研究…

MIT6.s081 2021 Lab Copy on-write

Implement copy-on write 背景 xv6 使用 fork() 系统调用创建子进程时&#xff0c;需要将父进程的地址空间进行 深拷贝 &#xff0c;即将页表和实际物理空间同时进行拷贝&#xff0c;以实现父进程和子进程地址空间的独立性。但很多时候&#xff0c;如 shell 程序&#xff0c;…

时间线编辑特效SDK解决方案,高效的接入服务

在数字时代的浪潮中&#xff0c;短视频以其独特的魅力迅速成为连接世界的新语言&#xff0c;而创意与技术的深度融合&#xff0c;则是这场视觉盛宴背后的核心驱动力。美摄科技&#xff0c;作为短视频技术领域的佼佼者&#xff0c;近期隆重推出了其革命性的时间线编辑特效SDK解决…

踩坑【已解决】:Redis配置主从复制踩到的坑,主机不显示从机的连接信息,但是从机显示主机信息

关于Redis配置主从复制踩到的坑&#xff01;&#xff01;&#xff01; 设置单机集群的时候&#xff0c;两台从机都显示连接到主机&#xff0c;但是主机显示连接到的从机数量为0: 原因&#xff1a; 在master的配置文件中我们配置了密码的信息&#xff0c;但是我们在从配置文件…

gitee 使用安装教程

一、下载方式 1.官网下载https://git-scm.com/downloads 2.淘宝镜像下载https://registry.npmmirror.com/binary.html?pathgit-for-windows/ 2.1安装 1.点击刚刚下载的安装包&#xff0c;然后点击next 2.根据自己的情况选择&#xff0c;一般默认就可以了 3. 点击next 4.点…

PS DRAM接口的函数式编程模型(一)

针对PS DRAM接口的操作启动&#xff0c;确实需要遵循一系列精心设计的步骤来确保DRAM控制器&#xff08;DDRC&#xff09;和DRAM模块能够正确初始化和配置。以下步骤详细说明了这些操作&#xff0c;并指出了Vivado Design Suite通常如何提供这些编程支持。 DDR时钟初始化&…

1DCNN-2DResNet并行故障诊断模型

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断入门教学-CSDN博客 Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客 Python轴承故障诊断 (14)高创新故障识别模型-CSDN…

机器学习入门(六):分类模型评估方法

目录 1. 数据集划分 1.1 为什么要划分数据集? 1.2 数据集划分的方法 1.3 留出法(简单交叉验证) 1.4 交叉验证法 1.5 留一法 1.6 自助法 2. 分类算法的评估标准 2.1 分类算法的评估 2.2 SKlearn中模型评估API介绍 3. 小结 前言 掌握分类模型评估方法对于数据科学家…

测试流程规范--准入准出规则

简介&#xff1a; 为了加强测试部软件测试的质量控制及与测试相关部门、人员更好理解测试各阶段的准入/准出条件而建立的准入/准出规范。 一&#xff0c;目的 为了加强测试部软件测试的质量控制及与测试相关部门、人员更好理解测试各阶段的准入/准出条件而建立的准入/准出规范…

【python】在Python中操作MongoDB的详细用法教程与实战案例分享

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

《黑神话:悟空 性能测试工具》Steam已免费开放下载

《黑神话&#xff1a;悟空》将于8月20日上午10点正式解锁&#xff0c;届时大家就能体验到这款期待三年的国产3A之光了。为了方便大家游玩&#xff0c;官方提前上线了性能测试工具&#xff0c;目前《黑神话&#xff1a;悟空 性能测试工具》已在Steam商店开放免费下载。 据Steam评…

Qt | QSQLite内存数据库增删改查

点击上方"蓝字"关注我们 01、演示 参数随便设置 查询 修改 右键菜单是重点 手动提交,点击Submit All

2024下半年软考报考攻略:从报名到拿证全流程,看这一篇就够了!

下半年软考本月就要开启报名了&#xff0c;有一些同学可能是第一次参加&#xff0c;还不清楚具体流程。今天小编就来为大家总结软考从报名到拿证的全过程指南&#xff0c;有需要的可以收藏这篇攻略哦&#xff01; 一、报名流程 1、登录网站 登录中国计算机技术职业资格网&…

C++结构体指针强制转换以处理电力系统IEC103报文

前言 最近依旧是开发规约解析工具的103篇&#xff0c;已经完成了通用分类服务部分的解析&#xff0c;现在着手开始搞扰动数据传输&#xff0c;也就是故障录波的传输。 在103故障录波&#xff08;扰动数据&#xff09;的报文中&#xff0c;数据是一个数据集一个数据集地存放&a…

如何有效优化无线双模蓝牙模块的通讯距离?

许多客户在使用无线双模蓝牙模块时发现传输距离达不到预期要求。影响无线蓝牙模块通讯距离的因素有很多&#xff0c;以下是美迅物联网MesoonRF归纳总结的一些可能的原因以及如何改善&#xff1a; 1.优化天线设计 天线是影响无线双模蓝牙模块通讯距离的关键因素之一&#xff0c;…

IPC进程间通信

信号 信号是一种终端机制&#xff0c;程序运行到一半的时候接收到了某种通知&#xff0c;程序就会立刻中断运行&#xff0c;转而去处理通知。 登记信号 一个进程只会接收默认的几个信号 如果想要让一个进程接收特定信号的话&#xff0c;必须提前在该进程中登记一下想要接收…

一次了解所有功能!超详细【Stable Diffusion界面】大揭秘!

对于AI绘画的初学者而言&#xff0c;一看到SD的UI界面肯定是一脸懵&#xff0c;因为有太多陌生词汇&#xff0c;什么大模型、什么提示词、什么什么采样迭代&#xff0c;和传统的画图方式完全不在一个层面上&#xff0c;学习起来就无从下手&#xff5e; 今天小元老师就给大家详…