LVS+keepalived小白都看得懂也不来看?

1 高可用集群

1.1 一个合格的集群应该具备的特性

1.负载均衡
LVS Nginx HAProxy F5
2.健康检查(使得调度器检查节点状态是否可以正常运行,调度器(负载均衡器)也要做健康检查)for调度器/节点服务器 keeplived hearbeat
健康检查(探针)的方式:
调度器的检查方法:
健康调度器是用于监控和管理节点服务器的工具。他定期发送请求到节点服务器,并根据响应结果判断节点服务器的健康状态
节点服务器的检查方法:

1.发送心跳消息 ping/pong

2.TCP的端口检查(向目标主机的IP:PORT 发送TPC连接请求 如果TCP连接成功三次握手成功则认为健康检查探测成功,如果三次握手失败,则认为健康检查探测失败)

3.HTTP URL检查 (向目标主机的http://IP:PORT/URL路径 发送HTTP GET请求方法,如果响应状态码返回2XX 3XX,则认为探测成功,如果响应状态码是4XX 5XX,则认为探测失败)

3.做故障转移(正常情况下由主来接受用户数据的转发,如果主挂掉了,则由备来接受用户数据的转发)
通过VIP漂移来实现主备切换(通过IP命令去生成的并不是真的漂移)

1.2 脑裂故障

现象:主服务器和备服务器同时拥有VIP地址
原因:因为主服务器和备服务器之间的通信链路中断导致备服务器无法收到主服务器发送的VRRP心跳消息(或VIP通告消息,通告消息默认通过组播消息发送也可以通过广播消息发送),备服务器误认为主服务故障了并通过IP命令生成VIP地址。
解决方法:关掉主服务器或者备服务器其中一个的keeplived服务
预防方法: 1.主服务器和备服务器之间添加双链路通信。2.在主服务器上添加脚本进行链路判断与备服务器通信链路是否中断,如果确实链路中断,则自行关闭keeplived服务。3.利用第三方应用或监控系统来检测是否发生脑裂故障,如果发发生脑裂故障,则通过第三方应用或监控系统紫星关闭主服务器或者备服务器上面的keeplived服务。
脚本思路:

2 keepalived

2.1 keepalive工具接受

专为LVS和HA设计的一款健康检查工具(nginx、haproxy都可用)

支持故障自动切换
支持节点健康状态检查

判断LVS负载调度器、节点服务器的可用性,当master出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。

Keeplived 是一个基于VRRP协议来实现的LVS服务高可用反感,可以解决静态路由处现单点故障问题。

在一个LVS服务群集中通常有主服务(MASTE与R)和备服务器(BACKUP)两种角色的服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

2.2 Keepalived实现原理解剖

Keepalived采用VRRP热备份协议,实现Linux服务器的多机热备功能。

VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前子啊显得路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

双机热背的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
实现基于Web服务器的双机热备

2.3 Keeplived体系主要模块和作用:

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
  • VRRP模块:是来实现VRRP协议的
Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动P?
答案:Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器浮动IP地址。优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP
keepalived的抢占与非抢占模式:
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP非抢占式俩节点state必须为bakcup,且必须配置nopreempt。注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

3 防止发生脑裂现象的lvs+keepalive部署

过滤nginx服务的方法:lsof -i :80 ;ps -C nginx --no-header ; netstat -lntp | grep nginx ; pidof nginx ; killall -0 nginx ; ps aux | grep nginx |egrep -v "grep|quot;

主、被服务器安装keepalived 、 ipvsadm 、nginx (yum安装nginx需要repo包)

复制一份keepalived配置文件便于还原,并修改keepalived配置文件

修改配置内容

重启keepalived并查看虚拟网卡

保存策略并启动ipvsadm,查看VIP是否分发策略

调整 proc 响应参数,关闭Linux 内核的重定向参数响应

修改nginx配置文件,添加集群

把主服务器keepalived配置文件传给备服务器

修改备服务器配置文件

把主服务器nginx配置文件传给备服务器
web服务器设置,查看部署结果

关闭主服务器查看是否可以继续访问

4 LVS+keepalive的部署

卸载nginx服务,清除脚本和nginx部署测试结果

关闭主服务器查看是否可以访问

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

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

相关文章

轻度听力损失的儿童需要早期干预吗?

一些宝宝在做听力筛查时总是不通过,进一步听力诊断发现宝宝有轻度的听力损失,刚知道这个消息时,家长可担心了,总想着宝宝是不是听不到啊?但是一段时间后,有些家长又会忽略宝宝的听力问题,因为部…

系列十四(面试)、谈谈你对StackOverflowError的理解?

一、StackOverflowError 1.1、概述 StackOverflowError是栈内存溢出的意思。栈中主要存储的是8种基本数据类型 引用类型 实例方法,栈的空间也是有限的,当存储进栈中的容量大于栈的最大容量时,就会报StackOverflowError的错误。 1.2、案例 …

Node.js使用Express框架写服务端接口时,如何将接口拆分到不同文件中

项目目录结构说明: node.js连接mysql数据库步骤可参考:Node.js 连接 MySQL | 菜鸟教程 1、拆分之前的写法,未区分模块,所有接口api都写在了入口文件app.js中; 需求:想要将接口api拆分成根据不同的业务模块…

大型语言模型:RoBERTa — 一种稳健优化的 BERT 方法

slavahead 一、介绍 BERT模型的出现BERT模型带来了NLP的重大进展。 BERT 的架构源自 Transformer,它在各种下游任务上取得了最先进的结果:语言建模、下一句预测、问答、NER标记等。 尽管 BERT 性能出色,研究人员仍在继续尝试其配置&#xff0…

旅游景区项目信息化建设运营方案:PPT47页,附下载

关键词:智慧景区解决方案,智慧景区建设,智慧景区开发与管理,智慧景区建设的意义,智慧景区管理 一、旅游景区项目信息化建设背景 1、旅游业发展迅速:随着旅游业的不断发展,游客对旅游体验的需求…

多级缓存:亿级流量的缓存方案

文章目录 一.多级缓存的引入二.JVM进程缓存三.Lua语法入门四.多级缓存1.OpenResty2.查询Tomcat3.Redis缓存预热4.查询Redis缓存5.Nginx本地缓存6.缓存同步 一.多级缓存的引入 传统缓存的问题 传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未…

【LeetCode刷题】--245.最短单词距离III

245.最短单词距离III class Solution {public int shortestWordDistance(String[] wordsDict, String word1, String word2) {int len wordsDict.length;int ans len;if(word1.equals(word2)){int prev -1;for(int i 0;i<len;i){String word wordsDict[i];if(word.equa…

Xcode 恢复Discard Changes

当开发的时候&#xff0c;Discard All Changes后 文件的修改都被放弃了&#xff0c;怎么才可以撤销更改呢 Xcode和Git没有这个功能&#xff0c;Finder可以实现 首先我们先退出Xcode用TextEdit打开你想恢复的文件转到文件 > 还原到 > 浏览所有版本...选择你想恢复的版本即…

Notepad++:多行数据操作

1&#xff09;删除关键字之后&#xff08;或之前&#xff09;的所有字符 删除s之后&#xff08;包含s&#xff09;的所有内容&#xff1b;快捷键&#xff1a;s.*$ 替换成功 删除s之前&#xff08;包含s&#xff09;的所有内容&#xff1b;快捷键&#xff1a;^.*s 2&#xff09…

互式流程图|BPMN JointJS+ JavaScript 3.7.3 Crack

JointJS 是 JavaScript 图表库为卓越的 UI 提供支持 使用经过验证的库快速、自信地构建高级视觉和无代码/低代码应用程序。 赋能全球行业领导者 使用 JointJS 构建的图表 一个库&#xff0c;‍无限 UI 选项 直接在您的应用程序中享受交互式流程图、BPMN 和其他图表工作室。利用…

乐理基础-情绪与速度、具体的速度、BPM

首先音乐中的一拍并不是一个具体的时间&#xff08;详情看这两个 认识音符、什么是一拍&#xff09;&#xff0c;一拍并不是1图6&#xff1a;秒、2秒、3秒这样一个具体的时间&#xff0c;只能说在同样一份乐谱和同样一个速度下&#xff0c;全音符、二分音符、四分音符等等会依次…

aws配置以及下载 spaceNet6 数据集

一&#xff1a;注册亚马逊账号 注册的时候&#xff0c;唯一需要注意的是信用卡绑定&#xff0c;这个可以去淘宝买&#xff0c;搜索aws匿名卡。 注册完记得点击登录&#xff0c;记录一下自己的账户ID哦&#xff01; 二&#xff1a;登录自己的aws账号 2.1 首先创建一个用户 首…

QTNet:Query-based Temporal Fusion with Explicit Motion for 3D Object Detection

参考代码&#xff1a;QTNet 动机和出发点 自动驾驶中时序信息对感知性能具有较大影响&#xff0c;如在感知稳定性维度上。对于常见的时序融合多是在feature的维度上做&#xff0c;这个维度的融合主要分为如下两个方案&#xff1a; 1&#xff09;BEV-based方案&#xff1a;将之…

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染&#xff1a; 参数&#xff1a; 要循环遍历的数组&#xff0c;Array类型遍历的回调方法&#xff0c;Function类型为每一项生成唯一标识符的方法&#xff0c;有默认生成方法&#xff0c;非必传 使用示例&#xff1a; interface Item {name: String,price: N…

Linux之yum管理器

目录 yum管理器 yum相关指令 yum list yum list | grep yum install yum remove 拓展 1.yum install -y man-pages 2.切换yum源 3.yum install -y epel-release 4. yum install -y lrzsz rz指令 sz指令 在window系统上&#xff0c;我们会在电脑自带的应用商…

【python基础】-- yarn add 添加依赖的各种类型

目录 1、安装 yarn 1.1 使用npm安装 1.2 查看版本 1.3 yarn 淘宝源配置 2、安装命令说明 2.1 yarn add&#xff08;会更新package.json和yarn.lock&#xff09; 2.2 yarn install 2.3 一些操作 2.3.1 发布包 2.3.2 移除一个包 2.3.3 更新一个依赖 2.3.4 运行脚本 …

华清远见嵌入式学习——ARM——作业1

要求&#xff1a; 代码&#xff1a; mov r0,#0 用于加mov r1,#1 初始值mov r2,#101 终止值loop: cmp r1,r2addne r0,r0,r1addne r1,r1,#1bne loop 效果&#xff1a;

【VRTK】【VR开发】【Unity】16-磁吸区域

课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【背景】 记得《半条命艾利克斯》中神奇的磁吸手套吗?这就是用本篇介绍的Snap Zone实现的!Snap Zone可以达到将两个物体以特定方式对齐的效果,比如让…

YOLOv8改进 | 主干篇 | 利用MobileNetV1替换Backbone(轻量化网络结构)

一、本文介绍 本文给大家带来的改进机制是MobileNetV1&#xff0c;其是专为移动和嵌入式视觉应用设计的轻量化网络结构。这些模型基于简化的架构&#xff0c;并利用深度可分离卷积构建轻量级深度神经网络&#xff0c;其引入了两个简单的全局超参数&#xff0c;用于在延迟和准确…

自学精灵--专业的编程学习网站

这是我看过的最靠谱的编程学习网站&#xff0c;名字是&#xff1a;自学精灵&#xff0c;网站是&#xff1a;learn.skyofit.com。&#xff08;某度搜"自学精灵"也可找到此站&#xff0c;搜不到可以用必应搜&#xff09;。 自学精灵是全网最强的学习平台&#xff0c;我…