您的位置:首页 > 其它

LVS-TUN模式负载均衡构建配置

2018-08-13 14:45 417 查看

过程(用IP隧道技术实现虚拟服务器)

Client->VS->RS->client
采用NAT技术时,由于请求和响应都需要通过调度器进行地址的改写,那么当客户端的请求越来越多的时候,调度器的处理能力就会成为一个瓶颈。为了解决这个问题,调度器通过IP隧道,将客户端的请求通过IP隧道,发送给真实的服务器,服务器处理完请求之后,将响应请求的IP改为调度器的IP,然后将响应报文发送给客户端。

原理详情:
1.客户请求数据包,目标地址VIP(调度器的IP地址)发送到调度器上
2.调度器接收到客户请求包,进行IP Tunnel封装,在原有的包头加上IP Tunnel的包头,然后发送给服务器
3.服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有调度器和服务器之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理
4.响应处理完毕之后,服务器使用自己的出公网的线路,将这个响应数据包发送给客户端,源IP地址还是VIP地址

实验环境

iptables和selinux关闭
redhat6.5
VS:server1 172.25.35.51 VIP:172.25.35.61
RS:server2 172.25.35.52 VIP:172.25.35.61
RS:server3 172.25.35.53 VIP:172.25.35.61

VS:
[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0  //添加vip,内容如下

[root@server1 ~]# /etc/init.d/network restart  //重启网络
[root@server1 ~]# ipvsadm -C  //清除所有策略
[root@server1 ~]# ipvsadm -A -t 172.25.35.61:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.35.61:80 -r 172.25.35.53 -i
//-i 表示隧道模式
[root@server1 ~]# ipvsadm -a -t 172.25.35.61:80 -r 172.25.35.52 -i
[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.35.61:80 rr
-> 172.25.35.52:80              Tunnel  1      0          0
-> 172.25.35.53:80              Tunnel  1      0          0
[root@server1 ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
//临时开启:sysctl -w net.ipv4.ip_forward=1
RS:(server2、server3操作相同)
server2:
[root@server2 network-scripts]# modprobe ipip
//也可以在VS执行此命令,加载隧道模块生成tunl0,给tunl0添加vip
[root@server2 network-scripts]# ifconfig -a
tunl0     Link encap:IPIP Tunnel  HWaddr
[root@server2 network-scripts]# lsmod | grep ipip
ipip                    8371  0
tunnel4                 2943  1 ipip
[root@server2 network-scripts]# vim ifcfg-tunl0
//当临时添加vip时也需要激活tunl0
DEVICE=tunl0
IPADDR=172.25.35.61
NETMASK=255.255.255.0
ONBOOT=yes
NAME=tunl0
[root@server2 network-scripts]# /etc/init.d/network restart
[root@server2 network-scripts]# vim /etc/sysctl.conf
//arp抑制,保证客户不会访问到,只有调度器正常响应
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0  //没有走正常接口就忽略
//临时开启:sysctl -w net.ipv4.tunl0.rp_filter=0
[root@server2 network-scripts]# sysctl -p
[root@server2 network-scripts]# echo '0'>/proc/sys/net/ipv4/ip_forward
[root@server2 network-scripts]# cat /var/www/html/index.html
www.westos.org-Server2
[root@server2 network-scripts]# /etc/init.d/httpd start

server3:步骤与server2相同
[root@server3 ~]# cat /var/www/html/index.html
www.westos.org
[root@server3 ~]# /etc/init.d/httpd start
客户端测试:

发生轮询

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: