LVS NAT、DR、FULL-NAT 模式介绍

NAT模式

NAT模式下的转发流程

1. CIP ---> VIP
当请求达到调度器时,此时请求会先达到PREROUTING链,这个时候源IP为CIP  目标IP为VIP

2. CIP ---> RIP
当内核检测到访问的IP是本机是,会将数据包发送到INPUT链,IPVS检测到数据包中访问的后段服务是集群服务后,会将请求包发送至POSTROUTING链,这个时候会将目标IP改为RIP,此时源IP为CIP 目标IP为RIP,在这个过程中完成转换

3. RIP ---> CIP 
POSTROUTING通过选路,将请求发送至Real Server,Real Server发现目标IP为自己的IP时,进行请求处理然后将结果返回。此时源IP为RIP目标IP为CIP,再次返回给调度器

4. VIP ---> CIP
DIRECTOR 在返回请求前,会将源IP修改为VIP,然后相应客户端。 此时源IP为VIP,目标为CIP


NAT模式中的一大缺点就是无论是请求的数据包,还是返回的数据包,都必须要经过负载的这个点,请求的数据包一般内容较少,问题不是很大,而返回的数据包,一般都是图片,视频等等,这会给中间的调度器带来巨大的负担


DR模式


直接路由模式工作在数据链路层上(二层)。


Director和REAL SERVER都配置同一个IP(VIP),Director将该IP配置到对外的网卡上,Real server将该IP配置到lo网卡上。配置arp_ignore为1(目的是让数据包发出apr请求时,只有Director会响应该arp请求),所有REAL SERVER对本身这个IP的ARP请求保持静默。而Director收到数据包后根据调度算法,找出对应的 REAL SERVER,把目的MAC地址改为REAL SERVER的MAC并发给这台REAL SERVER。这时REAL SERVER通过网卡eth0收到这个数据包,由于Real Server上的lo网卡配置的也有VIP,所以RS接收该数据包。处理后直接返回给客户端。由于DR要对二层包头进行改换,所以DR和REAL SERVER之间必须在一个广播域,也可以简单的理解为在同一台交换机上。

1. CIP ---> VIP
客户端和IP建立连接。当数据包到达VIP所在的局域网时,在同一网段中,两个主机通信靠的是二层的物理地址而不是Ip地址,因此需要将IP地址转换为MAC地址,因此会发出apr请求,查询VIP对应的mac地址。Linux主机有这么一个特性,假设我们的主机上有两块网卡,比如eth0,eth1 当arp请求eth1的mac地址的时候,eth1会答复,这个是理所当然的,但是eth0也会“好心”的帮eth1回答这个arp请求。==我们在Real Server的lo网卡上配置了VIP,但是我们只想让Director上的网卡来响应我们的这个arp请求。因此就需要更改下我们的一些内核参数,

2. CIP ---> VIP
当用户请求到达DirectorServer,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP。


3. SMAC ---> DIPMAC    DMAC  --->  RIPMAC
PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链.IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址

5、由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server

VIP --->  CIP
client的请求被Director转发并经过链路层寻址到达Realserver后,由于Realserver的lo接口配置了VIP(请求中的目标IP正是VIP),所以接收请求并处理。处理完成之后,将响应报文通过lo接口传送给eth0网卡然后向外发出。此时的源IP地址为VIP,目标IP为CIP。==如果将源地址为VIP将数据包发送出去,那么最终交换机上会产生两条VIP对应的mac地址记录,一条是Director的mac地址记录,还有一条是Real server的mac地址记录,这将会导致真正的VIP无法接收到请求。==因此,此处要配置arp_announce,目的是为了修改源ip的目的地址。

DR模式的特性
1、保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
2、RS可以使用私有地址;也可以是公网地址,如果使用公网地址,此时可以通过互联网对RIP进行直接访问
3、RS跟Director Server必须在同一个物理网络中
4、所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
5、不支持地址转换,也不支持端口映射
6、RS可以是大多数常见的操作系统
7、RS的网关绝不允许指向DIP
8、RS上的lo接口配置VIP的IP地址


FULL-NAT模式


(1)RIP,DIP可以使用私有地址;
(2)RIP和DIP可以不再同一个网络中,且RIP的网关未必需要指向DIP;
(3)支持端口映射;
(4)RS的OS可以使用任意类型;
(5)请求报文经由Director,响应报文也经由Director


 

相关推荐

  1. LVS NAT、DR、FULL-NAT 模式介绍

    2024-04-11 12:10:03       35 阅读
  2. NAT(网络地址转换)模式

    2024-04-11 12:10:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-11 12:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-11 12:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-11 12:10:03       87 阅读
  4. Python语言-面向对象

    2024-04-11 12:10:03       96 阅读

热门阅读

  1. 浅入浅出容器化部署

    2024-04-11 12:10:03       38 阅读
  2. 访问网站时IP被阻止?解决方法

    2024-04-11 12:10:03       57 阅读
  3. 解决moviepy保存的视频画质不清晰问题

    2024-04-11 12:10:03       38 阅读
  4. 4.9

    4.9

    2024-04-11 12:10:03      37 阅读
  5. 使用 IEEE (1735) Verilog 标准机制进行 IP 保护

    2024-04-11 12:10:03       41 阅读
  6. ISBN 正则表达式及代码示例

    2024-04-11 12:10:03       39 阅读
  7. Leetcode-1702-修改后的最大二进制字符串-c++

    2024-04-11 12:10:03       42 阅读
  8. vue监听键盘回车事件的三种方法

    2024-04-11 12:10:03       32 阅读
  9. 学习基于pytorch的VGG图像分类 day3

    2024-04-11 12:10:03       37 阅读
  10. 面试算法-168-LRU 缓存

    2024-04-11 12:10:03       32 阅读
  11. 坚持十天做完Python入门编程100题第三天

    2024-04-11 12:10:03       34 阅读