lvs知识点归纳

news2024/12/23 17:05:14

LVS(Linux Virtual Server)是 Linux 内核的一种负载均衡技术,主要用于实现高可用性和高性能的服务器集群。以下是一些关键知识点的归纳:

  1. 基本概念
    虚拟服务器:将多台物理服务器(真实服务器)抽象为一个虚拟服务器,用户访问虚拟服务器。
    负载均衡:根据预设算法将请求分配到后端真实服务器。

  2. 组成部分
    LVS 负载均衡器:负责接收客户端请求并将其转发到真实服务器。
    真实服务器:实际处理请求的服务器。
    调度算法:决定如何将请求分配给真实服务器的策略。

  3. 调度算法
    轮询(Round Robin):依次将请求分配给每台服务器。
    加权轮询(Weighted Round Robin):根据服务器的权重进行请求分配。
    最少连接(Least Connections):将请求分配给当前连接数最少的服务器。
    加权最少连接(Weighted Least Connections):结合权重和连接数进行请求分配。

  4. 工作模式

NAT(Network Address Translation)模式:负载均衡器通过修改数据包的源地址和目标地址实现转发。
图示:
在这里插入图片描述

流程:
1 客户端发起请求,访问的是可供客户端通信的vip
2 lvs负载均衡服务器首先接收这个请求
3 lvs负载均衡器进行地址转换,保留客户端源ip(CIP),将请求的VIP替换为真实的后端物理服务器地址(RIP)
4 负载均衡器将修改后的请求转发到真实服务器。
5 真实服务器处理请求并将响应返回给负载均衡器.
6 负载均衡器再将响应的源地址(真实服务器的 IP,RIP)替换为虚拟服务器的 IP(VIP),然后发送回客户端。

特点
透明性:客户端并不需要知道真实服务器的存在,只需与虚拟服务器进行通信。
支持多种协议:NAT 模式支持多种网络协议,包括 TCP、UDP 和 ICMP。
简单配置:相对 DR 模式,NAT 模式的配置较为简单,适合对后端真实服务器进行统一管理。

优点
灵活性:可以灵活配置和管理真实服务器。
负载均衡功能:能有效地将流量分配到后端多个服务器,提升系统的处理能力。

缺点
性能开销:由于负载均衡器需要对数据包进行源和目标地址的转换,可能会导致一定的性能损失。
带宽限制:所有数据包都要经过负载均衡器,可能成为网络瓶颈,尤其在高流量情况下。
请求/响应延迟:由于需要经过负载均衡器,可能会增加请求和响应的延迟

配置示例
使用 ipvsadm 配置 NAT 模式的基本示例:
# 创建虚拟服务器
ipvsadm -A -t <virtual_server_ip>:<port> -s rr
# 添加真实服务器
ipvsadm -a -t <virtual_server_ip>:<port> -r <real_server_ip>:<port> -m
-A:添加虚拟服务。
-a:添加真实服务器。
-s:设置调度算法(如轮询)。
-m:指定 NAT 模式。

DR(Direct Routing)模式:负载均衡器仅修改数据包的目标地址,真实服务器直接响应请求。
在这里插入图片描述
在这种模式下,负载均衡器(LVS)只修改请求的目标地址,而不改变源地址,真实服务器直接响应客户端的请求。
关键点:
同一网络段:负载均衡器和真实服务器必须在同一个网络段,以便能够直接通信和处理请求。
直接响应:真实服务器直接向客户端发送响应,减少了网络延迟和负担。
性能优势:通过直接通信,DR 模式能够显著提高性能,特别是在高流量的场景下。

1 客户端请求:客户端向虚拟服务器的 IP(VIP)发送请求,源 IP 是客户端的 IP,目标 IP 是 VIP。
2 负载均衡器接收请求:
  LVS 负载均衡器接收请求,目标地址被替换为一台真实服务器的 IP,源地址保持为客户端的 IP。
3 请求转发:负载均衡器将修改后的请求直接转发到真实服务器。
4 真实服务器处理:真实服务器看到请求的目标 IP 是自己的 IP,处理请求后将响应直接发送给客户端。
5 ARP 解析:负载均衡器对 VIP 的 ARP 请求做出响应,确保网络中其他设备知道 VIP 的 MAC 地址。


配置示例
lvs负载均衡服务器和后端真实服务器配置相同的虚拟ip地址(VIP)
lvs负载均衡服务器配置:
	1.添加vip 
	  sudo ip addr add <virtual_server_ip>/<netmask> dev <interface>
	  sudo ip addr add 192.168.1.100/24 dev eth0

	2.在 DR 模式下,如果负载均衡器和真实服务器在同一子网,通常不需要额外配置路由。
	  但如果它们不在同一网络段,就需要进行路由配置
	  sudo route add -host 192.168.0.123 dev ens32
	  
	3.设置路由转发 vim /etc/sysctl.conf
	  net.ipv4.ip_forward = 1
	  net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.ens32.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
    4.利用ipvsadm设置负载均衡条目规则
      sudo ipvsadm -A -t <virtual_server_ip>:<port> -s <scheduler>
      sudo ipvsadm -a -t <virtual_server_ip>:<port> -r <real_server_ip>:<port> -g
      示例:
      sudo ipvsadm -A -t 192.168.0.123:80 -s rr
	  sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.101:80 -g
      sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.102:80 -g
      设置权重
      sudo ipvsadm -a -t 192.168.0.123:80 -r 192.168.0.101:80 -g -w <weight>
 	  查看配置
	  sudo ipvsadm -L -n
	  保存配置(可选)
	  sudo ipvsadm-save > /etc/ipvsadm.rules

后端真实服务器配置:
	 1.安装web  yum -y  install nginx
	 2.在 lo(本地回环)接口上配置 VIP(虚拟 IP)32位
	    ifconfig lo:0 192.168.0.123/32
	    ip addr show dev lo	  
	 3.调整内核参数
	   echo 1 | sudo tee /proc/sys/net/ipv4/conf/all/arp_ignore
       echo 2 | sudo tee /proc/sys/net/ipv4/conf/all/arp_announce
     4.测试查看
       ipvsadm -Lnc

优势:
高性能:
DR 模式能够直接将流量转发到真实服务器,减少了负载均衡器的负担,因此性能相对较高,适合处理大量的并发连接。
客户端 IP 可见:
真实服务器能够看到客户端的原始 IP 地址,这对于日志记录、访问控制和分析非常重要。
简化配置:
相比于其他模式(如 FULL-NAT),DR 模式的网络配置相对简单,通常只需要在负载均衡器和真实服务器上进行基础的网络设置。
支持多种协议:
DR 模式可以支持多种协议(如 TCP 和 UDP),灵活性较强。
缺点:
ARP 配置复杂:
需要正确配置 ARP,确保负载均衡器和真实服务器能够正确响应 ARP 请求,这可能会增加网络配置的复杂性。
需要在同一子网内:
真实服务器必须在与负载均衡器相同的子网内,这限制了网络的灵活性。
网络依赖性:
由于 DR 模式依赖于 ARP,因此在某些网络环境下可能会遇到问题,比如跨越多个子网时,可能需要额外的路由配置。
可扩展性问题:
当真实服务器数量增加时,可能需要调整网络配置,确保所有服务器的 ARP 响应正常工作。

TUN(Tunneling)模式:负载均衡器将请求通过隧道转发到真实服务器,适用于不同网络之间的负载均衡。
在这里插入图片描述
FULL-NAT模式

  1. 应用场景
    大型网站的流量分担。
    分布式服务架构中的请求路由。
    提高系统的可用性和扩展性

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

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

相关文章

论文速读 - Cleaner Pretraining Corpus Curation with Neural Web Scraping

这是论文 Cleaner Pretraining Corpus Curation with Neural Web Scraping 的速读笔记&#xff0c;同时简要分析这篇论文作者的实现代码. 论文的主要工作是提出了基于神经网络的高效crawler. 这里先澄清scraper和crawler的区别&#xff0c;一图胜千言. Abstract The web conta…

openpnp - bug - 散料飞达至少定义2个物料

文章目录 openpnp - bug - 散料飞达至少定义2个物料笔记END openpnp - bug - 散料飞达至少定义2个物料 笔记 散料飞达上定义的物料个数用完了&#xff0c;现在只需要一个料就可以。 用顶部相机去找编带上是否还有一个单独的料&#xff0c;找到了。 定义散料飞达的料为1个&…

springboot使用attachment方式下载文件损坏问题解决

文章目录 场景解决方式全部代码 场景 之前使用springboot下载文件一直正常&#xff0c;今天新对接一个接口出现文件破损&#xff0c;无法下载。 之前的代码: Overridepublic ResponseEntity<ByteArrayResource> resultExcel(ExcelResultDTO excelResultDTO) {log.info(…

CentOS7系统内核升级

1. 安装新内核 采用离线方式升级 去到下面网站中下载rpm安装包 https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/下载 wget https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.278-1.el7.elrepo.x86_64…

探寻闲鱼libsgmain加解密算法(4) ——JNI入口跳转

关注我的人都知道我一直在学习阿里的加密和算法&#xff0c;除了研究逆向问题&#xff0c;还会把学来的阿里技术用在自己的应用上。 为什么&#xff1f;因为学习大厂的应用&#xff0c;是进步最快的方法。而大厂在安全和加密方面的技术&#xff0c;个人觉得阿里做的是最好的。 …

Maven项目管理工具-初始+环境配置

1. Maven的概念 1.1. 什么是Maven Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建&#xff0c;依赖管理和项目信息管理。 理想的项目构建&#xff1a;高度自动化&#xff0c;跨平台&#xff0c;可重用的组件&#xff0c;标准化的流程 maven能够自动下载依…

Maven 不同环境灵活构建

需求: 使用 Maven根据不同的构建环境&#xff08;如开发、测试、生产&#xff09;来定义不同的配置&#xff0c;实现灵活的构建管理。 需要Demo项目的可以参考&#xff1a;我的demo项目 一、项目分层 一般的初创项目不会有特别多的配置文件&#xff0c;所以使用 spring.profile…

Android调用系统相机录像并设置参数

最近要做一个 Android上的录像功能&#xff0c;由于之前做拍照功能完全是用自定义方式&#xff0c;太麻烦。故这次决定直接调用系统相机来录像。 一、添加权限 首先&#xff0c;添加必要的权限 <!-- 授予该程序使用摄像头的权限 --><uses-permission android:name&q…

K8s中TSL证书如何续期

TSL是什么 K8s中的作用是什么&#xff1f; 在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;TSL 指的是 Transport Layer Security&#xff0c;也就是传输层安全协议。它是用来保护在网络上传输的数据的安全性和隐私性。 TSL 在 Kubernetes 中的作用包括&#xff1a;…

B+树(B树的改进)

目录 一、什么是B树&#xff1f; 二、B树的性质 1.B树被广泛作为数据库索引的索引结构 2.m个分支的结点有m个元素 3.每个元素对应子结点最大值 4.多级索引结构 5.叶子结点层包含所有元素 三、B树和B树的区别 四、B树的查找 1.顺序查找 2.随机查找 3.范围查找 一、什…

JVM机制

文章目录 JVM 简介JVM内存划分堆&#xff08;线程共享&#xff09;Java虚拟机栈&#xff08;线程私有&#xff09;本地方法栈&#xff08;线程私有&#xff09;程序计数器&#xff08;线程私有&#xff09;方法区&#xff08;线程共享&#xff09; JVM类加载机制类加载过程双亲…

校园表白墙源码修复版

此校园表白墙源码基于thinkphp&#xff0c;因为时代久远有不少bug&#xff0c;经本人修复已去除大部分bug&#xff0c;添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…

群控系统服务端开发模式-应用开发-业务架构逻辑开发准备工作

安装与仓库已经调整完毕&#xff0c;现在开发业务架构逻辑&#xff0c;其次再开发功能逻辑。业务架构逻辑开发与功能逻辑开发不是一回事&#xff0c;一定要明白。业务架构指的是做某一件事或是某一种类型的事的逻辑&#xff0c;在互联网web应用中通常指一套系统的外在逻辑&…

js 的宏任务和微任务

宏任务 (macro-task) 与微任务 (micro-task) 在 JavaScript 中&#xff0c;宏任务&#xff08;macro-task&#xff09;和微任务&#xff08;micro-task&#xff09;是任务队列&#xff08;task queue&#xff09;中两个不同的任务类型&#xff0c;它们是 JavaScript 异步编程机…

DBeaver查看已保存连接的密码

打开Dbeaver窗口菜单-首选项-工作空间&#xff0c;找到工作空间路径 在文件管理器中打开工作空间路径\General.dbeaver&#xff0c;找到credentials-config.json。 在Linux下&#xff0c;使用如下命令对credentials-config.json文件进行解密 openssl aes-128-cbc -d -K babb4…

13 实战:使用Python和Pygame实现视频运动估计播放器

首先看运行效果: 在多媒体处理领域,视频的运动估计是一个重要的课题。在本文中,我们将详细介绍如何使用Python结合Pygame、OpenCV等库,实现一个支持运动估计的视频播放器。本项目旨在展示如何在Python中处理视频帧,实现块匹配算法进行运动估计,并将结果以可视化的方式呈现…

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的顺序消费?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 分布式&#xff08;不是单机&#xff09;的情况下&#xff0c;如何保证消息的…

TypeScript基础简介

TypeScript是Javascript的一个超集。 TypeScript在原有的基础之上又添加了编译器类型检查的功能&#xff0c;意味着如果使用ts进行开发&#xff0c;会对变量的类型进行较为严格的验证&#xff0c;防止程序员写出可能出错的代码&#xff0c;规范变成习惯&#xff0c;适合大项目开…

2024年MathorCup妈杯大数据竞赛选题人数发布

经过24个小时&#xff0c;各个平台的相关选题投票、相关文章阅读量等各项数据进行统计&#xff0c;利用之前的评估办法&#xff08;详见注释&#xff09;。在开赛后24小时&#xff0c;我们基本确定各个赛题选题人数&#xff0c;以帮助大家更好地分析赛题局势。 题目人数A46B72 …

【Vulnhub靶场】DC-4

DC-4靶场下载地址https://www.five86.com/downloads/DC-4.zip 本机IP&#xff1a;192.168.118.128 靶机IP&#xff1a;192.168.118.0/24 信息收集 扫描主机存活&#xff0c;扫描端口&#xff0c;扫描服务 第一步扫描出主机ip为192.168.118.141 nmap -sP 192.168.118.0/24 nm…