计网 - LVS 是如何直接基于 IP 层进行负载平衡调度

文章目录

  • 模型
  • LVS的工作机制初探
  • LVS的负载均衡机制初探

在这里插入图片描述


模型

在这里插入图片描述

大致来说,可以这么理解(只是帮助我们理解,实际上肯定会有点出入),对于我们的 PC 机来说,物理层可以看成网卡,数据链路层可以看成网卡驱动程序,网络层和传输层由操作负责处理,应用层则是常用的一些网络应用程序和我们自己所编写的网络应用程序。

我们一些常见的网络应用基本上都是基于 TCP 和 UDP 的,这两个协议又会使用网络层的 IP 协议。但是我们完全可以绕过传输层的 TCP 和 UDP,直接使用 IP,比如

  • Linux 内核中的LVS 就可以直接基于 IP 层进行负载平衡调度;
  • 甚至还可以直接访问链路层,比如 tcpdump程序就是直接和链路层进行通信的

LVS的工作机制初探

LVS(Linux Virtual Server)是一个开源的负载均衡器,用于分发网络流量以提高系统的性能和可用性。其工作机制涉及以下关键步骤:

  1. 调度器(Scheduler)选择算法:
    LVS使用不同的调度算法来决定将请求分配给哪个后端服务器。常见的算法包括轮询、加权轮询、最小连接数等。调度器根据这些算法选择目标服务器。

  2. 网络地址转换(Network Address Translation,NAT):
    LVS使用NAT技术将客户端请求的源地址和端口转换为负载均衡器的地址和端口。这确保了响应流量正确返回到负载均衡器,然后再由负载均衡器转发给客户端。

  3. 负载均衡器转发请求:
    负载均衡器接收到客户端的请求后,根据调度器选择的后端服务器,将请求转发到相应的服务器。这样可以确保各个服务器的负载相对均衡,提高系统性能。

  4. 后端服务器响应:
    后端服务器接收到请求后,处理并生成响应。响应返回到负载均衡器。

  5. 负载均衡器返回响应给客户端:
    负载均衡器收到后端服务器的响应后,将响应转发给发起请求的客户端。在这个过程中,负载均衡器仍然会使用NAT技术将响应中的目标地址和端口转换回原始的客户端地址和端口。


LVS的负载均衡机制初探

LVS(Linux Virtual Server)是一个基于 IP 层的负载平衡解决方案,它通过对数据包的处理来实现负载平衡调度。下面是 LVS 如何直接基于 IP 层进行负载平衡调度的详细解释:

  1. IP 调度算法: LVS 使用 IP 调度算法来决定将客户端请求导向哪个服务器。这通常涉及到目标服务器的 IP 地址和端口号。常见的 IP 调度算法包括轮询调度、加权轮询、最小连接数等。这些算法允许 LVS 动态地将请求分配给多个后端服务器,以实现负载均衡。

  2. IP 转发: 当客户端发送请求到负载均衡器的虚拟 IP 地址时,LVS 在 IP 层拦截这些数据包。虚拟 IP 是负载均衡器的 IP 地址,而不是后端服务器的实际 IP 地址。负载均衡器检查目标 IP 和端口,并使用事先配置好的负载均衡算法来选择一个后端服务器。

  3. 修改目标 MAC 地址: 为了确保数据包到达正确的后端服务器,LVS 修改数据包的目标 MAC 地址,将其设置为选定的后端服务器的 MAC 地址。这样,数据包将直接传送到选定的服务器,而不是返回给客户端。

  4. 无连接负载平衡: LVS 通常以无连接的方式工作,即它不保持客户端与服务器之间的连接状态。每个请求都被独立处理,这使得 LVS 能够更轻松地适应不同的负载情况。

  5. 实时监控和调整: LVS 可以实时监控后端服务器的状态,例如服务器的负载、可用性等。基于这些信息,负载均衡器可以动态地调整负载分发策略,以确保最佳性能和可靠性。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计 基于SpringBoot的乡村政务办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介 随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习PythonS…

CentOS 7 离线安装MySQL审计插件

命令行 cd /data/toolssz mariadb-10.2.38-linux-x86_64.tar.gztar -zxvf mariadb-10.2.38-linux-x86_64.tar.gzinstall lib/plugin/server_audit.so /usr/lib64/mysql/plugin/mysql -uroot -prootinstall plugin server_audit SONAME server_audit.so;show variables like &q…

【Apollo】ubuntu20.04源码安装apollo8.0

官方源码安装教程 https://blog.csdn.net/weixin_45929038/article/details/120113008 安装NVIDIA GPU驱动 Apollo 8.0 的一些模块的编译和运行需要依赖 NVIDIA GPU 环境(例如感知模块),如果有编译和运行这类模块的需求,则需要安…

Redis生产实战-热key、大key解决方案、数据库与缓存最终一致性解决方案

生产环境中热 key 处理 热 key 问题就是某一瞬间可能某条内容特别火爆,大量的请求去访问这个数据,那么这样的 key 就是热 key,往往这样的 key 也是存储在了一个 redis 节点中,对该节点压力很大 那么对于热 key 的处理就是通过热…

深入探索 Spring Boot:简化开发,加速部署的全方位利器

目录 导言 1. 自动配置(Auto-Configuration) 2. 起步依赖(Starter Dependencies) 3. 嵌入式 Web 服务器 4. Actuator 5. 外部化配置 6. 简化的安全性配置 7. Spring Boot CLI 8. Spring Boot DevTools 导言 在当今软件开…

【华为数据之道学习笔记】4-2信息架构原则:建立企业层面的共同行为准则

信息架构承载了企业如何管理数据资产的方法,需要从整个企业 层面制订统一的原则,这些原则不仅是对数据专业人员的要求,也是对业务的要求,因为业务才是真正的数据Owner。所以,公司所有业务部门都应该共同遵从信息架构原…

学习pytorch20 pytorch完整的模型验证套路

pytorch完整的模型验证套路 使用非数据集的测试数据,测试训练好模型的效果代码预测结果解决报错 B站小土堆pytorch学习视频 https://www.bilibili.com/video/BV1hE411t7RN/?p32&spm_id_frompageDriver&vd_source9607a6d9d829b667f8f0ccaaaa142fcb 使用非数…

postman接口测试之Postman配置环境变量和全局变量

前言  我们在测试的过程中,遇到最多的问题也可以是环境的问题了吧,今天开发用了这个测试环境,明天又换了另一个测试环境,这样对于我们测试非常的麻烦,特别最接口的时候需要来回的输入环境地址比较麻烦,今天…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(四)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建3. 模型训练及保存4. 模型生成 系统测试1. 训练准确率2. 测试效果 相关其它博客工程源代码下载其它资料下载 前言 博主前段时间发布了一篇有关方言识别和分类模型训练的博客&#xff…

动态规划学习——通符串匹配,正则表达式

目录 ​编辑 一,通符串匹配 1.题目 2.题目接口 3,解题思路及其代码 二,正则表达 1.题目 2.题目接口 3.解题思路及其代码 三,交错字符串 1.题目 2,题目接口 3.解题思路及其代码 一,通符串匹配 1…

基于Python+WaveNet+MFCC+Tensorflow智能方言分类—深度学习算法应用(含全部工程源码)(三)

目录 前言引言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 模型构建1)定义模型结构2)优化损失函数 3. 模型训练及保存1)模型训练2)模型保存3)映射保存 相关其它博客工程源代码下载其它资料下载…

让植被管理更精准:数据可视化的新利器

【小编整理了300可视化大屏源文件,需要可后台私~!】 在当今时代,数据可视化技术已经成为了一个非常重要的技术。对于植被管理来说,数据可视化也有着非常重要的作用。通过将植被管理数据可视化,我们可以更加清晰地了解植…

Apache Flink(十一):Flink集群部署-Standalone集群部署

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 节点划分

SpringCloud-高级篇(七)

前面在微服务里整合了Seata,下面利用Seata去解决分布式事务的问题,回去学习Seata中的四种解决方案 :首先学习XA模式 (1)XA模式 RM在前面讲的是资源管理器,在XA标准中RM都是由数据库来实现的,数…

数据挖掘目标(Kaggle Titanic 生存测试)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns1.数据导入 In [2]: train_data pd.read_csv(r../老师文件/train.csv) test_data pd.read_csv(r../老师文件/test.csv) labels pd.read_csv(r../老师文件/label.csv)[Su…

oracle详细安装教程(附带百度网盘资源)

一,下载安装包途径 1.官网 Unauthorized Request 2.百度网盘分析 https://pan.baidu.com/s/1n221gdTK0Fcho839oRab9g 提取码1q2w 二,安装教程 1.下载完安装包后点击 setup.exe 如果出现一下的问题,使用windows10等系统安装oracle 11g等版本的数据库…

二叉树的最大深度

问题描述: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&#xff1…

ue4 解决角度万向锁的问题 蓝图节点

问题:当角度值从359-1变化的时候,数值会经历358、357… 解决方法:勾上Shortest Path,角度值的会从359-1

Ajax原理以及优缺点

Ajax原理 1.Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求, 2.从服务器获得数据,然后用javascript来操作DOM而更新页面。使用户操作与服务器响应异步化。 3.这其中最关键的一…