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

devtools/2024/9/20 1:15:31/ 标签: 云原生, 运维, linux

一、高可用集群

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 #邮件服务器连接timeoutrouter_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 MASTERinterface eth0 #绑定为当前虚拟路由器使用的物理接口,如:eth0,可以和VIP不在一个网卡virtual_router_id 51#每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一否则服务无法启动#同属一个虚拟路由器的多个keepalived节点必须相同#务必要确认在同一网络中此值必须唯一priority 100 #当前物理节点在此虚拟路由器的优先级,范围:1-254#值越大优先级越高,每个keepalived主机节点此值不同advert_int 1 #vrrp通告的时间间隔,默认1sauthentication { #认证机制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,默认32172.25.254.101/24 dev eth1172.25.254.102/24 dev eth2 label eth2:1}
}

http://www.ppmy.cn/devtools/95400.html

相关文章

SQL注入(宽字节、堆叠、二次注入)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 1. 宽字节注入 1.1 什么是宽字节 1.2 gbk编码原理 1.3 宽字节注入原理 1.4 靶场解析 靶场练习 2. 堆叠注入&#xff08;多语句&#xff09; 2.1 使用条件 2.2 语句构造 2.3 靶场解析 靶场练习 3. 二…

HDFS常用命令

文章目录 HDFS常用命令1. hdfs dfs -ls&#xff1a;列出目录内容。2. hdfs dfs -mkdir&#xff1a;创建目录3. hdfs dfs -put&#xff1a;将本地文件上传到 HDFS4. hdfs dfs -get&#xff1a;从 HDFS 下载文件到本地文件系统5. hdfs dfs -rm&#xff1a;删除 HDFS 上的文件或目…

成长:思维的转变

今天&#xff0c;突然把之前的经历都整合为了一些理论&#xff0c;上升到了另一个层次&#xff0c;我对这段时间的体会还是很深的&#xff0c;在我与同学一起学习的这段时间&#xff0c;我思考问题的方式竟然是被有意引导的&#xff0c;不得不说&#xff0c;对人性的理解确实上…

第八季完美童模全球总冠军·韩嘉潞 破浪扬帆写就传奇

梦想的舞台上&#xff0c;星光璀璨&#xff0c;每一步都闪耀着坚持与努力的光芒。在这个盛夏&#xff0c;我们共同见证了一个关于勇气、才华与梦想的辉煌篇章——星光女孩韩嘉潞&#xff0c;在第八季完美童模的璀璨舞台上&#xff0c;以非凡的魅力与不懈的努力&#xff0c;勇夺…

网络协议 十一 ARP,RARP,icmp,websocket,webservice,HTTPDNS,FTP,邮件相关的协议, SMTP,POP,IMAP

ARP 已知IP 求 MAC 的过程 RARP 已知MAC 求 IP 的过程&#xff0c;已被DHCP取代 ICMP websocket 协议&#xff0c;html5中提出的前端使用协议 webservice 技术&#xff0c;已过时 HTTPDNS 之前我们要获得 某一个域名的 IP &#xff0c;要通过DNS协议 去 运营商的ISP 查询&…

SQL注入(head、报错、盲注)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 1. 报错注入 1.1 那么什么是报错注入呢&#xff1f; 1.2 报错注入原理 extractvalue函数 updatexml函数 1.3 靶场解析 靶场练习 2. HEAD注入 2.1 相关全局变量 2.2 靶场解析 burp暴力破解 靶场练习 3…

【vue】在页面右下角添加悬浮按钮组件

效果图&#xff1a; 如上图所示&#xff0c;需要在页面的左下角添加一个悬浮按钮&#xff0c;鼠标放上去时候展示更多详细按钮&#xff0c;点击触发相应方法。 <div class"floating-component"><!-- 悬浮内容 --><el-tooltip placement"left&qu…

深入探讨程序化广告的广告上报阶段:关键细节与最佳实践

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

基于springboot的医药管理系统

TOC springboot194基于springboot的医药管理系统 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&#xff0c;到如今的…

Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在Excel表格中&#xff0c;把多行同类数据合并为一行是件令人无比头痛的事情&#xff1a;首先&#xff0c;你得确定哪几条记录是可合并的同类数据&#xff0c;人工对比多个字段难免顾此失彼挂一漏万&#xff1b;其次&…

在进行等保测评时,如何确保资产识别的全面性和准确性?

在进行等保测评时&#xff0c;确保资产识别的全面性和准确性是至关重要的&#xff0c;以下是一些关键步骤&#xff1a; 1. 明确资产定义&#xff1a;首先明确什么是资产&#xff0c;包括硬件、软件、数据、服务、人员等。 2. 资产清单&#xff1a;创建一个详细的资产清单&…

Myc抗体选择避坑指南

同学&#xff1a; 最近在为买Myc抗体发愁&#xff0c;真害怕买错了&#xff0c;不但损失几千块钱&#xff0c;更害怕实验数据出问题&#xff01;c-Myc和Myc-Tag区别是什么呢&#xff1f; 龙宝&#xff1a; c-Myc 基因 是 Myc 基因家族的重要成员之一&#xff0c;他与多种肿…

C++引用和指针的区别还分不清楚?

不像其他语言&#xff0c;c既有引用的概念、又有指针的概念。 很多人用着用着就懵了。 不用慌&#xff0c;给你画个表格协助判断。 总体上&#xff0c;我们可以总结为以下五个区别&#xff1a; 一、定义方式&#xff1a; 指针通过使用 * 来定义&#xff0c;例如&#xff1…

Qt之2048项目的介绍

文章目录 前言项目介绍项目截图技术介绍1. Qt 框架2. 界面绘制3. 用户输入4. 游戏逻辑5. 音效处理总结前言 2048 是一款流行的益智游戏,通过滑动屏幕上的数字方块,使相同的数字合并并生成更大的数字,最终目标是生成2048这个数字。本文介绍了基于 Qt 框架开发的一个 2048 游…

【前端】NodeJS:记账本案例优化(会话控制)——登录、注册

文章目录 1 checkLoginMiddleware.js2 auth.js3 app.js4 设置公益404&#xff1a;404.ejs 1 checkLoginMiddleware.js //检测登录的中间件 module.exports (req, res, next) > {//判断if(!req.session.username){return res.redirect(/login);}next(); }2 auth.js var ex…

YOLOv8改进 | 融合改进 | C2f融合轻量化视觉Transformer【完整代码】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

python实现每天定时发送邮件

文章目录 步骤 1: 安装所需的库步骤 2: 编写发送电子邮件的 Python 脚本步骤 3: 配置电子邮件发送服务步骤 4: 运行脚本进一步扩展 要编写一个用于自动发送每日电子邮件报告的 Python 脚本&#xff0c;并配置它在每天的特定时间发送电子邮件&#xff0c;使用 smtplib 和 emai…

【功能全局变量】设计模式讲解

1.什么是功能全局变量&#xff08;FGV&#xff09;&#xff1f; FGV是一种标准的LabVIEW数据结构&#xff0c;允许对数据或资源进行受控访问&#xff0c;通常允许执行各种操作。每次调用FGV时&#xff0c;框图只会执行一次&#xff0c;要么进行数据更新&#xff0c;要么进行读取…

MySQL——单表查询(二)按条件查询(2)带 IN 关键字的查询

IN 关键字用于判断某个字段的值是否在指定集合中&#xff0c;如果字段的值在集合中&#xff0c;则满足条件&#xff0c;该字段所在的记录将被查询出来。其语法格式如下所示&#xff1a; SELECT *|字段名 1,字段名 2,… FROM 表名 WHERE 字段名 [NOT〕IN(元素 1,元素 2,…) 在上…

WPS真题题库导入刷题小程序:百思考个人使用经验分享

这篇文章的诞生&#xff0c;是因为我即将踏上一场超级有趣的挑战——备考全国计算机等级二级WPS Office高级应用与设计的冒险之旅&#xff01; WPS的分值&#xff1a; 单项选择题20分(含公共基础知识部分10分)。 WPS处理文字文档操作题30分。 WPS处理电子表格操作题30分。 …