LVS-TUN模式

一:LVS-TUN模式的工作原理

在VS/NAT 的集群系统中,请求和响应的数据报文都需要通过负载调度器,当真实服务器的数目在10台和20台之间时,负载调度器将成为整个集群系统的新瓶颈。大多数 Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即在负载调度器中只负责调度请求而响应直 接返回给客户,将极大地提高整个集群系统的吞吐量。

IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技 术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。

我们利用IP隧道技术将请求报文封装转 发给后端服务器,响应报文能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地选择 一台服务器,将请求报文封装和转发给选出的服务器。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。 VS/TUN的体系结构如图4所示,各个服务器将VIP地址配置在自己的IP隧道设备上。

VS/TUN的体系结构
图4:VS/TUN的体系结构

VS/TUN 的工作流程如图5所示:它的连接调度和管理与VS/NAT中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器, 将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为VIP的报文,服务器发 现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

 

VS/TUN的工作流程
图5:VS/TUN的工作流程

 

在这里需要指出,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道究竟是哪一台服务器处理的。

 

半连接的TCP有限状态机
图6:半连接的TCP有限状态机

二:LVS-TUN模式下的负载均衡

实验环境:

LoadBalance:172.25.254.1

VIP:172.25.254.100

RS1(server5):172.25.254.5

RS2(server6):172.25.254.6

1.在server1中

配置网络:

添加yum源:

安装服务,并开启服务

清空并给VIP添加RIP,查看调度IP情况

2.在server5中

安装apache并且写好配置文件,重启服务:

配置网络:

安装arptables_jf 工具,DROP掉其访问的ip,出去的ip全部转换本机的ip

关闭rp_filter

**rp_filter参数的作用:

减少DDoS攻击:检验数据包的反向路径,如果反向路径不合适,则直接丢弃数据包,避免减少过多的无效连接消耗系统资源。

防止IP Spooling:校验数据包的反向路径,如果客户端伪造的源IP地址对应的反向路径不在路由表中,或者反向路径不是最佳路径,则直接丢弃数据包,不会向伪造IP的客户端恢复反应。

3.在server6中

安装httpd,写好配置文件,启动服务

配置网络:

安装arptables_jf工具

关闭rp_filter

4.测试:

for i in {1..10};do curl 172.25.254.100;done

可以检测出server5和server6轮循