LVS+keepalived高可用集群

1、定义

keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,keepalived实现的是调度器的高可用,但keepalived不只为lvs集群服务的,也可以做其他代理服务器的高可用,比如nginx+keepalived也可实现高可用(重点)

2、作用

解决代理服务器的高可用问题

lvs的高可用集群:主调度器和备调度器(一主一备、一主两备)

3、工作方式

主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器都处于冗余状态,不参与集群的运转,当主调度器出现故障无法运行时,备用调度器承担主调度器的工作,一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又处于冗余状态

4、keepalived是基于VRRP协议实现lvs服务的高可用,解决了调度器单节点的故障问题

5、VRRP协议:提高网络路由器的可靠性开发的一种协议

工作原理:

(1)选举主备。预先设定好主和备的优先级,选举出主和备。主的优先级较高,备的优先级低,一旦开启服务,优先级高的会自动抢占主的位置

(2)检测主备。依靠VRRP组播通信检测主、备是否正常运转。组播通信地址:224.0.0.18。VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态,主服务器会周期性的发送VRRP报文消息,告知其他备服务器主服务器现在的状态

(3)主备切换。主服务器发生故障或者不可达,VRRP协议会把请求转移到备服务器。通过组播地址224.0.0.18,VRRP可以迅速的通知其他服务器立即主备切换,并确保新的主服务器可以正常的处理客户端的请求

(4)故障恢复。一旦主服务器恢复通信,由组播地址224.0.0.18进行通信,发现恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器调度和接收请求

6、LVS-DR模式结合keepalived数据流向

7keepalived的体系模块

全局模块:core模块。负责整个keepalived的启动、加载和维护

VRRP模块:实现VRRP协议,主备切换

check模块:配置在真实服务器的模块中。负责健康检查,检查后端真实服务器的健康状况

8、(重点)脑裂:主备同时拥有VIP地址

1、定义:在高可用系统中,联系两个节点的心跳线,本来是一体的,是一个动作协调的高可用系统。若心跳线断开后分裂成两个独立的个体,主备之间失去了联系,都以为对方出现了故障,两个调度器像脑裂人一样开始抢占主的位置和VIP地址,此时主服务器有VIP地址,备服务器也有VIP地址,导致整个集群失败

2、问题原因

  1. 软件层面:

重启主备服务器的keepalived服务(先重启主,再重启备,再模拟一下故障恢复)

配置文件

②tcpdump抓包分析

  1. 网络层面:

高可用服务器之间心跳线检测失败(主备之间无法进行通信,ping测试一下)

  1. 硬件层面:

①连接主备之间的心跳线老化

②网卡或网卡的驱动失效

③IP地址配置冲突

④防火墙没有配置心跳线消息的传输通道,导致检测失败(VRRP消息发不出去)

⑤后端服务器的配置问题(心跳方式不同、心跳广播冲突、软件bug等)

3、如何解决脑裂问题?

①硬件:准备两条心跳线,这样断了一条依然能够传送心跳消息

②设置防火墙,一定让心跳消息通过

③依靠监控软件实时监测(zabbix软件)

环境:

dev开发环境——开发人员专用(与运维无关)

sit测试环境——测试人员使用(开发、运维都可以用)

pre预生产环境——运维和开发使用(和最终的生产环境保持一致)

prd生产环境——面向用户的最终环境

常用的是开发、测试环境一块用,再加上生产环境

9、LVS+keepalived实现高可用实验

keepalived不能有注释;启动keepalived会自动生成ipvsadm配置,不需要配置ipvsadm配置文件;keepalived配置错误照样能重启

实验条件:

test1——主调度器——20.0.0.10——keepalived、ipvsadm服务

test2——备调度器——20.0.0.20——keepalived、ipvsadm服务

nginx1——后端真实服务器1——20.0.0.11——nginx服务

nginx2——后端真实服务器2——20.0.0.21——nginx服务

nginx3——客户端——20.0.0.31

VIP地址:20.0.0.100(自定义,必须和DIP和RIP在同一网段)

实验步骤:

1、主调度器test1——20.0.0.10

(1)安装、重启keepalived、ipvsadm服务

保存配置文件:ipvsadm-save > /etc/sysconfig/ipvsadm

(2)保存配置文件

(3)修改keepalived配置文件,绑定VIP地址和后端真实服务器地址

主和备的名称不能一样,否则报错

虚拟路由器的id号(virtual_router_id 51),主备一致

(4)关闭主服务器的转发功能和重定向

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

2、备份服务器test2——20.0.0.20

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)远程复制主服务器的keepalived配置文件

(4)修改keepalived配置文件vim /etc/keealived/keepalived.conf

3、检测此时VIP地址在哪台服务器上

4、后端服务器nginx1、nginx2设置静态页面,便于检测轮询

5、后端服务器nginx1、nginx2配置虚拟网卡,绑定VIP地址

(1)nginx1

①配置虚拟接口

②绑定回环接口

③内核参数优化(只有真实服务器的RIP地址可以返回响应结果)

(2)nginx2

①配置虚拟接口

②绑定回环接口

③内核参数优化(只有真实服务器的RIP地址可以返回响应结果)

6、测试

7、模拟故障

(1)主服务器故障——验证高可用,主备是否切换

结论:主备切换成功

(2)主服务器恢复正常运行——VIP地址是否能切换到原主服务器

(3)节点服务器出现故障——假设RS1故障

测试结果:只能访问另一个后端真实服务器

(4)节点服务器恢复正常运行——假设RS1正常运行

测试结果:根据轮询算法后端真实服务器

10、nginx+keepalived实现高可用实验

nginx依靠脚本检测主备服务器的健康生命体征

实验条件:

nginx4——主服务器——20.0.0.41——keepalived、ipvsadm服务

nginx5——备服务器——20.0.0.51——keepalived、ipvsadm服务

nginx6——客户端——20.0.0.61——nginx服务

VIP地址:20.0.0.100(自定义,必须和DIP和RIP在同一网段)

实验步骤:

1、主服务器nginx4

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)修改keepalived配置文件

(4)创建周期性执行脚本check_nginx.sh

(5)下载脚本文件到桌面 sz check_nginx.sh

(6)建立静态页面,便于识别

2、备服务器nginx5

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)远程连接复制主服务器的keepalived配置文件

(4)修改keepalived配置文件

(5)下载刚刚的周期性脚本执行文件并赋权

(6)建立静态页面,便于识别

3、检测VIP 地址。此时VIP地址在主服务器上

4、测试。没有轮询算法

5、模拟主服务器故障

测试结果:备服务器顶替主服务器工作

6、模拟备服务器故障

测试结果:主服务器恢复正常运行

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

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

相关文章

信道数据传输速率、信号传播速度——参考《天勤计算机网络》

一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率(Channel Data Transfer Rate) 指的是在通信系统中,通过信道传输的数据量,通常以 比特率(bits per second…

Python 算法高级篇:快速排序的优化算法

Python 算法高级篇:快速排序的优化算法 引言 1. 快速排序的基本原理2. 快速排序的优化技巧2.1 随机选择基准2.2 三分法2.3 小数组使用插入排序 3. 性能比较4. 结论 引言 在计算机科学中,排序是一个基本操作,而快速排序( Quick So…

接口自动化测试工具,Postman使用详解

一、概念 1、Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,Postman分为Postman native app和Postman Chrome app两个版本。目前Chrome app已经停止维护,官方也不推荐使用该版本。 2、官网下载地址:http://www.getpostman…

你绝对不知道的接口加密解决方案:Python的各种加密实现

在现代软件开发中,接口测试已经成为了不可或缺的一部分。随着互联网的普及,越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性,从而保障系统的正常运行。 在接口测试中,加密…

吃豆人C语言开发—Day2 需求分析 流程图 原型图

目录 需求分析 流程图 原型图 主菜单: 设置界面: 地图选择: 游戏界面: 收集完成提示: 游戏胜利界面: 游戏失败界面 死亡提示: 这个项目是我和朋友们一起开发的,在此声明一下…

金融行业网络安全保护与三级等保合规实施方案

金融行业网络安全保护与三级等保合规实施方案旨在帮助金融机构实施符合三级等保标准的网络安全保护措施。以下是一个基本的实施方案概述: 评估和规划: 进行风险评估:评估网络系统的风险,确定安全威胁、弱点和潜在风险。 确定等级…

Kafka入门04——原理分析

目录 01理解Topic和Partition Topic(主题) Partition(分区) 02理解消息分发 消息发送到分区 消费者订阅和消费指定分区 总结 03再均衡(rebalance) 再均衡的触发 分区分配策略 RangeAssignor(范围分区) RoundRobinAssignor(轮询分区) StickyAssignor(粘性分区) Re…

基于安卓android微信小程序的校园跑腿系统

项目介绍 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,校园跑腿系统被用户普遍使用,为方便用户能…

Kubernetes(K8S)集群部署

目录 一、创建3台虚拟机 二、为每台虚拟机安装Docker 三、安装kubelet 3.1 安装要求 3.2 为每台服务器完成前置设置 3.3 为每台服务器安装kubelet、kubeadm、kubectl 四、使用kubeadm引导集群 4.1 master服务器 4.2 node1、node2服务器 4.3 初始化主节点 4.4 work节…

腾讯云 AI 绘画:文生图、图生图、图审图 快速入门

腾讯云 AI 绘画是腾讯云推出的一款基于人工智能的图像生成和编辑产品,能够根据输入的图片或描述文本,智能生成与输入内容相关的图片,支持多样化的图片风格选择。 在本文中,我们将介绍如何使用腾讯云 AI 绘画的三项主要功能&#…

如何使用 VuePress 搭建博客网站并 Vercel 部署

先来看一下网站截图: 快速上手 1.创建并进入一个新目录 mkdir vuepress-starter && cd vuepress-starter2.使用你喜欢的包管理器进行初始化 yarn init # npm init3.将 VuePress 安装为本地依赖 yarn add -D vuepress # npm install -D vuepress4.创建你…

Qt中的单例模式

QT单例类管理信号和槽函数 Chapter1 Qt中的单例模式一、什么是单例模式?二、Qt中单例模式的实现2.1、静态成员变量2.2、静态局部变量2.3、Q_GLOBAL_STATIC 宏实例2 三、使用场景四、注意事项 Chapter2 QT单例类管理信号和槽函数一、创建单例类二、主界面添加组件三、…

Redis3.2.12版本服务器迁移

1.新机器更新yum源 yum -y update 2.新机器安装redis数据库 yum install redis 3.新机器下载fedora的epel仓库 systemctl enable redis 4.将旧机器上的/etc/redis.conf拷贝到新机器的/config目录下 scp -r -P22 redis.config root162.32.196.57:/config/redis.config 5.新机器启…

为虚拟网络提供敏捷负载均衡:Everoute LB 特性解读

为了保证应用系统的可用性,同时避免并发访问导致后端服务器出现性能瓶颈,不少用户都通过负载均衡技术优化流量分发。随着虚拟化平台下用户业务规模的持续扩大,虚拟化网络的数据访问量也不断增加,而传统负载均衡通常通过硬件负载均…

PyTorch基础(18)-- torch.stack()方法

一、方法详解 首先,看一下stack的直观解释,动词可以简单理解为:把……放成一堆、把……放成一摞。 有了对stack方法的直观感受,接下来,我们正式解析torch.stack方法。 PyTorch torch.stack() method joins (concaten…

统计学习方法 支持向量机(下)

文章目录 统计学习方法 支持向量机(下)非线性支持向量机与和核函数核技巧正定核常用核函数非线性 SVM 序列最小最优化算法两个变量二次规划的求解方法变量的选择方法SMO 算法 统计学习方法 支持向量机(下) 学习李航的《统计学习方…

数据结构—线性表(下)

文章目录 6.线性表(下)(4).栈与队列的定义和ADT#1.ADT#2.栈的基本实现#3.队列的形式#4.队列的几种实现 (5).栈与队列的应用#1.栈的应用i.后缀表达式求值ii.中缀表达式转后缀表达式 #2.队列的应用 (6).线性表的其他存储方式#1.索引存储#2.哈希存储i.什么是哈希存储ii.碰撞了怎么…

【高阶数据结构】B树

目录 1.B树 2.B树和B树的不同 3.B*树 B树较于哈希红黑树的优势:外查找:读取磁盘数据 ; B树的高度更低,对磁盘的进行I/O操作的次数更少(磁盘的性能比内存差得多); 1.B树 1.1.B树的概念&am…

如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

概述 京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供…

2023年集成电路还缺人吗?集成电路产业人才供需研讨会

10月20日,移知教育创始人团长受邀参与由ARM举办的《集成电路产业人才供需研讨会》,同样受邀参与的还有上海大学、华东理工大学、华东师范大学、上海工程技术大学、上海人社高级职称评审专家等等,高校负责人以及行业专家应邀参加了本次研讨会。…