LVS

news2024/11/23 12:47:00

一、 lvs简介

LVS:Linux Virtual Server ,负载调度器,内核集成,章文嵩,阿里的四层 SLB(Server LoadBalance) 是基
LVS+keepalived 实现
LVS 官网 : http://www.linuxvirtualserver.org/
LVS 相关术语
VS: Virtual Server ,负责调度
RS:RealServer ,负责真正提供服务 3.2

二、 lvs集群体系结构

工作原理:
VS 根据请求报文的目标 IP 和目标协议及端口将其调度转发至某 RS ,根据调度算法来挑选 RS
LVS 概念:
VS Virtual Server
RS Real Server
CIP Client IP
VIP: Virtual serve IP VS 外网的 IP
DIP: Director IP VS 内网的 IP
RIP: Real server IP
访问流程: CIP <--> VIP == DIP <--> RIP

三、lvs集群的类型

lvs-nat:修改请求报文的目标 IP, 多目标 IP DNAT
lvs-dr :操纵封装新的 MAC 地址
lvs-tun:在原请求 IP 报文之外新加一个 IP 首部
lvs-fullnat :修改请求报文的源和目标 IP

3.1nat模式

lvs-nat:
  本质是多目标IP的 DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS RIP
PORT 实现转发
  RIP DIP 应在同一个 IP 网络,且应使用私网地址 ;RS 的网关要指向 DIP
  请求报文和响应报文都必须经由 Director 转发, Director 易于成为系统瓶颈
  支持端口映射,可修改请求报文的目标 PORT
  VS 必须是 Linux 系统, RS 可以是任意 OS 系统

3.2.nat模式数据逻辑

1. 客户端发送访问请求,请求数据包中含有请求来源( cip ),访问目标地址( VIP )访问目标端口
9000port
2.VS 服务器接收到访问请求做 DNAT 把请求数据包中的目的地由 VIP 换成 RS RIP 和相应端口
3.RS1 相应请求,发送响应数据包,包中的相应保温为数据来源( RIP1 )响应目标( CIP )相应端口
9000port
4.VS 服务器接收到响应数据包,改变包中的数据来源( RIP1-->VIP , 响应目标端口( 9000-->80
5.VS 服务器把修改过报文的响应数据包回传给客户端
6.lvs NAT 模式接收和返回客户端数据包时都要经过 lvs 的调度机,所以 lvs 的调度机容易阻塞

 

客户请求到达 vip 后进入 PREROUTING, 在没有 ipvs 的时候因该进入本机 INPUT, IPVS 存在后访问请求在通
PREROUTING 后被 ipvs 结果并作 nat 转发
因为 ipvs 的作用点是在 PREROUTING INPUT 链之间,所以如果在 prerouting 中设定规则会干扰 ipvs 的工
作。所以在做 lvs 时要把 iptables 的火墙策略全清理掉。

 3.3.DR模式 

DR 模式中, RS 接收到访问请求后不需要回传给 VS 调度器,直接把回传数据发送给 client ,所以 RS vs上都要有vip

3.3.1DR模式数据传输过程

 

1. 客户端发送数据帧给 vs 调度主机帧中内容为客户端 IP+ 客户端的 MAC+VIP+VIP MAC
2.VS 调度主机接收到数据帧后把帧中的 VIP MAC 该为 RS1 MAC ,此时帧中的数据为客户端 IP+ 客户端
MAC+VIP+RS1 MAC
3.RS1 得到 2 中的数据包做出响应回传数据包,数据包中的内容为 VIP+RS1 MAC+ 客户端 IP+ 客户端 IP 的MAC

3.3.2.DR模式的特点 

1.Director 和各 RS 都配置有 VIP
2. 确保前端路由器将目标 IP VIP 的请求报文发往 Director
3. 在前端网关做静态绑定 VIP Director MAC 地址

3.4LVS工作模式总结

lvs-nat lvs-fullnat :请求和响应报文都经由 Director
lvs-nat RIP 的网关要指向 DIP
lvs-fullnat RIP DIP 未必在同一 IP 网络,但要能通信
lvs-dr lvs-tun :请求报文要经由 Director ,但响应报文由 RS 直接发往 Client
lvs-dr :通过封装新的 MAC 首部实现,通过 MAC 网络转发
lvs-tun :通过在原 IP 报文外封装新 IP 头实现转发,支持远距离通信

3.5.lvs的调度算法 

3.5.1.lvs调度算法类型

ipvs scheduler :根据其调度时是否考虑各 RS 当前的负载状态被分为两种:静态方法和动态方法
静态方法:仅根据算法本身进行调度,不考虑 RS 的负载情况
动态方法:主要根据每 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 将被调度

3.5.2.lvs静态调度算法

1 RR roundrobin 轮询 RS 分别被调度,当 RS 配置有差别时不推荐
2 WRR Weighted RR ,加权轮询根据 RS 的配置进行加权调度,性能差的 RS 被调度的次数少
3 SH Source Hashing ,实现 session sticky ,源 IP 地址 hash ;将来自于同一个 IP 地址的请求始终发往
第一次挑中的 RS ,从而实现会话绑定
4 DH Destination Hashing ;目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

3.5.2.lvs动态调度算法

主要根据 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 会被调度
1 LC least connections (最少链接发)
适用于长连接应用 Overhead (负载值) =activeconns (活动链接数) x 256+inactiveconns (非活动链接数)
2 WLC Weighted LC (权重最少链接)
默认调度方法 Overhead=(activeconns x 256+inactiveconns)/weight
3 SED :Shortest Expection Delay, 初始连接高权重优先 Overhead=(activeconns+1+inactiveconns) x 256/weight 但是,当 node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
4 NQ Never Queue ,第一轮均匀分配,后续 SED
5 LBLC Locality-Based LC ,动态的 DH 算法,使用场景:根据负载状态实现正向代理
6 LBLCR LBLC with Replication ,带复制功能的 LBLC ,解决 LBLC 负载不均衡问题,从负载重的复制
到负载轻的 RS

.lvs部署命令介绍 

4.1.lvs软件相关信息

程序包: ipvsadm
Unit File: ipvsadm.service
主程序: /usr/sbin/ipvsadm
规则保存工具: /usr/sbin/ipvsadm-save
规则重载工具: /usr/sbin/ipvsadm-restore
配置文件: /etc/sysconfig/ipvsadm-config
ipvs 调度规则文件: /etc/sysconfig/ipvsadm

4.2.ipvsadm命令

核心功能 :
   集群服务管理 : 增、删、改
  集群服务的 RS 管理 : 增、删、改
  查看
命令参数
管理集群服务
ipvsadm-A|E-t tcp |u udp |f (防护墙标签) \
service-address( 集群地址 )\
[-sscheduler( 调度算法 )]\
[-p[timeout]]\
[-Mnetmask]\
[--pepersistence_engine]\
[-bsched-flags] 
ipvsadm-D-t|u|fservice-address 删除
ipvsadm–C 清空
ipvsadm–R 重载
ipvsadm-S[-n] 保存
管理集群中的 realserver
ipvsadm-a|e-t|u|fservice-address-rserver-address[-g|-i|-m]( 工作模式 )[-w
weight]( 权重 )
ipvsadm-d-t|u|fservice-address-rserver-address 删除 RS
ipvsadm-Z[-t|u|fservice-address]清楚计数器

 4.3.lvs集群中的增删改

1. 管理集群服务中的增删改
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
-A # 添加
-E # 修改
-t  #tcp 服务
-u #udp 服务
-s # 指定调度算法,默认为 WLC
-p # 设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一 Realserver
-f  #firewall mask 火墙标记,是一个数字
2. 管理集群中 RealServer 的曾增删改

.LVS部署 

5.1部署DR模式

5.1.1.实验环境

主机ipvip角色
R3192.168.10.200null测试
R4

192.168.10.100

192.168.6.100

null路由器
R8192.168.6.50 GATEWAY:192.168.6.100lo:192.168.6.200调度器
R9192.168.6.102lo:192.168.6.200web1
R10192.168.6.101lo:192.168.6.200web2

 

 

 

 

 

 

 

配置实验环境

#在客户端主机中为nat模式网卡 

在路由主机中设定双网卡, ens160 nat 网卡, ens224 为仅主机网卡
ens160:
ens224:
对于 dr 调度器设定网卡为仅主机模式
对于 RS1 的设定网卡为仅主机模式
对于 RS2 的设定网卡为仅主机模式

5.1.2解决vip响应问题

DR 模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:
(1) 在前端网关做静态绑定
(2) 在各 RS 使用 arptables
(3) 在各 RS 修改内核参数,来限制 arp 响应和通告的级别
限制响应级别 :arp_ignore
     0: 默认值,表示可使用本地任意接口上配置的任意地址进行响应
    1: 仅在请求的目标 IP 配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别 :arp_announce
    0: 默认值,把本机所有接口的所有信息向每个接口的网络进行通告
   1: 尽量避免将接口信息向非直接连接网络进行通告
   2: 必须避免将接口信息向非本网络进行通告

5.1.3.配置详情

配置要点
1.Director 服务器采用双 IP 桥接网络,一个是 VPP ,一个 DIP
2.Web 服务器采用和 DIP 相同的网段和 Director 连接
3. 每个 Web 服务器配置 VIP
4. 每个 web 服务器可以出外网
配置内容如下:
lvs rs 中设定 vip
  ip addr add dev lo 192.168.6.100/32
RS1 RS2 中解决响应问题
lvs 中配置策略

测试效果:

 

5.2部署NAT模式集群

1.Director 服务器采用双网卡,一个是桥接网卡连接外网,一个是仅主机网卡与后端 Web 服务器相连
2.Web 服务器采用仅主机网卡与 director 相连
3.Web 服务器网关指向 192.168.0.100
4. 后端 web 服务器不需要连接外网
5.2.1. 实验环境
主机ipvip角色
R3192.168.10.200null测试
R4

192.168.6.100  

192.168.10.100vs
R9192.168.6.102 GATEWAY:192.168.6.100nullweb1
R10192.168.6.101 GATEWAY:192.168.6.100nullweb2

5.2.2.配置命令

1. node1 中启用内核路由功能
2. 在R4 中添加调度策略
3.测试

六、总结

  1. LVS - NAT(Network Address Translation)模式特点

    • 工作原理
      • 在 NAT 模式下,客户端将请求发送到负载均衡器的公网 IP 地址。负载均衡器收到请求后,会改变请求数据包的目标 IP 地址(将其改为后端真实服务器的 IP 地址)和端口(如果需要的话),然后将数据包转发给后端真实服务器。真实服务器处理完请求后,将响应数据包发送回负载均衡器,负载均衡器再将响应数据包的源 IP 地址和端口转换回自己的公网 IP 地址和相应端口,最后将响应发送给客户端。
    • 优点
      • 安全性较高:真实服务器的 IP 地址可以隐藏在负载均衡器之后,外部网络无法直接访问真实服务器,对真实服务器起到一定的保护作用。例如,在一些对服务器安全要求较高的场景中,如金融机构的内部服务系统,通过 NAT 模式可以减少真实服务器被直接攻击的风险。
      • 对服务器的要求较低:真实服务器可以使用私有 IP 地址,无需配置公网 IP,这样可以节省公网 IP 资源,并且在服务器的网络配置上相对简单。
    • 缺点
      • 性能瓶颈可能出现在负载均衡器上:因为所有的请求和响应数据包都需要经过负载均衡器进行地址转换,当请求流量较大时,负载均衡器的处理能力可能会成为系统的性能瓶颈。特别是在处理一些高并发的大数据量传输场景时,如视频流服务,可能会导致响应延迟增加。
      • 不支持某些应用层协议:一些应用层协议可能会在 NAT 过程中出现问题,因为这些协议可能会在数据包中嵌入 IP 地址或端口信息,经过 NAT 转换后,这些信息可能会变得不准确,导致协议无法正常工作。
  2. LVS - DR(Direct Routing)模式特点

    • 工作原理
      • DR 模式是通过改写请求报文的 MAC 地址,将请求直接发送到真实服务器。客户端的请求数据包到达负载均衡器后,负载均衡器会将数据包中的目标 MAC 地址修改为选定的真实服务器的 MAC 地址,然后将数据包直接发送给真实服务器。真实服务器收到数据包后,由于其网络接口配置了虚拟 IP(VIP),它会认为这个请求是发送给自己的,然后进行处理。真实服务器处理完请求后,直接将响应数据包发送回客户端,不需要经过负载均衡器。
    • 优点
      • 高性能:由于响应数据包不需要经过负载均衡器,大大减轻了负载均衡器的负担,能够处理更高的并发请求。在处理大量的 Web 访问请求时,DR 模式可以快速地将请求分发到真实服务器,提高系统的整体响应速度。
      • 支持所有的网络应用:因为没有像 NAT 模式那样对 IP 地址和端口进行复杂的转换,所以 DR 模式对各种应用层协议都有很好的支持,几乎不会出现因为协议特性导致的问题。
    • 缺点
      • 配置相对复杂:DR 模式要求真实服务器和负载均衡器在同一个物理网段,并且真实服务器需要配置虚拟 IP 地址,还需要对服务器的网络接口进行特殊的配置(如设置 ARP 抑制等),以确保正确接收和处理请求。这在一定程度上增加了系统的配置和维护难度。
      • 安全性相对较弱:与 NAT 模式相比,DR 模式下真实服务器的 IP 地址是暴露在网络中的,可能会受到直接的网络攻击。不过可以通过其他网络安全措施(如防火墙等)来加强防护。
  3. LVS - NAT 和 DR 模式的不同点

    • 数据包流向不同
      • NAT 模式下,请求和响应数据包都要经过负载均衡器进行地址转换。而 DR 模式下,请求数据包经过负载均衡器修改 MAC 地址后直接发送到真实服务器,响应数据包直接从真实服务器发送回客户端,不经过负载均衡器。
    • 性能表现不同
      • DR 模式的性能通常优于 NAT 模式。因为 NAT 模式下负载均衡器承担了大量的地址转换工作,在高并发场景下容易出现性能瓶颈;而 DR 模式减少了负载均衡器的负担,能更好地应对高并发请求。
    • 服务器配置不同
      • NAT 模式下,真实服务器可以使用私有 IP 地址,配置相对简单。DR 模式下,真实服务器需要和负载均衡器在同一网段,并且要配置虚拟 IP 地址,还需要进行一些特殊的网络配置,相对复杂。
    • 安全性不同
      • NAT 模式安全性较高,能隐藏真实服务器 IP 地址。DR 模式安全性相对较弱,真实服务器 IP 地址暴露,但可以通过其他安全措施来弥补。

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

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

相关文章

使用 Elastic AI Assistant for Search 和 Azure OpenAI 实现从 0 到 60 的转变

作者&#xff1a;来自 Elastic Greg Crist Elasticsearch 推出了一项新功能&#xff1a;Elastic AI Assistant for Search。你可以将其视为 Elasticsearch 和 Kibana 开发人员的内置指南&#xff0c;旨在回答问题、引导你了解功能并让你的生活更轻松。在 Microsoft AI Services…

掺铒光纤激光器

一、光纤激光器的特点 实现灵活的激光光源&#xff08;窄线宽、可调谐、多波长、超短光脉冲源&#xff09;易获得高功率、高的光脉冲能量激光波长与光纤通信传输窗口相匹配采用激光器泵浦形式&#xff08;半导体激光器泵浦&#xff09;热稳定性、价格低廉、易小型化 二、放大…

AP+AC组网——STA接入

扫描 主动扫描&#xff1a;STA发送Probe Request帧&#xff0c;AP收到回复Probe Response 可以带着SSID扫描寻找指定WIFI&#xff0c;也可以带着空SSID扫描进入周围可用WLAN 被动扫描&#xff1a; 客户端通过侦听AP定期发送的Beacon帧&#xff08;100TUs&#xff0c;1TU1024…

基于 ESP-AT (v3.x)固件通过 AT+SYSMFG 指令更新证书设置

AT 固件里的证书文件通过 mfg_nvs.csv 文件管理&#xff0c;所有证书都是写入 mfg_nvs 分区。可以先查看 mfg_nvs.csv 文件的内容来确定有哪些证书文件被管理&#xff0c;如下&#xff1a; 通过 AT 指令更新证书的方式如下&#xff1a; // 获取证书类型 ATSYSMFG&#xff1f;/…

投资策略规划最优决策分析

目录 一、投资策略规划问题详细 二、存在最优投资策略&#xff1a;每年都将所有钱投入到单一投资产品中 &#xff08;一&#xff09;状态转移方程 &#xff08;二&#xff09;初始条件与最优策略 &#xff08;三&#xff09;证明最优策略总是将所有钱投入到单一投资产品中…

android 性能分析工具(03)Android Studio Profiler及常见性能图表解读

说明&#xff1a;主要解读Android Studio Profiler 和 常见性能图表。 Android Studio的Profiler工具是一套功能强大的性能分析工具集&#xff0c;它可以帮助开发者实时监控和分析应用的性能&#xff0c;包括CPU使用率、内存使用、网络活动和能耗等多个方面。以下是对Android …

(UI自动化测试)web自动化测试

web自动化测试 UI自动化测试介绍 自动化测试理论&#xff1a; 图片上的文字等等不能做测试&#xff0c;只能发现固定的bug 工具选择及介绍 浏览器驱动&#xff1a;找元素--核心&#xff1a;驱动&#xff08;操作元素&#xff09;--通过代码

Web3与智能合约:区块链技术下的数字信任体系

随着互联网的不断发展&#xff0c;Web3代表着我们迈入了一个去中心化、更加安全和智能的网络时代。作为Web3的核心组成部分&#xff0c;区块链技术为智能合约的出现和发展提供了强有力的基础。智能合约不仅仅是自动化的代码&#xff0c;它们正逐步成为重塑数字世界信任体系的关…

AUTOSAR_EXP_ARAComAPI的7章笔记(6)

☞返回总目录 相关总结&#xff1a;ara::com 与 AUTOSAR 元模型的关系总结 7.4 ara::com 与 AUTOSAR 元模型的关系 在本文档中&#xff0c;我们一直在不涉及具体的AP元模型&#xff08;其清单部分&#xff09;的情况下解释 ara::com API的思想和机制&#xff0c;AP元模型是正…

浦语提示词工程实践(LangGPT版,服务器上部署internlm2-chat-1_8b,踩坑很多才完成的详细教程,)

首先&#xff0c;在InternStudio平台上创建开发机。 创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo&#xff0c;依次表示JupyterLab、Terminal和Code Server&#xff0c;我们使用Terminal就行。&#xff08;JupyterLab可以直接看文件夹&#xff09;…

webgl threejs 云渲染(服务器渲染、后端渲染)解决方案

云渲染和流式传输共享三维模型场景 1、本地无需高端GPU设备即可提供三维项目渲染 云渲染和云流化媒体都可以让3D模型共享变得简单便捷。配备强大GPU的远程服务器早就可以处理密集的处理工作&#xff0c;而专有应用程序&#xff0c;用户也可以从任何个人设备查看全保真模型并与…

统信桌面操作系统V20专业版安装指南

1.概述 统信桌面操作系统安装器用于完成系统安装的任务&#xff0c;本手册会介绍统信UOS的安装环境、配置要求、安装方法&#xff0c;以及系统初始化设置&#xff0c;希望用户根据本文档可以快速高效的完成系统安装。 1.1安装配置要求 您安装系统前需了解安装统信桌面操作系…

16. 指针类型和步长概念问题

1. 项目场景&#xff1a; ➣ Jack Qiao对米粒说&#xff1a;“今天有道友遇到一个问题&#xff0c;举个栗子数组 arr[5] { 0 };道友发现&arr[0] 1与&arr 1打印出来的地址竟然不同。”米粒测试后果然是这样。 2. 问题描述 ☑ 举个栗子&#xff1a;数组 arr[5] { 0…

设计模式-创建型-抽象工厂模式

1.概念 工厂方法模式只能生产一个产品系列&#xff0c;抽象工厂可以生产多个产品系列 2.作用 多个具体产品组成一个产品族&#xff08;产品系列&#xff09;&#xff0c;一个具体工厂负责生产一个产品族 3.应用场景 系统所需产品间由依赖关系&#xff0c;可以划分为同一产…

20241121 android中树结构列表(使用recyclerView实现)

1、adapter-item的布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"wrap_content&…

Kubernetes的pod控制器

文章目录 一&#xff0c;什么是pod控制器二&#xff0c;pod控制器类型&#xff08;重点&#xff09;1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Job6.Cronjob 三&#xff0c;pod与控制器的关系1.Deployment2.SatefulSet2.1StatefulSet组成2.2headless的由来2.3有状态服…

网口输出的加速度传感器

一、功能概述 1.1 设备简介 本模块为了对电机、风机、水泵等旋转设备进行预测性运维而开发&#xff0c;只需一个模块&#xff0c; 就可以采集旋转设备的 3 路振动信号&#xff08;XYZ 轴&#xff09;和一路温度信号&#xff0c;防护等级 IP67 &#xff0c;能够 适应恶劣的工业…

RocketMQ: 部署结构与存储特点

RocketMQ 是什么 它是一个队列模型的消息中间件&#xff0c;具有高性能、高可靠、高实时、分布式特点 Producer、Consumer、队列都可以分布式Producer 向一些队列轮流发送消息 队列集合称为 TopicConsumer 如果做广播消费则一个 consumer 实例消费这个 Topic 对应的所有队列如果…

【Python系列】浅析 Python 中的字典更新与应用场景

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

正版Simsolid快速无网格划分工具软件

相信各位结构工程师、产品设计工程师、仿真分析师们对SimSolid都不陌生&#xff0c;Altair SimSolid 是一款革命性的仿真软件&#xff0c;旨在为结构分析提供快速而准确的解决方案。SimSolid的独特之处在于它可以直接在完整的设计几何体上进行复杂的仿真&#xff0c;无需传统的…