负载均衡| VS/TUN模式

VS/TUN
它的连接调度和管理与 VS/NAT 中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负
载情况,动态地选择一台服务器,将请求报文封装在另一个 IP 报文中,再将封装后的 IP 报文转发给
选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 VIP 的报文,服务器发现 VIP
地址被配置在本 地的 IP 隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给
客户。
在 VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应
答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台
以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有
100Mbps 的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN 可以极大地增加负载调度器调度的服务器数量。VS/TUN 调度器可以调度上百台服务器,而它本身不会成
为系统的瓶颈,可以 用来构建高性能的超级服务器。

 

1,调度器设置

如果是双网卡,删除一个

把之前eth1上的ip删除,然后ip link set down eth1 或者直接在虚拟机管理器上面删除网卡

Load Balance:172.25.28.1

Virtual IP: 172.25.28.100

2,vm2,vm3

如果有网关删除网关,临时添加的网关重启网络网关就消失了

或者route del default gw 172.25.28.1

Realserver1: 172.25.28.2

Realserver1: 172.25.28.3

2,先在vm2,vm3上启动抑制

vm2,vm3安装arptables_jf  

添加策略(arptables -nL查看策略)

arptables -A IN -d 172.25.28.100 -j DROP    ##不缓存ip的MAC地址

arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.2 ##mangle是转换

vm3同vm2

保存策略(否则是一次性的)

/etc/init.d/arptables_jf save

3,rp_filter设置

vm2,vm3

永久修改在vim /etc/sysctl.conf

2,所有服务器都加载模块,**隧道ip

vm1.vm2,vm3

modprobe ipip 加载隧道模块,ip addr出现tunl0网卡

Linux系统内核实现的IP隧道技术主要有三种(PPP、PPTP和L2TP等协议或软件不是基于内核模块的):ipip、gre、sit 。这三种隧道技术都需要内核模块 tunnel4.ko 的支持。ipip 需要内核模块 ipip.ko ,该方式最为简单!但是你不能通过IP-in-IP隧道转发广播或者IPv6数据包。你只是连接了两个一般情况下无法直接通讯的IPv4网络而已。至于兼容性,这部分代码已经有很长一段历史了,它的兼容性可以上溯到1.3版的内核。据网上查到信息,Linux的IP-in-IP隧道不能与其他操作系统或路由器互相通讯。它很简单,也很有效。

ip link set up tunl0 #启用网卡

ip addr add 172.25.28.100/24 dev tunl0 #给网卡添加ip

4,vm1写入策略

ipvsadm -A -t 172.25.28.100:80 -s rr

ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.2:80 -i  #-m表示tun模型

ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.3:80 -i

 

5,客户端访问测试

curl 172.25.28.100