当前位置: 首页 > news >正文

你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解

目录

一、什么是LVS

二、LVS的核心思想

三、 LVS的优势

四、LVS的调度算法

 4.1. LVS的调度算法类型

4.2. LVS静态调度算法

4.3. LVS动态调度算法

 4.4.在4.15版本内核以后新增调度算法

 五、LVS软件相关信息

六、ipvsadm命令

七、 LVS的NAT模式实验详解

7.1实验环境

7.2实验要求

7.3实验步骤

1.环境搭建

2. Lvs中打开内核路由功能

3.webserver1和webserver2配置

4.webserver1和webserver2下载httpd模块并写页面内容

5. LVS中测试,保证可以正常访问后端两台真实服务器

 6. LVS中安装软件

7. LVS添加服务和算法规则(-s rr表示调度算法是:轮询算法)

8.客户机访问测试

7.4 nat模式数据逻辑

八、LVS的DR模式实验详解

8.1实验环境

8.2实验要求

8.3实验步骤

1.环境搭建

2.路由器开启内核路由功能

3.配置rs主机中使vip不对外响应(webserver1和webserver2)

4.在LVS主机中和rs主机中添加VIP

5.客户机测试

6.Wireshark抓包查看MAC地址变化

8.4 DR模式数据逻辑

九、LVS-火墙mark标记解决调度问题

9.1实验环境:

9.2实验要求:

9.3实验步骤

1.RS安装mod_ssl模块,让RS支持https

2.查看端口,确保端口都存在

3.LVS主机中为端口做标记

 4.客户端访问测试

十、LVS的TUN模式(不常用了解一下)

10.1转发方式

10.2 TUN模式数据传输过程

10.3 TUN详解

十一、LVS的fullnet模式(了解)

11.1 fullnet模式简介

11.2 fullnet模式详解

十二、LVS各种模式之间的对比


一、什么是LVS

LVS是Linux Virtual Server的简写,‌也就是Linux虚拟服务器,‌是一个虚拟的服务器集群系统。‌这个项目在1998年5月由章文嵩博士成立,‌是中国国内最早出现的自由软件项目之一。‌LVS实际上相当于基于IP地址的虚拟化应用,‌为基于IP地址和内容请求分发的负载均衡提出了高效的解决方法。‌现在,‌LVS已经是Linux内核标准的一部分。‌使用LVS可以达到的技术目标是:‌通过LVS达到的负载均衡技术和Linux操作系统实现一个高性能高可用的Linux服务器集群,‌具有良好的可靠性、‌可扩展性和可操作性,‌从而以低廉的成本实现最优的性能。‌LVS是一个实现负载均衡集群的开源软件项目,‌LVS架构从逻辑上可分为调度层、‌Server集群层和共享存储层。

LVS基于4层的负载均衡技术,‌它是Linux内核的一个模块。‌LVS提供了四种模式,‌包括lvs-nat、‌lvs-fullnat、‌lvs-dr和lvs-tun。‌这些模式各有特点,‌例如,‌lvs-nat与lvs-fullnat模式下,‌请求和响应报文都经由Director;‌而lvs-dr与lvs-tun模式下,‌请求报文要经由Director,‌但响应报文由RS直接发往Client。

总的来说,‌LVS是一种高效的负载均衡解决方案,‌通过调度层将请求分发到Server集群层中的多个服务器上,‌以提高系统的可用性和性能。‌它是通过修改Linux内核来实现的,‌具有成本低、‌性能高、‌可靠性好等优点。

二、LVS的核心思想

LVS的核心思想是实现负载均衡和容错性。‌

LVS(‌Linux Virtual Server)‌是一种高性能的服务器负载均衡解决方案,‌它通过在Linux内核中集成ip_vs模块来实现四层负载均衡。‌LVS的核心思想主要体现在以下几个方面:‌

  1.  

    负载均衡:‌LVS通过调度器(‌Director Server)‌将客户端的请求分发到后端真实服务器(‌Real Server)‌,‌从而实现负载均衡。‌这种分发基于预设的算法进行,‌确保请求被均匀分配到各个真实服务器上,‌以提高服务器的整体处理能力和资源利用率。‌

  2.  

    容错性:‌LVS支持动态添加或删除真实服务器,‌允许在不影响服务的情况下进行扩展或缩减服务能力。‌这种动态调整的能力使得系统具有很好的容错性,‌能够应对真实服务器的宕机、‌升级或弹性伸缩等变化。‌

  3.  

    透明性:‌对于客户端而言,‌LVS提供了一个虚拟的IP地址(‌VIP)‌,‌用户通过访问这个虚拟IP地址来访问服务,‌而不需要知道背后真实的服务器结构和数量。‌这种透明性使得LVS能够保护后端服务器的隐私和安全性。‌

  4.  

    高性能:‌LVS利用IP负载均衡技术,‌通过调度器直接处理网络层的请求,‌避免了应用层代理的额外开销,‌从而提高了数据传输的效率和性能。‌

综上所述,‌LVS的核心思想是通过负载均衡和容错性来提高服务器的整体性能和可用性,‌同时保持对用户透明的访问方式,‌保护后端服务器的安全和隐私。

三、 LVS的优势

LVS的优势主要包括高性能、‌稳定性、‌广泛的协议支持、‌低成本和配置简单。‌

  • 高性能:‌LVS运行在Linux内核空间,‌具有较低的延迟和较高的吞吐量,‌能够提供高性能的网络服务。‌
  • 稳定性:‌作为内核模块,‌LVS可以提供较高的稳定性,‌具有强大的抗负载能力,‌并且自身有完整的双机热备方案,‌如LVS+Keepalived,‌确保了服务的稳定运行。‌
  • 广泛的协议支持:‌LVS几乎可以对所有应用做负载均衡,‌包括http、‌数据库、‌在线聊天室等,‌工作在4层网络协议上,‌提供了广泛的协议支持。‌
  • 低成本:‌LVS只需一台服务器即可免费部署使用,‌性价比极高,‌相对于硬件负载均衡器的成本要低得多。‌
  • 配置简单:‌LVS的配置非常简单,‌仅需几行命令即可完成配置,‌也可写成脚本进行管理,‌大大减少了人为出错的几率。‌

此外,‌LVS还支持多种负载均衡算法,‌包括轮询、‌加权轮询、‌最小连接数等,‌以及支持TCP、‌UDP等多种传输层协议,‌使其能够根据业务场景灵活调配使用。‌这些优势使得LVS在高性能网络服务中成为一个受欢迎的选择。‌

四、LVS的调度算法

 4.1. LVS的调度算法类型

ipvs scheduler:根据其调度时是否考虑各RS当前的负载状态被分为两种:静态方法动态方法

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度

4.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,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商

4.3. 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

 4.4.在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布 在此FO算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载(未设置IP_VS_DEST_F OVERLOAD标志)的且权重最高的真实服务器,进行调度 当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD),那么vs调度 器就不会把链接调度到有过载标记的主机中。

  2.OVF(Overflow-connection)调度算法基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动 连接数量超过权重值,之后调度到下一个权重值最高的真实服务器,在此OVF算法中,遍历虚拟服务相关 联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件:

未过载(未设置IP_VS_DEST_F OVERLOAD标志)

真实服务器当前的活动连接数量小于其权重值 其权重值不为零

 五、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

六、ipvsadm命令

核心功能:

  • 集群服务管理:增、删、改
  • 集群服务的RS管理:增、删、改
  • 查看

部分命令展示:

命令描述示例
ipvsadm -A添加一个新的虚拟服务ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -E修改已存在的虚拟服务ipvsadm -E -t 192.168.1.100:80 -s wrr
ipvsadm -D删除虚拟服务ipvsadm -D -t 192.168.1.100:80
ipvsadm -a添加一个真实服务器到虚拟服务中ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200 -m
ipvsadm -e修改真实服务器的参数ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.200 -g -w 10
ipvsadm -d从虚拟服务中删除真实服务器ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.200
ipvsadm -L查看 IPVS 表ipvsadm -L -n
ipvsadm -C清空 IPVS 表ipvsadm -C
ipvsadm -S保存 IPVS 表到指定文件ipvsadm -S > /etc/sysconfig/ipvsadm
ipvsadm -R从指定文件恢复 IPVS 表ipvsadm -R < /etc/sysconfig/ipvsadm

如果想要了解更多的ipvsadm命令可以访问下面链接学习:
https://www.cnblogs.com/rushiyi/p/12425905.htmlicon-default.png?t=N7T8https://www.cnblogs.com/rushiyi/p/12425905.html

七、 LVS的NAT模式实验详解

edea30092b824c00a0699ff6985ea7ea.png

7.1实验环境

前提:因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工 作。所以在做lvs时要把iptables的火墙策略全清理掉。

1.使用母盘主机克隆四台红帽9机子。

2.两台作为真实服务器,一台作为LVS负载调度器,一台作为客户端。

3.LVS负载调度器两张网卡,一张NAT,一张仅主机;NAT作为VIP连接客户端,仅主机作为DIP连接两台服务器,作为两台服务器的网关;NAT网卡在:172.25.254.0/24网段,IP地址是172.25.254.100/24;仅主机在192.168.0.0/24网段,IP地址是192.168.0.100。

4.两台真实服务器一张网卡,模式为仅主机,网段是192.168.0.0/24;webserver1的IP地址是192.168.0.10/24;webserver2的IP地址是192.168.0.20/24。

5.客户端一张网卡,模式为NAT模式,网段是172.25.254.0/24,IP地址是:172.25.254.200。

7.2实验要求

要求从客户端访问LVS能做到负载均衡

第一次如果是webserver1响应的,第二次就是webserver2响应。

7.3实验步骤

1.环境搭建

LVS主机两张网卡,一张NAT模式,一张仅主机模式。NAT作为VIP连接客户端,仅主机作为DIP连接两台服务器,作为两台服务器的网关。

68c1ec33342f4d2996beeaae50c09c0d.png

NAT网卡在:172.25.254.0/24网段;仅主机在192.168.0.0/24网段,对应的IP配置如下图:

NAT:

883881f7e5b44c7ab12d470989752bfb.png

仅主机:

41a1942444b04b529aaa902a6dc960e5.png

2. Lvs中打开内核路由功能

#查看打开内核路由功能的命令
[root@LVS ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0    # 0表示关闭,1表示打开
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0#修改配置文件
[root@LVS ~]# vim /etc/sysctl.conf 
[root@LVS ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv4.ip_forward = 1
[root@LVS ~]# sysctl -p
net.ipv4.ip_forward = 1

3.webserver1webserver2配置

webserver1:

#配置IP地址和网关,ipv4.method manual:表示为手动模式 connection.autoconnect yes:表示为自动连接
[root@webserver1 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.10/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes#重启网卡
[root@webserver1 ~]#nmcli connection up ens160

webserver2:

#配置IP地址和网关,ipv4.method manual:表示为手动模式 connection.autoconnect yes:表示为自动连接
[root@webserver2 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.0.20/24 ipv4.gateway 192.168.0.100 ipv4.method manual connection.autoconnect yes#重启网卡
[root@webserver2 ~]#nmcli connection up ens160

4.webserver1webserver2下载httpd模块并写页面内容

webserver1:

[root@webserver1 ~]# yum install httpd -y
[root@webserver1 ~]# echo webserver1 192.168.0.10 > /var/www/html/index.html 
[root@webserver1 ~]# cat /var/www/html/index.html 
webserver1 192.168.0.10

webserver2:

[root@webserver2 ~]# yum install httpd -y
[root@webserver2 ~]# echo webserver1 192.168.0.20 > /var/www/html/index.html 
[root@webserver2 ~]# cat /var/www/html/index.html 
webserver1 192.168.0.20

注意:

在企业中两个服务器的页面应该是一致的,但是这里是实验环境,我们设不一致,方面我们观察实验结果。

5. LVS中测试,保证可以正常访问后端两台真实服务器

[root@LVS ~]# curl 192.168.0.10
webserver1 192.168.0.10
[root@LVS ~]# curl 192.168.0.20
webserver2 192.168.0.20

 6. LVS中安装软件

62e6b5abc0ef42cd80507c2899850e41.png

7. LVS添加服务和算法规则(-s rr表示调度算法是:轮询算法)

e2685f0b74f445c289fadeb2b3116a68.png

8.客户机访问测试

[root@localhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[root@localhost ~]# curl 172.25.254.100
webserver2 192.168.0.20
[root@localhost ~]# curl 172.25.254.100
webserver1 192.168.0.10
[root@localhost ~]# curl 172.25.254.100
webserver2 192.168.0.20

7.4 nat模式数据逻辑

1e962fb8f2a34d3bb98e8bcb6e884887.png

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口 (9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口 (9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)

5.VS服务器把修改过报文的响应数据包回传给客户端

八、LVS的DR模式实验详解

f0b9ba8091764a2f8416371a29dd7f3d.png

8.1实验环境

1.母盘克隆五台红帽9机子

2.两台作为真实服务器,一台作为LVS负载调度器,一台作为路由器,一台作为客户端

3.webserver1和webserver2环境配置和上个实验一样。

4.LVS只需一张仅主机的网卡,IP地址为:192..168.0.50;禁用上个实验NAT那张网卡。

5.路由器两张网卡,一张NAT模式,IP地址为:172.25.254.100,作为客户端的网关;一张仅主机连接内网,IP地址为:192.168.0.100,作为内网的网关。

6.客户端IP地址为:172.25.254.200,网关为:172.25.254.100.

8.2实验要求

要求从客户端访问LVS能做到负载均衡,第一次如果是webserver1响应的,第二次就是webserver2响应。且服务器返回数据的时候是直接通过VIP返回给客户端,不经过交换机这些。

8.3实验步骤

1.环境搭建

IP配置与上一个实验操作相同,这里不细说。参考上一个实验配置IP的方式,将实验环境搭建完成。LVS记得禁用网卡和内核路由功能。

LVS中禁用网卡的命令格式为:

nmcli device disconnect 网卡名

2.路由器开启内核路由功能

与上一个实验相同,在配置文件中加入命令即可。

3.配置rs主机中使vip不对外响应(webserver1和webserver2)

webserver1:

a69ae68bb78f4cbbbd30807b6af81786.png

webserver2:

827cbeb1e6d1478291822a40f984f5c0.png

4.在LVS主机中和rs主机中添加VIP

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

#配置环回网卡IP
[root@LVS ~]# ip a a 192.168.0.200/32 dev lo

rs主机配置相同,都是上面这一条命令。

注意:网段是/32,一定不要写错了,VIP要独立的应该网段。

5.客户机测试

[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver1 192.168.0.10
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200
webserver1 192.168.0.10

6.Wireshark抓包查看MAC地址变化

将自己所有主机的MAC地址记录一下,然后用抓包工具抓包查看一下,注意,抓的是内网的包。

e650016c07304bfea49334073426ca4d.png

8.4 DR模式数据逻辑

这也是前面要抓包的原因,因为DR模式在传递的时候IP层是不变的,IP地址都一样,改变的第二层MAC地址,所有只有通过抓包查看MAC地址的变化来观察原理。 

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

九、LVS-火墙mark标记解决调度问题

9.1实验环境:

1.在上一个实验的环境下继续完成实验。

9.2实验要求:

问题:以http和https为例,当我们在RS中同时开放80和443端口,那么默认控制是分开轮询的,这样我们就出 现了一个轮询错乱的问题 当我第一次访问80被轮询到RS1后下次访问443仍然可能会被轮询到RS1上

1.如果不做火墙mark标志,当客户端通过http的80端口,和https的443端口访问时,两次是后端同一台服务器发来的,如下所示:

[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.20
webserver2 192.168.0.20

2.这是我们不想看见的,我们LVS执行的算法是rr轮询,要做到负载均衡,第一次http如果是10主机发来的回复,那么第二次https的应该是20主机发来的。这就是本次实验要实现的要求。

9.3实验步骤

1.RS安装mod_ssl模块,让RS支持https

webserver1:

[root@webserver1 ~]# yum install mod_ssl -y
#一定要重启,不让不行
[root@webserver1 ~]# systemctl restart httpd

webserver2:

[root@webserver2 ~]# yum install mod_ssl -y
[root@webserver1 ~]# systemctl restart httpd

2.查看端口,确保端口都存在

[root@webserver1 ~]# netstat -lnupt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3855/httpd          
tcp6       0      0 :::443                  :::*                    LISTEN      3855/httpd          
[root@webserver2 ~]# netstat -lnupt | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      3855/httpd          
tcp6       0      0 :::443                  :::*                    LISTEN      3855/httpd          

3.LVS主机中为端口做标记

#先清空规则
[root@LVS ~]# ipvsadm -C
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn#为端口做标记 -A:添加;-D:删除
[root@LVS ~]#  -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66#基于标记定义集群服务
[root@LVS ~]# ipvsadm -A -f 66 -s rr
[root@LVS ~]# ipvsadm -a -f 66 -r 192.168.0.10 -g
[root@LVS ~]# ipvsadm -a -f 66 -r 192.168.0.20 -g
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  66 rr-> 192.168.0.10:0               Route   1      0          0         -> 192.168.0.20:0               Route   1      0          0      

 4.客户端访问测试

#-k:忽略https证书,不然访问不了
[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200 
webserver1 192.168.0.10
webserver2 192.168.0.20
[root@client ~]# curl 192.168.0.200; curl -k https://192.168.0.200
webserver1 192.168.0.10
webserver2 192.168.0.20

十、LVS的TUN模式(不常用了解一下)

10.1转发方式

不修改请求报文的IP首部(源IP为CIP,目标IP为VIP),而在原IP报文之外再封装一个IP首部 (源IP是DIP,目标IP是RIP),将报文发往挑选出的目标RS;RS直接响应给客户端(源IP是VIP,目标IP是CIP)

10.2 TUN模式数据传输过程

1.客户端发送请求数据包,包内有源IP+vip+dport

2.到达vs调度器后对客户端发送过来的数据包重新封装添加IP报文头,新添加的IP报文头中包含TUNSRCIP(DIP)+TUNDESTIP(RSIP1)并发送到RS1

3.RS收到VS调度器发送过来的数据包做出响应,生成的响应报文中包含SRCIP(VIP)+DSTIP(CIP)+port,响应数据包通过网络直接回传给client

10.3 TUN详解

如果想要了解更多可以访问一下链接:

https://www.cnblogs.com/luwei0915/articles/10488825.htmlicon-default.png?t=N7T8https://www.cnblogs.com/luwei0915/articles/10488825.html

十一、LVS的fullnet模式(了解)

11.1 fullnet模式简介

fullnat:通过同时修改请求报文的源IP地址和目标IP地址进行转发

CIP --> DIP

VIP --> RIP

1.VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP

2.RS收到的请求报文源地址是DIP,因此,只需响应给DIP;但Director还要将其发往Client

3.请求和响应报文都经由Director

4.支持端口映射

11.2 fullnet模式详解

如果想要了解更多可以访问一下链接:

https://blog.51cto.com/u_16099331/9937768icon-default.png?t=N7T8https://blog.51cto.com/u_16099331/9937768

十二、LVS各种模式之间的对比

模式特点优点缺点适用场景
NAT 模式(Network Address Translation)通过修改请求报文的目标 IP 地址实现转发。配置简单,容易实现。扩展性较差,较大规模时可能成为系统瓶颈。中小规模的网络服务。
TUN 模式(IP Tunneling)采用 IP 隧道技术将请求报文封装转发。集群中的服务器可以跨越不同网段,扩展性好。服务器需要支持隧道功能,配置复杂。服务器分散在不同地域的情况。
DR 模式(Direct Routing)直接路由模式,通过改写请求报文的 MAC 地址进行转发。性能高,没有 IP 封装开销。要求服务器和调度器在同一物理网段。对性能要求较高的场景。
FullNAT 模式不仅修改请求报文的目标 IP 地址,还修改源 IP 地址。解决了 NAT 模式中源地址冲突的问题,扩展性较好。相比 DR 模式,有一定的性能开销。当后端服务器和前端调度器的网络环境较复杂时适用。

相关文章:

你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解

目录 一、什么是LVS 二、LVS的核心思想 三、 LVS的优势 四、LVS的调度算法 4.1. LVS的调度算法类型 4.2. LVS静态调度算法 4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息 六、ipvsadm命令 七、 LVS的NAT模式实验详解 7.1实验环境 7.…...

嵌入式初学-C语言-十七

#接嵌入式初学-C语言-十六# 函数的递归调用 含义&#xff1a; 在一个函数中直接或者间接调用了函数本身&#xff0c;称之为函数的递归调用 // 直接调用a()->a(); // 间接调用a()->b()->a();a()->b()->..->a();递归调用的本质&#xff1a; 本是是一种循环…...

leetcode数论(2280. 表示一个折线图的最少线段数)-几何

前言 经过前期的基础训练以及部分实战练习&#xff0c;粗略掌握了各种题型的解题思路。现阶段开始专项练习。 数论包含最大公约数(>2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。 描述 给…...

如何利用 LNMP 搭建 WordPress 站点

作者 乐维社区&#xff08;forum.lwops.cn&#xff09; 许远 在这个信息爆炸的时代&#xff0c;拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台&#xff0c;已成为企业和个人的基本需求。WordPress&#xff0c;以其无与伦比的易用性和强大的扩展性&#xff0…...

“Mutation Observer:让DOM变化尽在掌握

Mutation Observer&#xff08;变动观察者&#xff09; 定义 Mutation Observer是一种JavaScript API&#xff0c;用于异步监测DOM树的变动&#xff0c;包括元素的添加、删除、属性变化等。当DOM发生变动时&#xff0c;它可以触发回调函数&#xff0c;允许你对变动作出响应。 …...

oracle(19c)用户管理

简介 本文介绍 Oracle 中的用户管理&#xff0c;包含以下内容&#xff1a; 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 使用前可以自行安装oracle数据库 oracle19c安装&a…...

浅谈安科瑞智慧用电系统在电气火灾中的应用

摘要&#xff1a;为了对电气火灾事故进行预测和预警&#xff0c;同时为了对电气火灾事故的应急救援提供 支持&#xff0c;将智慧用电监控系统应用于电气火灾中。该系统利用物联网、移动互联网、云平台、大数据技术&#xff0c;实现对电气线路电流、漏电、温度、谐波等参数进行…...

【Material-UI】Button 组件中的尺寸设置(Sizes)详解

文章目录 一、基础尺寸选项1. 小尺寸&#xff08;Small&#xff09;2. 中等尺寸&#xff08;Medium&#xff09;3. 大尺寸&#xff08;Large&#xff09; 二、尺寸的应用场景三、高级用法和最佳实践1. 使用主题调整默认尺寸2. 确保一致性3. 考虑无障碍设计 四、总结 在用户界面…...

Java学习Day20

Vue学习 nodejs的安装与环境配置 1.直接去官网下载合适版本的nodejs( https://nodejs.org/zh-cn/download/prebuilt-installer) 2.解压下载的安装包&#xff0c;将文件路径配置到系统变量的path中&#xff0c;然后确认后退出。可以使用终端来查看安装的nodejs版本。使用winR…...

代理IP怎么弄,如何在电脑中设置IPXProxy代理IP?

随着互联网的不断普及&#xff0c;人们可以利用网络在不同的领域实现更多的可能性。在这个过程中&#xff0c;许多新型网络技术受到人们的关注&#xff0c;代理IP就是其中之一。使用代理IP可以隐藏真实的IP地址&#xff0c;帮助我们突破网络限制、保护隐私、进行网页抓取等一系…...

MacOS 查看端口命令

netstat 命令 查看所有监听的端口 netstat -nat | grep LISTEN 查看9000端口 netstat -nat | grep 9000 # 示例输出 tcp4 0 0 127.0.0.1.9000 *.* LISTEN lsof 命令 查看所有TCP监听的端口 lsof -n -P -i TCP -s TCP:LISTEN 参…...

【python】序列化与反序列化

序列化与反序列化 JSON、CSV和YAML都是常见的数据序列化和反序列化格式。它们都可以用于将数据从一种表示形式转换为另一种表示形式。 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它使用键值对的形式来表示数据&#xff…...

补充:关于GRU的详细运作原理以及特殊的优化思路

1. GRU的基本结构和运作原理 1.1 GRU的基本概念 Gated Recurrent Unit (GRU) 是一种简化版的循环神经网络 (RNN),它通过引入门控机制来解决长期依赖问题,同时减少参数数量以降低计算复杂度。 1.2 GRU的结构详解 GRU 包含两个门控机制:更新门 (update gate) 和重置门 (re…...

xxl-job 源码梳理(2)-服务端

目录 1. 控制面的接口2.手动触发任务2. 定时任务的实现 1. 控制面的接口 服务端包含xxl-job的管理端&#xff0c;页面上的接口后端一系列的controller接口 appName是一个核心概念&#xff0c;它是指执行器应用的名称&#xff0c;appName是执行器的唯一标识 页面上的接口&#…...

C++ GDl+ 多张图片合并生成GIF动画格式图片

使用ImageMagick多张图合成GIF。 1、工具下载安装 下载地址&#xff1a;ImageMagick – Download&#xff0c;windows下载版本如下&#xff1a; 下载后&#xff0c;安装&#xff0c;安装时选择为C/C安装动态库和头文件。 2、代码实现 附加包含目录&#xff1a;ImageMagick-7.…...

【C++】模拟实现list

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目及其功能 &#x1f4cc;了解list官方标准 了解模拟实现list &#x1f4cc;了解更底层的list实现 二.list迭代器和vector迭代器的异同 &#x1f4cc;迭…...

怎么使用git merge合并两个分支?

在Git中&#xff0c;git merge命令用于将两个或多个开发历史&#xff08;通常指分支&#xff09;合并到一起。以下是一个基本的步骤指南&#xff0c;说明如何使用git merge来合并两个分支。 ### 前提条件 - 确保你已经安装了Git&#xff0c;并且熟悉基本的Git命令&#xff0c;如…...

ios 5.5寸、ipad13英寸如何截屏

ios上架的时候&#xff0c;你可能会发现&#xff0c;上架需要ios 5.5寸&#xff0c;ipad需要13英寸的屏幕截屏。 但是尴尬了&#xff0c;我们手头上的手机&#xff0c;可能是最新的iphone 15&#xff0c;并没有远古时代iphone 8 plus的5.5寸&#xff0c;那么我们该如何截屏呢&…...

spdlog日志库--输出格式(fmt 库集成)

系列目录 spdlog日志库–基础介绍 spdlog日志库–源码解析 文章目录 1. 格式输出fmt格式输出2. format_spec 格式空间正数和负数的格式#号控制输出格式3. %s占位符 切换 {}占位符 (fmtlib(fmt::format)){}占位符 -> %s等占位符%s占位符 -> {}占位符4. 不使用占位符({}、%…...

Docker简介 MacM1安装Docker

文章目录 1 Docker简介2 Docker VS 虚拟机1 Docker优势2 Docker用途 3 MacM1 下载安装Docker1 配置环境变量 4 配置Docker2 设置Docker资源3 设置Docker镜像 参考 1 Docker简介 Docker主要解决了软件开发和运行配置的问题&#xff0c;但是由于其功能的强大&#xff0c;也被应用…...

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式 文章目录 PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式1. 查询效果2. 处理方式3. 再次查询 1. 查询效果 2. 处理方式 3. 再次查询...

Ubuntu 下开机自动执行命令的方法

Ubuntu 下开机自动执行命令的方法&#xff08;使用 crontab&#xff09; 在日常使用 Ubuntu 或其他 Linux 系统时&#xff0c;我们常常需要让某些程序或脚本在系统启动后自动运行。例如&#xff1a;启动 Clash 代理、初始化服务、定时同步数据等。 本文将介绍一种简单且常用的…...

LVGL手势识别事件无上报问题处理记录

最近在使用LVGL8.3开源库开源UI界面时,碰到使用FB驱动显示UI时,触摸屏手势识别事件接收不到的情况,通过如下调整可以处理该问题: 1、创建Top Object时,不能使用如下语句: lv_obj_t *page_obj = lv_obj_create(lv_scr_act()); 而要使用如下语句: lv_obj_t *page_obj =…...

04 Deep learning神经网络编程基础 梯度下降 --吴恩达

梯度下降在深度学习的应用 梯度下降是优化神经网络参数的核心算法,通过迭代调整参数最小化损失函数。 核心公式 参数更新规则: θ t + 1 = θ t − η ∇ J ( θ...

html+css+js趣味小游戏~Cookie Clicker放置休闲(附源码)

下面是一个简单的记忆卡片配对游戏的完整代码&#xff0c;使用HTML、CSS和JavaScript实现&#xff1a; html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"wid…...

LeetCode 239. 滑动窗口最大值(单调队列)

题目传送门&#xff1a;239. 滑动窗口最大值 - 力扣&#xff08;LeetCode&#xff09; 题意就是求每个窗口内的最大值&#xff0c;返回一个最大值的数组&#xff0c;滑动窗口的最值问题。 做法&#xff1a;维护一个单调递减队列&#xff0c;队头为当前窗口的最大值。 设计的…...

OpenCV 图像色彩空间转换与抠图

一、知识点: 1、色彩空间转换函数 (1)、void cvtColor( InputArray src, OutputArray dst, int code, int dstCn 0, AlgorithmHint hint cv::ALGO_HINT_DEFAULT ); (2)、将图像从一种颜色空间转换为另一种。 (3)、参数说明: src: 输入图像&#xff0c;即要进行颜…...

Reactor和Proactor

reactor的重要组件包括&#xff1a;Event事件、Reactor反应堆、Demultiplex事件分发器、Eventhandler事件处理器。...

惠普HP Deskjet 9600 打印机信息

基本参数 产品定位&#xff1a;彩色喷墨打印机。打印速度&#xff1a;14 页 / 分钟。最高分辨率&#xff1a;48001200dpi。打印内存&#xff1a;8MB4。打印语言&#xff1a;HP PCL 3 增强型。打印负荷&#xff1a;每月 5000 页。接口类型&#xff1a;USB、并口。 功能特点 自动…...

96. 2017年蓝桥杯省赛 - Excel地址(困难)- 进制转换

96. Excel地址&#xff08;进制转换&#xff09; 1. 2017年蓝桥杯省赛 - Excel地址&#xff08;困难&#xff09; 标签&#xff1a;2017 省赛 1.1 题目描述 Excel 单元格的地址表示很有趣&#xff0c;它使用字母来表示列号。 比如&#xff0c; A 表示第 1 列&#xff0c;…...