Tum模式
Server1
[root@server1 ~]# modprobe ipip
[root@server1 ~]# ip addr add 172.25.77.100/24 dev tunl0
[root@server1 ~]# ip link set up tunl0
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -A -t 172.25.177.100:80 -s rr
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@server1 ~]# ipvsadm -A -t 172.25.77.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.77.100:80 -r 172.25.77.2:80 -i
[root@server1 ~]# ipvsadm -a -t 172.25.77.100:80 -r 172.25.77.3:80 -i
[root@server1 ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.77.100:http rr
-> server2:http Tunnel 1 0 0
-> server3:http Tunnel 1 0 0
[root@server1 ~]# route add -host 172.25.77.100 dev tunl0
Server2
[root@server2 ~]# modprobe ipip
[root@server2 ~]# ip link set up tunl0
[root@server2 ~]# ip addr add 172.25.77.100/24 dev tunl0
[root@server2 ~]# route add -host 172.25.77.100 dev tunl0
[root@server2 ~]# sysctl -a | grep rp_filter
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
[root@server2 ~]# /etc/init.d/arptables_jf start
[root@server2 ~]# /etc/init.d/httpd start
[root@server2 ~]# vim /etc/sysctl.conf
[root@server2 ~]# echo '0' > /proc/sys/net/ipv4/ip_forward
[root@server2 ~]# sysctl -p
[root@server2 ~]# sysctl -a | grep rp_filter
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth0.arp_filter = 0
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.tunl0.arp_filter = 0
写入配置文件
[root@server2 ~]# arptables -L
Chain IN (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
DROP anywhere 172.25.77.100 anywhere anywhere any any any any
DROP anywhere 172.25.77.100 anywhere anywhere any any any any
Chain OUT (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
mangle 172.25.77.100 anywhere anywhere anywhere any any any any --mangle-ip-s server2
mangle 172.25.77.100 anywhere anywhere anywhere any any any any --mangle-ip-s server2
Chain FORWARD (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
Server3 同理
[root@server3 ~]# sysctl -p
[root@server3 ~]# arptables -L
Chain IN (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
DROP anywhere 172.25.77.100 anywhere anywhere any any any any
DROP anywhere 172.25.77.100 anywhere anywhere any any any any
Chain OUT (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
mangle 172.25.77.100 anywhere anywhere anywhere any any any any --mangle-ip-s server2
mangle 172.25.77.100 anywhere anywhere anywhere any any any any --mangle-ip-s www.westos.org
Chain FORWARD (policy ACCEPT)
target source-ip destination-ip source-hw destination-hw hlen op hrd pro
客户端
[root@foundation77 ~]# curl 172.25.77.100
www.westos.org - server2
[root@foundation77 ~]# curl 172.25.77.100
www.westos.org - server 3
NAT/DR/IPIP比较 | |||
模式与特点 | NAT模式 | IPIP模式 | DR模式 |
对服务器的要求 | 服务节点可以使任何操作系统 | 必须支持IP隧道,目前只有Linux系统支持 | 服务器节点支持虚拟网卡设备,能够禁用设备的ARP响应 |
网络要求 | 拥有私有IP地址的局域网络 | 拥有合法IP地址的局域,网或广域网 | 拥有合法IP地址的局域,服务器节点与负载均衡器必须在同一个网段 |
通常支持节点数量 | 10到20个,根据负载均衡器的处理能力而定 | 较高,可以支持100个服务节点 | 较高,可以支持100个服务节点 |
网关 | 负载均衡器为服务器节点网关 | 服务器的节点同自己的网关或者路由器连接,不经过负载均衡器 | 服务节点同自己的网关或者路由器连接,不经过负载均衡器 |
服务节点安全性 | 较好,采用内部IP,服务节点隐蔽 | 较差,采用公用IP地址,节点安全暴露 | 较差,采用公用IP地址,节点安全暴露 |
IP要求 | 仅需要一个合法的IP地址作为VIP地址 | 除了VIPO地址外,每个服务器界定啊需要拥有合法的IP地址,可以直接从路由到客户端 | 除了VIP外,每个服务节点需拥有合法的IP地址,可以直接从路由到客户端 |
特点 | 地址转换 | 封装IP | 修改MAC地址 |
配置复杂度 | 简单 | 复杂 | 复杂 |
TUN模式的概述与工作原理
TUN模式服务概述:
IP Tunneling(IP隧道) --可以在不同地域,不同网段
Director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意丿。服务器必须拥有正式的公网IP地址用于不客户机直接通信,并且所有服务器必须支持IP隧道协议。
LVS DR 模式工作原理: 封装IP
virtual server via ip tunneling模式:采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道广播转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
VS/TUN 的工作流程图如下所示,它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。
Tunnel原理流程图:
DR方式是通过MAC,规模是一个交换网络。而TUN方式,是通过给数据包加上新的IP头部来实现
一:实验目标
1:正确理解TUN的工作原理
2:使用LVS+TUN搭建集群实现负载均衡
3:使用webbench测试LVS-TUN集群性能