LVS的模式二:TUN(隧道)模式

  • 隧道模式就是修改请求报文的首部IP,在加一层IP报头。
  • 优点:DS和RS不需要在同一网段。

隧道模式工作原理

源地址:CIP(客户端IP)
目标地址:VIP(DS服务器)
包了外层数据包之后:
源地址:DIP(VIP)(DS服务器)
目标地址:RIP(RS真正的服务器)

Client ----> DS(调度器) ---->prerouting ------> INPUT ------>postrouting ------>RS(真正的服务器)------>lo ------> eth0 -------->Client
  • 数据流向:数据包从客户端发往DS服务器,DS服务器会根据调度策略确定要把请求给哪台RS,会在数据包外面再加一层IP报头,此时源IP从CIP变为了VIP(DIP),目的IP从VIP变为了RIP,数据包的请求来源就是DS调度器(172.25.24.100),请求的目的地是RS(172.25.24.2/3),RS在接收到数据包之后,请求包的来源本来是CIP(172.25.24.24),但是加了一层数据包之后变为了VIP(172.25.24.100),而RS服务器上也有172.25.24.100这个ip,所以RS会把IP包的报头拆开,拆开发现请求的数据包访问的还是自己的ip(172.25.24.2/3),这时RS就会回复客户端的请求(跟DR模式类似,只不过多加了一层IP报头,封装IP守护)。

  • IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封装,这样这个报文就可以发送到一个指定的目标主机上。

  • 隧道模式下,调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–>VIP)被director接收后,director修改该报文,加上IP隧道两端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标。

  • 当后端服务器接收到报文后,首先解封该报文原有的CIP—>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包。

  • 当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端。此时响应数据包的源IP为VIP,目标IP为CIP。

采用隧道模式的基本属性和要求

  • realserver的RIP和director的DIP不用处于同一物理网络中,且RIP必须可以和公网通信。也就是说集群节点可以跨互联网实现。
  • realserver的tun接口上需要配置VIP地址,以便接收director转发过来的数据包,以及作为响应的报文源IP。
  • director转发给realserver时需要借助隧道,隧道外层的IP头部的源IP时DIP,目标IP是RIP,而realserver响应给客户端的IP头部是根据隧道内层的IP头分析得到的,源IP是VIP,目标IP是CIP。
  • director只处理入站请求,响应请求由realserver自己完成
  • 一般来说,TUN模式会用来负载调度缓存服务器组,这些缓存服务器一般放置在不同的网络环境,可以就近折返给客户端。在请求对象不在Cache服务器本地命中的情况下,Cache服务器要向源服务器发送请求,将结果取回,最后将结果返回给用户。

实验环境

  • 3台rhel7.5版本的虚拟机
主机服务
server1(172.25.24.1)调度器
server2(172.25.24.2)真正的服务器1
server3(172.25.24.3)真正的服务器2

实验步骤

server1
  • 首先清除server1虚拟机上的DR模式的设置。
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -ln
  • 给server1添加隧道模块。删除eth0网卡上的100这个ip,将此ip加到隧道模式上,并激活隧道模式。
[root@server1 ~]# modprobe ipip    #安装隧道的模块
[root@server1 ~]# ip addr show
[root@server1 ~]# ip addr del 172.25.24.100/24 dev eth0
[root@server1 ~]# ip addr add 172.25.24.100/24 dev tunl0  
[root@server1 ~]# ip addr show 
[root@server1 ~]# ip link set up tunl0    #激活
[root@server1 ~]# ip addr show 

在这里插入图片描述
在这里插入图片描述

  • 配置隧道模式,并将添加的策略保存,查看是否添加成功。
[root@server1 ~]# ipvsadm -A -t 172.25.24.100:80 -s rr    #设置为轮询模式
[root@server1 ~]# ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.2:80 -i    #隧道模式,以及真正的服务器
[root@server1 ~]# ipvsadm -a -t 172.25.24.100:80 -r 172.25.24.3:80 -i

[root@server1 ~]# systemctl restart ipvsadm.service 
[root@server1 ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.24.100:80 -s rr
-a -t 172.25.24.100:80 -r 172.25.24.2:80 -i -w 1
-a -t 172.25.24.100:80 -r 172.25.24.3:80 -i -w 1

[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.24.100:80 rr
  -> 172.25.24.2:80               Tunnel  1      0          0         
  -> 172.25.24.3:80               Tunnel  1      0          0         
server2和server3
  • server2:添加隧道模式的ip,开启隧道模式。
[root@server2 ~]# modprobe ipip
[root@server2 ~]# ip addr del 172.25.24.100/24 dev eth0
[root@server2 ~]# ip addr add 172.25.24.100/24 dev tunl0
[root@server2 ~]# ip addr show 
[root@server2 ~]# ip link set up tunl0
[root@server2 ~]# ip addr show 
  • 因为系统会对流入的数据包进行反向路径校验,入包的数据是100,如果出包的数据不是100,这个数据就会被丢弃,所以我们要消除反向过滤的影响,将=1的项都设置为0。
[root@server2 ~]# sysctl -a | grep rp_filter
[root@server2 ~]# sysctl -w net.ipv4.conf.all.rp_filter=0
[root@server2 ~]# sysctl -w net.ipv4.conf.default.rp_filter=0
[root@server2 ~]# sysctl -w net.ipv4.conf.eth0.rp_filter=0
[root@server2 ~]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0

[root@server2 ~]# sysctl -p   #使生效
[root@server2 ~]# sysctl -a | grep rp_filter

因为隧道模式实现的是不同网段的主机进行通信,如果信息要从服务端返回到客户端时,由于客户端和服务端不在同一个网段,数据根本出不去,所以我们需要关闭反向参数检验。
0:不开启源地址校验。
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包

  • server3设置过程与server2相同,不再赘述。
真机测试
  • 真机测试。
    在这里插入图片描述
  • server1查看访问情况。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值