####企业——LVS-TUN模式负载均衡构建配置###
client ->vs ->Rs -> client ##隧道模式
IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。
1.LVS-TUN简介
LVS是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核完成的,所以相对反向代理服务器来说,性能一般会高一些
TUN是IP Tunneling,IP隧道的简称,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给应用服务器,然后世纪服务器的返回数据,将不通过调度器,而将直接返回给用户
2.原理详情
(1)客户请求数据包,目的地址VIP(调度器的IP地址)发送到调度器上
(2)调度器接收到客户请求包,进行IP Tunnel封装,在原有的报文上添加新的报文,然后发送给服务器
(3)服务器根据新添加的报文收到请求包,然后解开IP Tunnel信息,得到客户的请求包并且进行响应处理
(4)响应处理完毕后,服务器使用自己的公网路线,将这个响应数据包发送给客户端,源IP地址还是VIP地址
3.实验环境
iptables和selinux关闭
rhel6.5
VS: vm1 172.25.254.1 隧道的IP:172.25.254.100
RS: vm2 172.25.254.2
RS: vm3 172.25.254.3
上一个LVS—DR模式的VIP可能会有影响,因此需要删除原有的VIP。或者是添加新的模块 modprobe ipip
<1>VS
(1)配置网络
vim /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR1=172.25.254.1
/etc/init.d/network restart
(2)开启ipvsadm服务,添加隧道
ip addr add 172.25.254.100/24 dev tunl0 ##添加隧道,并且为隧道添加对外暴露的VIP。
ip link set up tunl0 ##激活隧道
/etc/init.d/ipvsadm start
ipvsadm -ln ##查看现有的LVS的策略
ipvsadm -C ##清除现有的LVS策略
ipvsadm -ln
为 server1 (即LVS调度器)重新添加策略
pvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -i ## -i 表示隧道模式
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -i ## -i 表示隧道模式
ipvsadm -ln ##查看新加入的策略
vim /etc/sysctl.conf ##开启地址转换功能
net.ipv4.ip_forward = 1
sysctl -p
<2>RS
vm2,3上的操作都是一样的
ip addr add 172.25.0.1/24 dev tun10 ##添加隧道
ip link set up dev tun10 ##开启隧道
sysctl -a |grep rp_filter ##关闭反向,将参数为1的都改为0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 1
net.ipv4.conf.tunl0.arp_filter = 0
sysctl -w net.ipv4.conf.default.rp_filter=0 ##修改参数的命令
vim /etc/sysctl.conf ##重新加载后,有一个参数始终不为0,需要在文件中修改
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
sysctl -p ## 使修改的参数生效
vim /var/www/html/index.html
<h1>vm2/3-westos.com</h1>
/etc/init.d/httpd start
<3>客户端测试
curl 172.25.0.1 ##出现轮询的效果
<h1>vm2-westos.com</h1>
<h1>vm3-westos.com</h1>