LVS集群TUN模式

LVS/TUN

LVS-Tun模型原理

在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)

LVS-Tun模型过程

(a) 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP 。
(b) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
(c) IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。然后发至POSTROUTING链。 此时源IP为DIP,目标IP为RIP
(d) POSTROUTING链根据最新封装的IP报文,将数据包发至RS(因为在外层封装多了一层IP首部,所以可以理解为此时通过隧道传输)。 此时源IP为DIP,目标IP为RIP
(e) RS 接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时 RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP
(f) 响应报文最终送达至客户端

LVS-Tun模型特性

  • RIP、VIP、DIP全是公网地址

  • RS的网关不会也不可能指向DIP

  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server

  • 不支持端口映射

  • RS的系统必须支持隧道

LVS-Tun模型优点
Director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。 

LVS-Tun模型部署

实验环境:
一台Director:server1
版本:Red Hat Enterprise Linux Server release 6.5
单网卡:eth0:172.25.81.1/24
两台RealServer:
Server2:172.25.81.2/24
Server3:172.25.81.3/24
一台Client: 172.25.81.250

实验步骤:

server1配置:

在主机的yum源进行扩展的基础上,安装过ipvsadm

<1>加载ipip模块

[root@server1 ~]# modprobe ipip

在加载好ipip模块查看ip就会有默认的tunl0隧道

<2>添加ip并开启tunl0设备

[root@server1 ~]# ip addr add 172.25.81.100/24 dev tunl0
[root@server1 ~]# ip link set up tunl0

注:该tunl0设备的删除:

[root@server1 ~]# modprobe -r ipip

<3>添加ipvsadm策略

[root@server1 ~]# ipvsadm -A -t 172.25.81.100:80 -s rr  ##添加地址为172.25.81.100:80的虚拟服务,指定调度算法为轮循

[root@server1 ~]# ipvsadm -a -t 172.25.81.100:80 -r 172.25.81.2:80 -i   ## 添加真实服务器,指定传输模式为隧道模式

[root@server1 ~]# ipvsadm -a -t 172.25.81.100:80 -r 172.25.81.3:80 -i   ##添加真实服务器,指定传输模式为隧道模式

真实服务器server2配置:

<1>加载ipip模块

 

<2>添加ip并开启tunl0设备

[root@server2 ~]# ip addr add 172.25.81.100/24 dev tunl0
[root@server2 ~]# ip link set up tunl0

<3>禁止反向过滤机制

[root@server2 ~]# 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        ##该项需要修改配置文件/etc/sysctl.conf才能修改
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

[root@server2 ~]# sysctl -w net.ipv4.conf.lo.rp_filter=0

[root@server2 ~]# sysctl -w net.ipv4.conf.eth0.rp_filter=0

[root@server2 ~]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0

[root@server2 ~]# sysctl -p   ##刷新内核参数,使修改生效

[root@server2 ~]# vim /etc/sysctl.conf

[root@server2 ~]# sysctl -p

修改结果:

<4>开启arp策略

<5>开启httpd服务

 

真实服务器server3配置:

<1>加载ipip模块

<2>添加ip并开启tunl0设备

[root@server3 ~]# ip addr add 172.25.81.100/32 dev tunl0
[root@server3 ~]# ip link set up tunl0

<3>禁止反向过滤机制

[root@server3 ~]# 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        ##该项需要修改配置文件/etc/sysctl.conf才能修改
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

[root@server3 ~]# sysctl -w net.ipv4.conf.lo.rp_filter=0

[root@server3 ~]# sysctl -w net.ipv4.conf.eth0.rp_filter=0

[root@server3 ~]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0

[root@server3 ~]# vim /etc/sysctl.conf

[root@server3 ~]# sysctl -p

修改结果:

<4>开启arp策略

<5>开启httpd服务

客户端测试:

调度器调度情况查询:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值