LVS-TUN模式下的负载均衡

本文介绍了LVS-TUN模式,包括其原理和优点,详细阐述了在LVS-TUN模式下实现负载均衡的步骤,涉及网络配置、策略设定以及服务器端的arp和httpd服务配置。通过实验环境展示了如何在server1、server2和server3上配置LVS-TUN,以实现VIP地址172.25.67.100的负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##(1)VS/TUN的简介##

1.ip隧道技术:
是路由器把一种网络层协议封装到另一个协议中以跨过网络传送到另一个路由器的处理过程。隧道技术是一种数据包封装技术,它是将原始ip包(其报头包含原始发送者和最终目的地)封装在另一个数据包(称为封装的ip包)的数据净荷中的传输。

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

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

 

##(2)VS/TUN原理##

1.客户发送请求,目标地址VIP,请求数据包发送到LB。
2.LB接收到客户请求包,进行ip tunnel封装。在原有的报头加上ip tunnel的报头。然后发送出去。
3.RS节点服务器根据iptunnel报头信息(此时就是一种逻辑上的隐形隧道,只有LB和RS之间懂)受到请求包后,然后解开ip tunnel的报头信息,得到客户的请求包并进行响应处理。
4.响应处理完毕之后,RS服务器使用自己的公网线路,将响应数据包发送给客户端。源ip地址还是VIP地址(RS节点服务器需要在本地回环接口配置VIP)

##(3)LVS-TUN模式下的负载均衡##

1.实验环境
server1(LB):172.25.67.1
server2(RS):172.25.67.2
server3(RS):172.25.67.3
VIP:172.25.67.100

2.在server1中:
1)配置网络
ip:172.25.67.1
modprobe ipip   #导入模块


ip link set up tunl0   #添加虚拟网卡


ip addr add 172.25.67.100 dev tunl0   #为虚拟网卡设置ip

2)配置yum仓库
vim /etc/yum.repos.d/rhel-source.repo
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.67.250/rhel6.5/LoadBalancer
gpgcheck=0

3)设定策略
yum install ipvsadm -y


/etc/init.d/ipvsadm start #打开服务


ipvsadm -A -t 172.25.67.100:80 -s rr
ipvsadm -a -t 172.25.67.100:80 -r 172.25.67.2:80 -i
ipvsadm -a -t 172.25.67.100:80 -r 172.25.67.3:80 -i
/etc/init.d/ipvsadm save  #保存策略

ipvsadm -ln  #查看策略

3.在server2中:
1)配置网络:
ip:172.25.67.2
modprobe ipip  #打开隧道
ip link set up tunl0  #设定虚拟网卡
ip addr add 172.25.67.100/32 dev tunl0 #为虚拟网卡设定ip

2)安装arptables_jf
yum install arptables_jf -y  #安装服务


arptables -F  #清空策略


arptables -A IN -d 172.25.67.100 -j DROP  #禁止172.25.67.100直接访问
arptables -A OUT -s 172.25.67.100 -j mangle --mangle-ip-s 172.25.67.2  #将响应包要以vip的身份返回给客户端,否则客户端不能接收到响应包


/etc/init.d/arptables_jf save #保存策略


/etc/init.d/arptables_jf restart  #重启服务


arptables -L  #查看策略

3)修改rp_filter:
sysctl -w net.ipv4.conf.tunl0.rp_filter=0
sysctl -a |grep rp_filter

为什么要修改这个参数呢?是因为:
rp_filter参数用于控制系统是否开启对数据包源地址的校验。
有三个值,0、1、2,具体含义:
0:不开启源地址校验。
1:开启严格的反向路径校验。对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包。
2:开启松散的反向路径校验。对每个进来的数据包,校验其源地址是否可达,即反向路径是否能通(通过任意网口),如果反向路径不同,则直接丢弃该数据包。

4)安装httpd并且编写默认发布文件:
yum install httpd -y  #安装httpd服务


/etc/init.d/httpd start #打开httpd服务


vim /var/www/html/index.html #编辑发布文件
<h1>server2</h1>

/etc/init.d/httpd restart #重启httpd


curl localhostm  #查看发布文件是否生效

4.在server3中:
1)配置网络
ip:172.25.67.3
modprobe ipip  #打开隧道
ip link set up tunl0  #设定虚拟网卡
ip addr add 172.25.67.100/32 dev tunl0 #为虚拟网卡设定ip

2)安装arptables_jf
yum install arptables_jf -y  #安装服务


arptables -F  #清空策略
arptables -A IN -d 172.25.67.100 -j DROP
arptables -A OUT -s 172.25.67.100 -j mangle --mangle-ip-s 172.25.67.3
/etc/init.d/arptables_jf save #保存策略


/etc/init.d/arptables_jf restart  #重启服务


arptables -L  #查看策略

3)修改rp_filter:
sysctl -w net.ipv4.conf.tunl0.rp_filter=0


sysctl -a |grep rp_filter

4)安装httpd并且编写默认发布文件:
yum install httpd -y  #安装httpd服务


/etc/init.d/httpd start #打开httpd服务


vim /var/www/html/index.html  #编辑发布文件
<h1>server3</h1>

/etc/init.d/httpd restart #重启httpd


curl localhostm  #查看发布文件是否生效

5.测试:
在客户端测试
ip:172.25.254.67
for i in {1..10};do curl 172.25.67.100;done

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值