LVS-TUN模式下的负载均衡
IP隧道模式,采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。
为了解决这个问题,调度器把请求报文通过IP隧道转发至真实服务器,而真实服务器直接将响应报文返回给客户,调度器只处理请求报文。
由于一般网络服务应答比请求报文大的多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。
一、实验原理
图解:
(1)原理:
<1>客户请求数据包,目标地址VIP(LB的IP地址)发送到LB上;
<2>LB接收到客户请求包,进行IP Tunnel封装,在原有的包头加上IP Tunnel的包头,然后发送给服务器;
<3>服务器根据IP Tunnel包头信息(此时就有一种逻辑上的隐形隧道,只有LB和服务器之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理;
<4>响应处理完毕之后,服务器使用自己的出公网的线路,将这个响应数据包发送给客户端,源IP地址还是VIP地址。
(2)优缺点:
优点:
性能介于NAT和DR模式之间
Director Server与Real Server 可以在不同的网段,即集群中的Real Server 可以在不同的城市。
由于一般网络服务应答比请求报文大的多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。
注: DR方式是通过修改MAC,规模是一个交换网络。而TUN方式,是通过给数据包加上新的IP头部来实现。
缺点:
需要的Real Server服务器的内核中,必须支持IP Tunnel。
二、实验部署
(1)实验环境:
本次实验所有主机均为rhel7.3,并且selinux为disabled、防火墙为关闭状态;
主机名 角色 IP
server1 LB(调度器) 172.25.40.1
server2 RS(真实后端服务器) 172.25.40.2
server3 RS(真实后端服务器) 172.25.40.3
(2)实验过程
server1(调度器):
首先,yum源必须进行扩展(HighAvailability ResilientStorage )
添加规则:
yum install ipvsadm -y
/etc/init.d/ipvsadm start #开启服务
ipvsadm -C
ipvsadm -A -t 172.25.40.100:80 -s rr
ipvsadm -a -t 172.25.40.100:80 -r 172.25.40.2:80 -i #给vip添加rip,使用TUN模式
ipvsadm -a -t 172.25.40.100:80 -r 172.25.40.3:80 -i
ipvsadm -S #保存策略
ipvsadm -ln #查看策略
ipvsadm -lnc #查看调度IP情况
server2
安装httpd服务
yum install httpd -y
vim /var/www/html/index.html
systemctl start httpd
配置网络
modprobe ipip #加载模块
ip link set up tunl0 #开启设备
ip addr add 172.25.254.100/32 dev tunl0 #添加虚拟IP
ip addr #查看ip
安装arptables_jf工具
yum install arptables -y
arptables -F #清空策略
arptables -A INPUT -d 172.25.40.100 -j DROP ## 拒绝172.25.254.100的访问
arptables -A OUTPUT -s 172.25.40.100 -j mangle --mangle-ip-s 172.25.40.2 #由于tcp三次握手原因,所以出去的时候仍要以vip地址出去才会实现握手,而真正将数据传输给客户端的就是realserver, mangle参数就是这个功能
arptables -L #查看策略
关闭rp_filter
sysctl -a|grep .rp_filter #将过滤出的打开着的.rp_filter全部关闭
server3
同server2
物理机测试:
在物理机中执行curl 172.25.40.100,出现轮询即配置生效