lvs的工作模式

本文深入解析LVS(Linux Virtual Server)的三种主要工作模式:DR(Direct Routing)模式、NAT模式和TUNNEL模式。详细介绍每种模式的原理、特点及应用场景,帮助读者理解LVS如何实现高效负载均衡。

LVS的工作模式

LVS(Linux Virtual Server)
特点:跨平台:windows、linux
作用:实现负载均衡
核心组件
ip_vs:linux的内核功能模块,工作在内核,依赖该内核模块实现负载均衡功能
ipvsadm:应用层程序,该程序可以和内核中的ip_vs模块通信,实现对负载均衡的管理和控制
补充
keepalived也可以对ip_vs进行管理
概念
ClientIP:CIP
RealServerIP:RIP
DirectorIP:DIP
VirtualIP:VIP
一 .DR ( Direct Routing )模式,直接路由模式
1.原理:
第一步:客户端的请求会发送到及房,此时仅仅DR可以接收这个请求
目标IP MAC都是DR,所以DR可以接收这个请求
第二步:DR收到请求之后,会重新封装请求
1)会通过预先定义好的算法找出一个RS的mac地址
2)然后将这个请求报文的目标mac改为这个mac
3)最后将这个修改mac后的请求报文发送出去
第三步:因为这是内部网络,所有所有节点都可以接收这个请求数据包
1)判断目标IP mac是否与自己的ip mac相同,只有相同才会接收和处理这个请求
2)处理完成后,会将处理结果直接发送个客户端(不再经过DR)

**补充1:为了让DR RS可以接收请求,要求都需要有相同的哪个IP,这个IP就是VIP,但是这样会导致IP冲突
解决方式;将vip绑定在本地的回环接口之上(lo)
补充2:因为多个节点都有vip,因此客户端在请求获取mac地址的时候,就会出现arp争抢的问题
解决方式:在RS上设置arp抑制(不让RS对arp请求做出应答)**

2.ARP请求:获取ip所对应的mac地址

cliet           =====>      DR            =====>        RS
ip  :1.1.1.1               ip  : 1.1.1.2               ip  : 1.1.1.3
mac : aa:aa:aa:aa:aa:aa     mac : bb:bb:bb:bb:bb:bb     mac : cc:cc:cc:cc:cc:cc


客户端发送的请求:
	源ip:1.1.1.1 
	源mac:aa:aa:aa:aa:aa:aa
	目标:1.1.1.2
	目标mac:bb:bb:bb:bb:bb:bb
	源端口:1234
	目标端口:80

DR重新封装以后的报文
	源ip:1.1.1.1 
	源mac:aa:aa:aa:aa:aa:aa
	目标:1.1.1.2
	目标mac: cc:cc:cc:cc:cc:cc
	源端口:1234
	目标端口:80

3.DR模式总结:
1. 调度器仅仅修改目标mac
2. 响应报文是直接发送给客户端,不再经过调度器
3. RS必须要和DR在用一个局域网中
4. DR无法修改请求报文中的目标端口,因此RS的端口必须和DR一致
5. DR和所有的RS都需要配置VIP
6. 所有的RS都需要配置ARP抑制
7. RS必须可以直接和外网通信
8. DR模式效率相对高,配置复杂,所以如果访问量小(pv<2000),建议用更简单的nginx haproxy

二.NAT模式
1.原理:
第一步:客户端发送请求,请求报文中的目标ip都是VIP
第二步:DR接收请求报文,然后通过算法找出一个RS,然后将请求报文中的目标IP改为找出的RS的RIP
第三步:RS接收到DR转发的请求之后,会进行处理,然后将处理的结果发送DIP(源ip是RIP,目标ip是CIP),发送给DR
第四步:DR收到RS所返回的数据,然后会修改这个数据包,将源IP地址改为VIP,然后就可以发送给客户端了

补充:RS无法直接给客户端返回数据
解决方式:将DR的内网卡作为所有RS的网关
注意:DR需要启动路由转发功能

2.ARP请求:获取ip所对应的mac地址

cliet           =====>      DR            =====>        RS
ip  :1.1.1.1               vip  : 1.1.1.2              ip  : 1.1.1.3
mac : aa:aa:aa:aa:aa:aa     mac : bb:bb:bb:bb:bb:bb     mac : cc:cc:cc:cc:cc:cc


客户端发送的请求:
	源ip:1.1.1.1 
	源mac:aa:aa:aa:aa:aa:aa
	目标:1.1.1.2
	目标mac:bb:bb:bb:bb:bb:bb
	源端口:1234
	目标端口:80

DR重新封装以后的报文
	源ip:1.1.1.1 
	源mac:aa:aa:aa:aa:aa:aa
	目标:1.1.1.3
	目标mac: bb:bb:bb:bb:bb:bb
	源端口:1234
	目标端口:80

返回数据
	源ip:1.1.1.3
	源mac: cc:cc:cc:cc:cc:cc
	目标ip:1.1.1.1 
	目标mac:aa:aa:aa:aa:aa:aa

3.NAT模式总结
1.调度器在接收客户端的请求的时候,修改的是目标IP;在给客户端返回数据的时候,修改的是源IP
2.DIP和RIP必须在同一个网络,而且可以仅仅是一个私有地址
3.RS不需要连接外网也能正常工作(RS被保护起来)
4.请求的数据和应答的数据都需要经过DR的处理,所以在高并发的情况下,DR压力较大
5.NAT模式的使用场景后端节点较少的情况(RS<20)
6.RS的网关地址必须指向DR的内网卡IP地址
7.DR需要至少两个网卡(一个连外网,一个连接内网)
DR需要开启路由转发功能

三.TUNNEL模式
了解
在原有报文的基础,添加一个新的IP头

四.FULLNAT模式
这是nat模型的扩展,RS和DR可以不再同一个网络
RIP 和DIP 可以是私有地址,他们也可以不再同一个网络,RS的网关可以不指向DR的内网卡IP

下载前可以先看下教程 https://pan.quark.cn/s/a4b39357ea24 SSM框架,涵盖了Spring MVC、Spring以及MyBatis这三个框架,在Java领域内作为构建Web应用程序的常用架构而备受青睐,特别是在电子商务购物平台的设计与实现过程中展现出极高的应用价值。 这三个框架各自承担着特定的功能角色,通过协同运作来达成高效且灵活的业务处理目标。 Spring MVC作为Spring体系结构中的一个关键部分,主要致力于处理HTTP请求与响应,并推行模型-视图-控制器(MVC)的设计模式。 其运作机制中,DispatcherServlet扮演着前端控制器的角色,负责接收HTTP请求,并将其依据请求映射至相应的Controller处理方法。 在Controller执行完业务逻辑后,会将处理结果传递给ModelAndView对象,随后由ViewResolver将其解析为具体视图进行呈现。 Spring MVC还具备数据绑定、验证以及国际化等附加功能,这些特性显著提升了开发工作的效率以及代码的可维护程度。 Spring框架则是一个综合性的企业级应用开发框架,其核心能力包含依赖注入(DI)、面向切面编程(AOP)以及事务管理等关键特性。 DI机制使得开发者能够借助配置文件或注解手段来管理对象的生成与依赖关联,从而有效降低组件之间的耦合性。 AOP技术则适用于实现诸如日志记录、权限管理这类跨领域的功能需求,有助于使代码结构更为清晰。 Spring在事务管理方面提供了编程式和声明式两种处理途径,确保了数据操作过程遵循原子性与一致性原则。 MyBatis则是一个轻量级的数据库访问层框架,其特点在于将SQL语句与Java代码进行分离,并支持动态SQL的编写。 开发者可以在XM...
### LVS NAT模式与DR模式的区别及使用场景 #### 工作原理区别 LVS-NAT模式下,数据包的源IP和目标IP在转发过程中会发生变化。所有进出Real Server的数据包都必须经过负载调度器,这意味着所有的流量都需要通过Director设备完成地址转换[^2]。相比之下,在LVS-DR(Direct Routing)模式中,客户端请求到达Director后,仅修改数据包的目的MAC地址为选定Real Server的MAC地址,而IP头保持不变。因此,Real Server可以直接响应客户端而不必再经过Director。 #### 性能表现差异 由于NAT模式下的所有通信都要经由Director进行SNAT/DNAT操作,这会增加Director本身的CPU负担以及网络带宽消耗,尤其当业务量增大时可能成为瓶颈[^1]。而在DR模式里,除了初始连接建立阶段外,后续交互无需再次穿越Director,极大地减轻了其压力并提升了整体吞吐能力[^4]。 #### 配置复杂度分析 实现NAT模式较为简单直白,只需确保各节点能够正常访问即可满足基本需求;然而对于DR模式而言,则需要额外考虑诸如ARP抑制等问题——因为多个真实服务器共享同一VIP地址可能会引发广播风暴现象,所以通常还需要配置静态路由或者借助工具如`arptables`来进行管理控制[^3]。 #### IP规划灵活性对比 采用NAT架构时,Real Servers不必拥有公网IP地址,它们可以通过私有网段接入内部局域网并与外界隔离开来,增强了安全性同时也简化了IP资源分配过程[^5]。而对于DR方案来说,虽然同样支持跨子网部署但要求每台RS至少具备一个可被外部直接寻址的有效接口以便独立回应客户查询请求。 #### 安全性和隔离性考量 鉴于NAT结构天然形成了两层防护屏障(即前端代理加后端隐藏),故此更有利于抵御某些特定类型的攻击行为比如DDoS等威胁因素的影响程度降低不少; 而DR则暴露得更多一些因为它允许绕过中间件直达最终目的地从而存在潜在风险隐患如果缺乏妥善的安全策略的话. ```bash # 示例命令展示如何设置iptables规则以标记特定流量供进一步处理 [root@lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66 ``` 以上脚本片段展示了在一个典型的基于Linux平台实施高级功能定制化实例之一 —— 使用防火墙标签配合多端口匹配机制精确区分不同类型的工作负荷进而优化资源配置效率的同时也提高了运维自动化水平[^4]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值