首页 > 代码库 > LVS IP Tunnel模式详解

LVS IP Tunnel模式详解

       采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。

      VS/TUN的工作流程图如下所示,它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。

Tunnel原理流程图:

技术分享

原理图过程简述:

       1)客户请求数据包,目标地址VIP发送到LB上。

       2)LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。然后发送出去。

       3)RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理。

      4)响应处理完毕之后,RS服务器使用自己的出公网的线路,将这个响应数据包发送给客户端。源IP地址还是VIP地址。(RS节点服务器需要在本地回环接口配置VIP,后续会讲)

 

实验环境图:

技术分享

 

LVS 服务器配置:

# ifconfig tunl0 10.6.2.195 broadcast 10.6.2.195 netmask 255.255.255.255 up

# route add -host 10.6.2.195 dev tunl0

# yum install -y ipvsadm

# modprobe ip_vs

# ipvsadm -C

# ipvsadm -At 10.6.2.195:80 -s rr

# ipvsadm -at 10.6.2.195:80 -r 10.6.2.192 -i

# ipvsadm -at 10.6.2.195:80 -r 10.6.2.191 -i

# ipvsadm -Ln

# echo "0" > /proc/sys/net/ipv4/ip_forward

# echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects

# echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects

# echo "1" > /proc/sys/net/ipv4/conf/eth0/send_redirects

 

Real Server配置:

# ifconfig tunl0 10.6.2.195 broadcast 10.6.2.195 netmask 255.255.255.255 up

# route add -host 10.6.2.195 dev tunl0

# echo "0" > /proc/sys/net/ipv4/ip_forward

# echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce

# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

# echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter

# echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

 

LVS IP Tunnel模式详解