首页 > 系统相关 >LVS(Linux Virtual Server)备忘录

LVS(Linux Virtual Server)备忘录

时间:2024-12-26 16:41:23浏览次数:3  
标签:LVS IP Virtual Server VIP 模式 ip realserver

(241226)

基础内容

LVS 是 Linux Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:

负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器【多台LB IP】上执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】

服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS

共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相同的服务

DR(Direct Routing)

image

工作的基本原理:
client发送一个pv请求给VIP;VIP 收到这请求后会跟LVS设置的LB算法选择一个LB比较合理的realserver,然后把此请求的package 的MAC地址修改为realserver的MAC地址;

通信的Package有六个主要的字段:src mac、dst mac、src ip、src prot、dst ip、dst ip;个包里面的dst mac是LVS VIP的网卡MAC,在TCP三次握手完成时就只知道dsp ip和dsp mac了

DR模式会把packet里面的dst mac改成realserver的MAC地址;然后VIP会把这个包广播到当前的这个LAN里面;所以,要提前保证VIP 和所有的realserver在同一个网段,也就是在用过LAN里面。

同一个网段:用子网掩码来实现的,我们知道我们的网络中有局域网,一个局域网有很多台机器,这些LAN里面的所有机器都公用一个外网IP;我们是怎样界定这个LAN的呢?用的就是网段号;IP只是是32位二进制数表示,这32位分为:网络位 + 主机位;表现在子网掩码是就是:网络位是1,主机位是0;这样网络位=IP按位与子网掩码;所以,我们在把realserver挂到LVS上前,需要确认DR模式,且IP在同一个网段内。

ARP协议会把这个包发送给真正的realserver【根据MAC找到机器】;

把这个src ip----->realserver的mac 地址建立一个hash表;这此次连接未断开前,同一个client发送的请求通过查询hash表,在次发送到这台realserver上面;

realserver 收到这个pachet后,首先判断dst ip是否是自己的IP地址;如果不是就丢掉包;如果是就处理这个包。所以,DR模式还要在所有的realserver 的机器上面绑定VIP的ip地址;

这样realserver发现package的dst自己能识别【绑定了2个IP】,会处理这个包,处理完后把package的src mac dst mac src ip dst ip 都修改后再通过ARP 发送给VIP,通过VIP 发送给client。realserver发送给VIP的package的格式;

realserver处理这个包后,会跟dst为client ip 直接发送给client ip;不经过lvs ;这样虽然效率比较高,但是有安全漏洞。

LVS DR模式的注意情况:
LVS的VIP和realserver 必须在同一个网段,不然广播后所有的包都会丢掉:提前确认LVS/硬件LB 是什么模式,是否需要在同一个网段

所有的realserver 都必须绑定VIP的IP地址,否则realserver收到package后发现dst不是自己的IP,所有包都会丢掉。

realserver处理完包后直接把package通过dst IP发送给 client ,不通过LVS/迎接IP了这样的LVS /VIP效率会更高一点。

NAT

image

和NAT网络协议一样

NAT 模式的注意事项:
NAT模式修改的是dst IP,直接走 switch 或pub 不需要修改MAC 所以,不需要VIP和realserver同在一个网段内。
NAT模式package in和package out 都需要经过LVS ;因此LVS的可能会成为一个系统瓶颈问题。

FULL NAT

FULL NAT在client请求VIP时,不仅替换了package的dst ip,还替换了package的 src ip;但VIP返回给client时也替换了src ip;

FULL NAT 模式的注意事项:
FULL NAT模式也不需要 LBIP 和realserver ip 在同一个网段;
full nat跟nat 相比的优点是:保证RS回包一定能够回到LVS;
full nat因为要更新sorce ip 所以性能正常比nat 模式下降 10%。

TUNNEL

image
IP TUNNEL 模式的注意:
TUNNEL模式必须在所有的realserver 机器上面绑定VIP的IP地址;
TUNNEL模式的vip ------>realserver 的包通信通过TUNNEL 模式,不管是内网和外网都能通信,所以不需要lvs vip跟realserver 在同一个网段内;
TUNNEL模式 realserver会把packet 直接发给client 不会给lvs了;
TUNNEL模式 由于公网路由选路没有直接路由网络问题较为复杂,出现问题排查时间较长。

LVS DR、NAT、FULL NAT、IP TUNNEL 模式的区别:

  • 是否需要lvs vip跟realserver 在同一个网段:
    DR 模式因为只修改package的 MAC地址通过ARP广播的形势找到realserver,所以 要求LVS 的VIP 和realserver的IP 必须在同一个网段内,也就是在挂载VIP 时先确认LVS的工作模式,如果是DR模式需要先确认这个IP 只是否能挂在这个LVS下面。
    其他模式因为都会修改DST ip为 realserver的IP地址,所以不需要在同一个网段内。

  • 是否需要在realserver 绑定LVS vip 的IP 地址:
    realserver 收到package后会判断dst ip 是否是自己的ip,如果不是就直接丢掉包;因为DR模式dst 没有修改还是LVS的VIP;所以需要在realserver上面绑定VIP;IP TUNNEL 模式只是对package重新包装一层,realserver解析后的IP包的DST 仍然是 LVS的VIP ;也需要在realserver上面绑定VIP;其他的都不需要。

  • 四种模式的性能比较:
    因为DR模式 TP TUNELL 模式都是在package in 时经过LVS ;在package out是直接返回给client;所以二者的性能比NAT 模式高;但IP TUNNEL 因为是TUNNEL 模式比较复杂,其性能不如DR模式;FULL NAT 模式因为不仅要更换 DST IP 还更换 SOURCE IP 所以性能比NAT下降10%。

所以,4中模式的性能如下:DR --> IP TUNNEL --->NAT ----->FULL NAT

标签:LVS,IP,Virtual,Server,VIP,模式,ip,realserver
From: https://www.cnblogs.com/mugetsukun/p/18632844

相关文章

  • C5GAME 游戏饰品交易平台借助 RocketMQ Serverless 保障千万级玩家流畅体验
    作者:邹星宇、刘尧C5GAME:安全便捷,国内领先的游戏饰品交易平台C5GAME游戏饰品交易平台(www.c5game.com)是国内领先的STEAM游戏饰品交易的服务平台,专注于CS:GO以及DOTA2等热门游戏装备C2C中介交易。自网站上线以来,C5GAME凭借其安全便捷的交易和流畅友好的体验,迅速在玩家......
  • Go 语言实现,将 SQL Server 中每个表的大小信息传输到 Prometheus
    为了用Go语言编写一个程序,将SQLServer中每个表的大小信息传输到Prometheus,你可以遵循以下步骤。这个过程包括连接到SQLServer、执行查询获取表大小数据,并使用Prometheus客户端库将这些数据暴露给Prometheus抓取。步骤1:设置项目环境首先,确保你已经安装了Go和必要......
  • RocketMQ5.0 NameServer启动流程
    1.NameServer启动org.apache.rocketmq.namesrv.NamesrvStartup 的Main函数是启动的入口。启动分成了两块:NameServer启动Controller启动(5.0为自动自主切换新增的一个模块,内嵌NameServer的时候会启动)本篇文章只分析NameServer的启动,Controller的启动在后续的文章......
  • 源码编译geoserver(idea)
    官方教程:https://docs.geoserver.org/main/en/developer/quickstart/intellij.html 从git存储库中检出源代码:gitclonehttps://github.com/geoserver/geoserver.gitgeoserver列出可用的分支:%gitbranch2.21.x2.22.x*main选择main最新动态:%gi......
  • Oray Virtual Game Controller 驱动程序的主要目的是在没有物理游戏控制器的情况下,通
    OrayVirtualGameController是由OrayTechnologies,Inc.开发的一个虚拟游戏控制器驱动程序。它的版本为1.0.0.0,并且该驱动程序的发布日期是2022年12月29日。OrayVirtualGameController驱动程序简介功能:虚拟游戏控制器 是一种虚拟设备,允许通过软件模拟游戏控制......
  • Data Virtualization - Data Federation
      SchemamappingAschemaisablueprintthatdefineshowdataisorganizedwithinadatabase.Datasourcesoftenhavedifferentschemas,meaningtheyorganizeandlabeltheirdatadifferently.Schemamappinginvolvesaligningtheseschemastocreatea......
  • windos server2022里的DFS详细配置
    1.在AppSrv上安装及配置DFS服务。2.目录设置在F:\DFSsharedir。3.配置DFS复制,使用DC1作为次要服务器,复制方式配置为交错拓扑。4.在F:\DFSsharedir文件夹内新建所有部门的文件夹。5.所有部门的用户之可以访问部门内的文件,不可以跨部门访问别的部门文件夹内容......
  • WSL2 ubuntu18.04 使用xfce4时Xlaunch黑屏问题以及解决,X server already running on d
    显示xfce4启动成功却没有画面显示在Ubuntu终端输入startxfce4启动X服务时,显示:/usr/bin/startxfce4:Xserveralreadyrunningondisplay10.255.255.254:0,且Xlaunch黑屏无输入。如图所示:分析原因:出现Xserveralreadyrunningondisplay10.255.255.254:0说明X服务......
  • Can't connect to local MySQL server through socket
    mysql-urootERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2)这是mysql登录时找不到套接字的问题。首先需要明白的是,Linux端的mysqlserver启动时会开启一个socket,Linux上的MySQL的客户端在不使用IP连接时mysqlserver时,默认......
  • 梳理你的思路(从OOP到架构设计)_设计模式Observer模式
    目录1、Observer模式2、范例:Android+Observer模式1、Observer模式定义对象间的1:N依赖关系,以便当一个主体对象(如A)的状态发生改变时,所有依赖于它的众多对象(如B,C,D…)都得到通知,然后可向主体对象(A)取得最新状态内容。如果Observer是个纯粹抽象类别(PureA......