高可用集群keepalived 详细讲解

news2024/9/21 18:50:31

一:高可用集群keepalived

LB:Load Balance 负载均衡

负载均衡,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务

减轻了某个或某些实体的负载,将任务通过某种策略分配到多个实体上去,实现负载在不同实体间的平衡。这种技术可以显著提高系统的可扩展性、可用性和效率。
在实际应用中,负载均衡可以采取多种策略,如轮询、随机、最少连接等。这些策略各有优缺点,适用于不同的场景。例如,轮询策略可以确保工作负载均匀分配给各个实体;而最少连接策略则优先将新任务分配给当前连接数最少的实体。选择合适的策略对于保证系统的稳定性和性能至关重要。

HA High Availability 高可用集群
高可用集群,即当前服务器出现故障时,可以将该服务器中的服务、资源、IP等转移到另外一台服

 务器上,从而满足业务的持续性;这两台或多台服务器构成了服务器高可用集群,就是说要保证服务能一直一直的稳定运行,不能断断续续的

系统可用性
可用时间与可用时间和故障时间的和的比就是,系统可用性
A=MTBF/(MTBT+MTTR)
指标 : 99.9%, 99.99%, 99.999%,99.9999%
SLA Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)
实现高可用
提升系统高用性的解决方案:降低 MTTR- Mean Time To Repair( 平均故障时间 )
解决方案:建立冗余机制
active/passive /
active/active 双主
active --> HEARTBEAT --> passive
active <--> HEARTBEAT <--> active

VRRP Virtual Router Redundancy Protocol
虚拟路由冗余协议 , 解决静态网关单点风险
物理层 : 路由器、三层交换机
软件层 :keepalived

VRRP 相关术语
虚拟路由器: Virtual Router
虚拟路由器标识: VRID(0-255) ,唯一标识虚拟路由器
VIP Virtual IP
VMAC Virutal MAC (00-00-5e-00-01-VRID)
物理路由器:
master :主设备
backup :备用设备
priority :优先级
VRRP 相关技术
通告:心跳,优先级等;周期性
工作方式:抢占式,非抢占式
安全认证:
无认证
简单字符认证:预共享密钥
MD5
工作模式:
/ 备:单虚拟路由器
/ 主:主 / 备(虚拟路由器 1 ),备 / 主(虚拟路由器 2

.Keepalived 部署
下图是各个主机IP配置情况

用httpd的网页来测试,现在先测试网页可不可通

[root@server1 ~]# yum install httpd -y

[root@server1 ~]# echo This is 172.16.10.110 > /var/www/html/index.html

[root@server1 ~]# systemctl enable --now httpd


[root@server2 ~]# yum install httpd -y

[root@server2 ~]# echo This is 172.16.10.120 > /var/www/html/index.html

[root@server2 ~]# systemctl enable --now httpd

[root@ka1 ~]# curl 172.16.10.110
This is 172.16.10.110

[root@ka1 ~]# curl 172.16.10.120
This is 172.16.10.120

[root@ka1 ~]# yum install keepalived -y

[root@ka2 ~]#  yum install keepalived -y

全局配置

配置虚拟路由器

保存退出,重启Keepalived服务

生成了VIP100

在ka2上同样的配置

测试

keepalived虚拟路由的通讯设定

在配置此步骤前在server上是 ping 不通VIP172.16.10.100的

可以看见现在可以ping通VIP172.16.10.100

keepalived日志分离

[root@ka1 ~]# vim /etc/sysconfig/keepalived 

[root@ka1 ~]# vim /etc/rsyslog.conf 

keepalived独立子配置文件

当生产环境复杂时, /etc/keepalived/keepalived.conf 文件中内容过多,不易管理
将不同集群的配置,比如:不同集群的 VIP 配置放在独立的子配置文件中利用 include 指令可以实现包含 子配置文件

[root@ka1 ~]# mkdir -p /etc/keepalived/conf.d
[root@ka1 ~]# vim /etc/keepalived/conf.d/172.16.10.100.conf

重启keepalived服务

VIP依然存在,实现独立子配置文件

keepalived-非抢占模式和延迟抢占

默认为抢占模式 preempt ,即当高优先级的主机恢复在线后,会抢占低先级的主机的 master 角色,
这样会使 vip KA 主机中来回漂移,造成网络抖动,
建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的 master 角色
非抢占模块下 , 如果原主机 down , VIP 迁移至的新主机 , 后续也发生 down , 仍会将 VIP 迁移回原主机

此时VIP在ka2上,只有当ka2重启时,VIP才会被ka2放掉,回到ka1

延迟抢占

当拥有VIP的主机重启后,延时5秒才转交VIP

VIP 单播配置
默认 keepalived 主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

两边都要注释vrrp_strict  与单播模式冲突

重启ka1和ka2的keepalived服务

keepalived-邮件通知

QQ邮件通知

在这里生成授权码

记住这里的授权码

[root@ka1 ~]# vim /etc/mail.rc

发送一条测试邮件到邮箱

[root@ka1 ~]# echo hello word | mail -s test 2554511017@qq.com
 

成功受到邮件

通知脚本类型:

什么时候需要发通知

当前节点成为主节点时触发的脚本
notify_master <STRING>|<QUOTED-STRING>
当前节点转为备节点时触发的脚本
notify_backup <STRING>|<QUOTED-STRING>
当前节点转为 失败 状态时触发的脚本
notify_fault <STRING>|<QUOTED-STRING>
通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知
notify <STRING>|<QUOTED-STRING>
当停止 VRRP 时触发的脚本
notify_stop <STRING>|<QUOTED-STRING>

通知脚本的调用方法:直接在 vrrp_instance VI_1 语句块的末尾加下面行就行
例如:
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"

写完后要给脚本配置权限

[root@ka1 ~]# chmod +x /etc/keepalived/mail.sh

在[root@ka1 ~]# vim /etc/keepalived/keepalived.conf 中调用

最后能在邮箱中看见设备变化的邮件

keepalived-双主模式

master/slave 的单主架构,同一时间只有一个 Keepalived 对外提供服务,此主机繁忙,而另一台主机却
很空闲,利用率低下,可以使用 master/master 的双主架构,解决此问题。
master/master 的双主架构:
即将两个或以上 VIP 分别运行在不同的 keepalived 服务器,以实现服务器并行提供 web 访问的目的,提高
服务器资源利用率

ka2上也一样要配置

配置好后,保存退出重启

ka1在虚拟路由1上是主,在虚拟路由2上是备

ka2在虚拟路由1上是备,在虚拟路由2上是主

形成双主模式

keepalived-ipvs设定

先在server1和server2上添加VIP172.16.10.100

[root@server1 ~]# ip a a 172.16.10.100/32 dev lo

[root@server2 ~]# ip a a 172.16.10.100/32 dev lo
 

[root@ka1 ~]# yum install ipvsadm -y

[root@ka2 ~]# yum install ipvsadm -y

ka2上与ka1一模一样

重启keepalived服务后

在客户端上curl 172.16.10.100,ka1或者ka2只要有一台存活即可

keepalived+haproxy的高可用集群

[root@ka1 ~]# yum install haproxy -y
[root@ka2 ~]# yum install haproxy -y
 

[root@ka1 ~]# sysctl --system              
[root@ka2 ~]# sysctl --system            
 

[root@ka1 ~]# vim /etc/haproxy/haproxy.cfg 

[root@ka1 ~]# systemctl enable --now haproxy.service 
 

ka1和ka2上不能有VIP

[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg 

[root@ka2 ~]# systemctl enable --now haproxy.service 
 

ka2也是

ka2同样

ka1和ka2中故障一台,最终不影响服务的运行

实现高可用

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

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

相关文章

git详细命令

git常用命令&#xff0c;待 1. 前言2. Git安装3. 公钥3.1 生成公钥3.2 配置SSH 密钥 4. 配置用户名和邮箱5. git常用命令5.1 创建仓库命令5.1.1 git init命令5.1.2 git clone[url] 命令 5.2 add 增加 / 删除文件 &#xff08;跟踪文件&#xff09;5.3 代码提交5.4 分支5.5 标签…

性能优化理论篇 | Cache VS Buffer,傻傻分不清 ?

性能优化系列目录&#xff1a; 性能优化理论篇 | 彻底弄懂系统平均负载 性能优化理论篇 | swap area是个什么东西 从free命令开始 free 命令是一个在类 Unix 操作系统中用于显示内存使用情况的工具。它的输出包含了系统内存的不同方面&#xff0c;如总内存、已用内存、空闲内存…

不同路径 II[中等]

优质博文&#xff1a;IT-BLOG-CN 一、题目 一个机器人位于一个m x n网格的左上角 &#xff08;起始点在下图中标记为Start&#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为Finish&#xff09;。 现在考虑网格中有…

@[TOC](letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度)

letcode 分类练习 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度 226.翻转二叉树101. 对称二叉树104.二叉树的最大深度111.二叉树的最小深度 226.翻转二叉树 利用自底向上的遍历交换左子树和右子树 class Solution { public:TreeNode* invertTr…

后端Web之数据库(以MySQL为例)

目录 1.概述 2.MySQL 3.DDL 4.DML 5.DQL 1.概述 对于我们自己写的一些小功能&#xff0c;数据一般存储在文件中&#xff0c;比如XML文件。而在实际项目中&#xff0c;数据都是存放在数据库中的。数据库&#xff08;DataBase &#xff09;是一个存储数据的集合&#xff0c…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧&#xff0c;网络无敌&#xff01;Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【计算机硬件蓝光光驱】

蓝光光驱&#xff08;Blu-ray Disc Drive&#xff09;是一种光盘驱动器&#xff0c;用于读取和写入蓝光光盘。蓝光光盘是一种高容量、高清晰度的光存储介质&#xff0c;用于存储视频、音频、数据等多种媒体内容。蓝光光驱的名称“蓝光”来源于其使用的蓝色激光光束&#xff0c;…

Windows 安装 及解决 tvm 无法打开 源 文件 “dmlc/logging.h“

如果你在编译 TVM 时遇到 dmlc/logging.h 文件缺失的问题&#xff0c;很可能是因为在克隆 TVM 仓库时没有包含其子模块&#xff0c;而这些子模块&#xff08;如 dmlc-core&#xff09;是通过 Git 管理的。解决步骤 安装 Git&#xff1a; 如果你还没有安装 Git&#xff0c;需要先…

ES6学习笔记(九)——class(类)

1. 封装 传统面向对象的编程序语言都是【类】的概念&#xff0c;对象都是由类创建出来&#xff0c;然而早期 JavaScript 中是没有类的&#xff0c;面向对象大多都是基于构造函数和原型实现的&#xff0c;但是 ECMAScript 6 规范开始增加了【类】相关的语法&#xff0c;使得 Ja…

虚幻5|AI视力系统,听力系统,预测系统(1)视力系统

继宠物伴随系统初步篇后续 虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇-CSDN博客 一&#xff0c;听力系统 1.打开宠物ai的角色蓝图 2.选中ai感知组件 右侧细节&#xff0c;找到ai感知&#xff0c;添加感知配置&#xff0c;我们需要的是ai视力配置 3.选中左侧创建的ai感知组件&…

CLRerNet推理详解及部署实现(上)

目录 前言1. 概述2. 环境配置3. Demo测试4. ONNX导出初探5. ONNX导出优化6. ONNX导出总结结语下载链接参考 前言 继续我们的车道线检测任务&#xff0c;之前我们分享了基于 anchor 的 LaneATT 模型以及 CVPR2022 的 SOTA 方案 CLRNet&#xff0c;这里我们分享 WACV2024 中的一个…

如何在Linux系统上使用ONLYOFFICE文档编辑PDF文件

​对Linux用户来说&#xff0c;得益于各类免费PDF编辑器&#xff0c;编辑PDF文件从来都不是无解难题。 如果您需要为PDF文件添加注释、留下批注、编辑已有文本或添加新文本框、插入图片或形状、删除某些页面或永久删除页面&#xff0c;您始终可以找到合适的应用&#xff0c;轻…

有关JavaScript的函数定义和函数的两种声明方式

1.函数 函数是一段可重复执行的代码块&#xff0c;它可以接收参数&#xff0c;并返回结果。在JavaScript中&#xff0c;函数用于封装可重用的代码&#xff0c;提高代码的可读性和可维护性。 1.1 函数的定义 函数的定义包括以下几个部分&#xff1a; 函数名称&#xff1a;用…

Hive3:表性能优化-分区与分桶

一、分区 1、概念 我们知道&#xff0c;一个Hive表&#xff0c;对应的HDFS是一个文件夹。 那么&#xff0c;当数据非常多的时候&#xff0c;存放在一个文件夹中&#xff0c;后期进行查询操作会影响性能。 所以&#xff0c;Hive引入了分区管理的方式。 本质就是&#xff0c;在…

Datawhale X 魔搭 AI夏令营-AIGC方向-LoRA学习笔记

LoRA&#xff08;Low-Rank Adaptation&#xff09;是一种用于优化大规模预训练模型的微调技术&#xff0c;特别适用于在资源有限的情况下&#xff0c;对模型进行高效且低成本的微调。LoRA的核心思想是通过低秩分解方法&#xff0c;仅微调模型的少数参数&#xff0c;从而显著减少…

关于图像亮度相关的调试总结

1、问题背景 关于图像亮度的调试&#xff0c;是整个ISP中非常重要的一块&#xff0c;它决定了图像整体的亮度、对比度、细节、以及噪声&#xff0c;对人眼有非常直观的感受&#xff0c; 之前也就具体问题&#xff0c;整理过几篇图像亮度模块相关的调试总结&#xff1a; 关于图…

标题中有多少个字符(c语言)

1.//描述 //凯刚写了一篇美妙的作文&#xff0c;请问这篇作文的标题中有多少个字符&#xff1f; //注意&#xff1a;标题中可能包含大、小写英文字母、数字字符、空格和换行符。统计标题字 符数时&#xff0c;空格和换行符不计算在内。 //输入描述&#xff1a; //输入文件只有一…

【12】KMP和Manacher算法

目录 一.KMP算法解决的问题 二.Manacher算法解决的问题 基本概念 优化 一.KMP算法解决的问题 暴力求解复杂度O(N*M) next数组&#xff1a;next[i]表示arr[0...i-1]的前缀和后缀的最长公共长度。 Y位置失败&#xff0c;将前缀和后缀完全匹配&#xff0c;将前缀的部分和后缀对…

软件测试---接口自动化

一、pythonrequests模块 &#xff08;1&#xff09;requests全局观 安装&#xff1a;pip install requests 1.发送请求 ①requests.get() 发送get请求 ②requests.post() 发送post请求 data和json的区别&#xff1a;取绝于你需要传递的参数的类型。 files&#xff1a;文件上…

大学成长之路:如何从烧锅炉的逆袭成为FPGA大厂高管

如何从烧锅炉的逆袭成为FPGA大厂Sales Director 在即将到来的开学季&#xff0c;很多学子从高中生成为一个大学生&#xff0c;走入新的征程。大学生涯是人生的一个非常重要的阶段&#xff0c;如何度过大学4年的时光&#xff0c;并学有所成&#xff0c;是很多大学新生和家长思考…