LVS面试题
LVS 原理
- LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。
而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。
ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。
简述 LVS 三种工作模式,他们的区别
- 基于 NAT 的 LVS 模式负载均衡
- 所谓 NAT 模式,即网络地址转换模式,分发器有着一个公网 IP 地址,该公网 IP 地址对外提供服务,当客户端的请求数据发送到分发器后,由分发器将公网地址转换成私网地址,根据一定的算法,分发给后台的服务器进行处理.后台的服务器组处理完成后,将响应数据包发送给分发器,由 分发器私网 IP 地址转化成公网 IP 后再反馈给客户端.
- 在 NAT 工作模式下, 由于分发器要同时处理数据包的处理和相应,因此分发器的性能称为整个架构的瓶颈.如果后台真实服务器数量过多,则分发器的工作量越大,并且分发器还要维护 NAT 表,消耗大量的内存资源,因此这个模式尽管很适合公司网络,但是其后台能够支持的真实服务器数量不多.
- 基于 TUN 的 LVS 负载均衡
- Tunnel 模式即隧道模式 所谓的 Tunmel 模式 ,即分发器只负责接收客户端发送过来的数据包,然后将该数据包封装后按照算法发送给真实服务器,真实服务器在处理完该数据包,不需要将该数据包发送给分发器,而是直接将该数据包发送给客户端.
- 在 Tunnel 模式下,每个真实服务器都会又自己的公网 IP 地址,该公网 IP 地址一方面用于接收从分发器发送的客户端请求求,一方面给客户端发送其响应报文.也正因为每个真实都有自己的公网 IP 地址,因此真实服务器不用拘泥于网络架构,可以分散存储,起到容灾备份的作用.
- 基于 DR 的 LVS 负载均衡
- DR 模式, 即 Direct Routing,直接路由模式.在此模式下,分发器有接收客户端请求的公网 IP 地址,各个真实服务器也有自己的环回地址,该地址于分发器公网 IP 地址完全相同,并且该地址还需要能够正常访问公网,这样,当客户端的请求发送到分发器后,分发器只需要将请求数据包修改 MAC 地址后发送给后端真实服务器即可,由于目的 MAC 地址和 IP 地址都是自己,因此后端真实服务器会对该数据包进行正常响应.在响应完成后,真实服务器会将该数据包直接从环回地址发送出去,也不需要经过分发器
- 在 DR 模式下,网络层需要解决两个问题,一个是解决 IP 地址冲突的问题,由于在一个局域网中存在多个相同的公网地址,因此必须设置后端真实服务器不对 ARP 请求报文进行响应;另一个是后端真实服务器的转发问题,必须设置真实服务器使用自己的真实网卡转发环回网卡的数据包
模式之间的区别
NAT 模式 | TUN 模式 | DR 模式 | |
---|---|---|---|
对服务器的要求 | 服务器节点可以是任何操作系统 | 必须支持隧道模式.目前只要 linux | 服务器节点支持寻网卡设备,能够禁用设备的 arp 响应 |
网络要求 | 拥有私有 IP 地址的局域网 | 拥有合法 IP 地址的局域网或者广域网 | 拥有合法的 ip 地址的局域网,服务器节点与负载均衡器必须在同一网段 |
通常支持节点数 | 10-20 个,有均衡器处理能力决定 | 较高,可以支持到 100 个服务节点 | 较高,可以支持到 100 个服务节点 |
服务节点安全性 | 较好,采用内部 IP,服务节点隐蔽 | 较差,采用公网 ip 地址节点完全暴露 | 较差,采用公用 ip 地址,节点完全暴露 |
LVS 调度 算法
- 轮询调度
- 加权轮询调度
- 最小连接调度
- 加权最小连接调度
- 基于局部的最少连接
- 带复制的基于局部性的最少连接
- 目标地址散列调度
- 源地址散列调度 U
- 最短的期望的延迟
- 最少列调度
常见的 LVS 调度器算法(均衡策略)
- 轮询调度
- 轮询调度(简称:RR) 算法就是按依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是实现简单.轮询算法假设所有的服务器处理请求的能力都一样的,调度器会将所有的请求平均分配给每个真实服务器.
- 加权轮询调度
- 加权轮询(简称:WRR) 算法主要是对轮询算法的一种优化和补充,LVS 会考虑每台服务器的性能 并给每台服务器添加一个权值,如果服务器 A 的权值为 1,服务器 B 的权值 2,则调度到服务器 B 的请求会是服务器 A 的请求的 2 两倍.权值越高的服务器处理的请求越多.
- 最小连接调度
- 简称(LC)算法会把新的请求分配到当前连接数最小的服务器.最小连接调度是一种动态的调度算法,他通过服务器当前活跃的连接数来估计服务器的情况.调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接加 1 当连接中断或者超时 其连接数减 1
- 加权最小连接调度
- 简称 WLC 算法是最小连接调度的超集,各个服务器相应得权值表示其处理性能.服务器得缺省值为 1,系统管理员可以动态地设置服务器地权值,加权最小连接调度在调度新连接时尽可能使服务器已建立连接数和其权值成比列.调度器可以自动问询真实服务器地负载情况,并动态地调整其权值.
- 基于局部的最少连接
- 简称 LBLC 算法是针对请求报文地目标 IP 地址地负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群客户请求报文地目标 IP 地址是变化地,这里假设任何后端服务器都可以处理任一请求,算法地设计目标是在服务器地负载基本平衡地情况下,将相同目标 IP 地址地请求调度到同一台服务器,来提高各台服务器地访问局限性和 cache 命中率,从而提升整个集群系统地处理能力,LBLC 调度算法先根据请求地目标 IP 地址找出该目标 IP 地址最近使用地服务器,若该服务器是可用地且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则使用最少连接的原则选出一个可用的服务器,将请求发送到服务器
LVS 的工作模式及其工作过程和优缺点
- 基于 NAT 的 LVS 模式负载均衡
- 优点:运行成本底、安全性高适用于中小型网络公司
- 缺点:在NAT工作模式下,由于分发器要同时处理数据包的处理和响应,因此分发器的性能称为整个架构的瓶颈。如果后台真实服务器数量过多,则分发器的工作量就会越大,并且分发器还要维护NAT表,消耗大量的内存资源,因此这个模式尽管很适合公司网络,但是其后台能够支持的真实服务器数量不多。
- 基于 TUN 的 LVS 负载均衡
- 优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。也正因为每个真实都有自己的公网IP地址,因此真实服务器不用拘泥于网络架构,可以分散存储,起到容灾备份的作用。
- 缺点:但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议。需要大量的公网ip。成本较高。安全性较差,采用共用ip地址,节点完全暴露
- 基于 DR 的 LVS 模式负载均衡
- 优点:和VS-TUN一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。支持节点数较高。
- 缺点:要求负载均衡器的网卡必须与物理网卡在一个网段段上。节点安全性较差采用公用ip地址,节点完全暴露
相关文章:
LVS面试题
LVS 原理 LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。 而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。 ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。 简述 LVS 三种工作模式,他们的区别 基于 NAT 的 LVS…...

uniapp发行web页面在老版本浏览器打开一片空白
uniapp发行的web页面(菜单->发行->网站-PC Web或手机H5),对于一些老的浏览器(或内核),打开一片空白; 而在新版本的浏览器中打开却正常。这是因为那些版本较低的浏览器不支持ES6的语法和新…...

数据结构—二叉树的模拟实现(c语言)
目录 一.前言 二.模拟实现链式结构的二叉树 2.1二叉树的底层结构 2.2通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 2.3二叉树的销毁 2.4二叉树查找值为x的节点 2.5二叉树节点个数 2.6二叉树叶子节点个数 2.7二叉树第k层节点个数 三.二叉树的遍历 3.1…...
COCO数据集下载
文章目录 COCO官网貌似全部失效百度网盘提取码一直是1152 COCO官网 官网下载 train2017.zip annotations_trainval2017.zip val2017.zip stuff_annotations_trainval2017.zip test2017.zip image_info_test2017.zip 貌似全部失效 百度网盘提取码一直是1152 stuff_annotatio…...

基于安卓android微信小程序的校园互助平台
项目介绍 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整…...
Spring整合Junit(4、5)
在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context new classPathXmlApplicationContext("xxx.xm"); XXXX XXX context.getBean(Xxxx.cTass); 这两行代码的作用是创建Spring容器,最终获取到对象,但是每…...

Linux 程序开发流程 / 基本开发工具 / Vim / GCC工具链 / Make 工具 / Makefile 模板
编辑整理 by Staok。 本文部分内容摘自 “100ask imx6ull” 开发板的配套资料(如 百问网的《嵌入式Linux应用开发完全手册》,在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO:开发板资料》或《2.2 全系列Linux教程…...

2023.11.13【读书笔记】丨生物信息学与功能基因组学(第六章 多重序列比对 下)
目录 6.4 多重序列比对数据库6.5 基因组区域的多重序列比对6.6 展望6.7 常见问题总结 6.4 多重序列比对数据库 Pfam:基于谱隐马尔可夫模型构建的蛋白质家族数据库 SMART:简易分子构型研究工具,与细胞信号传导、细胞外结构域以及染色质功能…...

【vue】虚拟dom的原理是什么?手写实现虚拟dom !
1.虚拟dom的原理 虚拟 DOM 是对 DOM 的抽象,本质上就是用 JavaScript 对象来描述 DOM 结构。Vue.js 中关于虚拟 DOM 的实现主要进行了以下几个步骤: 1.生成虚拟 DOM: Vue.js 使用 render 函数来依据模板代码生成虚拟 DOM。在这个过程中&a…...

CentOS 7 双网卡绑定热备 —— 筑梦之路
为什么需要? 1. 增强网络的可靠性 2. 保障服务的可持续性 3. 降低网卡故障带来的不良影响 有哪些模式? 模式0:轮询策略(round robin),mode0,优点:流量提高一倍缺点:需要接…...
Qt绘制简单图表
Qt图表类似于model/view,chart就是model。 创建图表的各个部件: QChart *chart new QChart();chart->setTitle(tr("简单函数曲线")); // chart->setAcceptHoverEvents(true);ui->chartView->setChart(chart);ui->chartVi…...

CCLink转Modbus TCP网关_MODBUS网口设置
兴达易控CCLink转Modbus TCP网关是一种用于连接CCLink网络和Modbus TCP网络的设备。它提供了简单易用的MODBUS网口设置,可以帮助用户轻松地配置和管理网络连接 1 、网关做为MODBUS主站 (1)将电脑用网线连接至网关的P3网口上。 (…...

Vux购物车案例
一、综合案例 - 创建项目 本案例主要针对Vuex共享数据的练习以及父子组件数据的共享。 脚手架新建项目 (注意:勾选vuex) 版本说明: vue2 vue-router3 vuex3 vue3 vue-router4 vuex4/pinia vue create vue-cart-demo将原本src内容清空,替换…...

浅析网络协议-HTTP协议
1.HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图…...

启动Docker服务后显示Docker Engine stopped
1、重新启动Docker服务:打开Windows服务管理器(可以在开始菜单中搜索),找到"Docker Desktop Service"或类似命名的服务,右键单击并选择"重启"。稍等片刻,看看是否重新启动成功 2、尝试…...

Centos7 升级到 Centos8 教程以及关于dnf包管理工具的若干问题解决方案
目录 为什么升级一、参考文档二、升级步骤三、安装git编码错误缓存问题安装git依赖冲突问题解决办法 为什么升级 jenkins 2.4版本需要CentOS8 一、参考文档 点我 二、升级步骤 1.安装epel源 yum -y install epel-release2.安装rpmconf和yum-utils yum -y install rpmco…...

计算机网络技术(一)
深入浅出计算机网络 微课视频_哔哩哔哩_bilibili 第一章概述 1.1 信息时代的计算机网络 1. 计算机网络各类应用 2. 计算机网络带来的负面问题 3. 我国互联网发展情况 1.2 因特网概述 1. 网络、互连网(互联网)与因特网的区别与关系 如图所示࿰…...
redis监听key失效
前言 使用redis进行大数据量信息存储时,如存储百万级别设备/通道信息,如果我们想获取设备/通道是否失效,常规的方法是定时获取,但是这样对于应用来说太消耗性能。 redis提供了一种key事件监听的机制,应用可以监…...

echart宽度100px原因(解决el-tabs里的echarts图表宽度不自适应,只有100px问题)
目录 问题描述产生原因处理方法1.使用echart 的API —— resize()2.使用 v-if 总结 问题描述 项目中在el-tabs下面使用了图表,发现图表的宽度始终只有100px 产生原因 首先echart初始化的组件宽度设置了width: 100%,那么本来这个时候,echar…...

【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过PDO跑循环同步位置模式详解
本教程将指导您在Ubuntu操作系统下使用PDO来配置和控制PMM60系列一体化伺服电机以实现循环同步位置模式。我们将介绍必要的步骤和命令,以确保您能够成功地配置和控制PMM系列一体化伺服电机。 一、准备工作 在正式介绍之前还需要一些准备工作:1.装有lin…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...