lvs/TUN模式:
1.隧道模式原理
图解:
原理简述:
LVS-TUN模式:它的连接调度和管理与VS/NAT中的一样,利用ip隧道技术的原理,即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息,
不改变原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将请求发给RS server,不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。
2.TUN模式优缺点
优点:
1.不需要调度应答报文,负载能力强;
2.服务器和调度器可以不在同一个VLAN中;
3.支持广域负载均衡;
缺点:
所有的服务器必须支持“IP Tunneling”协议,需安装内核模块,安装复杂;
建立IP隧道的开销大;
服务器需要联通外网,风险较大;
不支持端口映射;
实验环境:
vs: server1 172.25.66.1
rs: server2 172.25.66.2
rs: server3 172.25.66.3
轮叫机制(轮询)
1.配置虚拟服务器(vs)
# 先将之前添加的策略清除,-C表示clean
[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
#1.添加模块
[root@server1 ~]# modprobe ipip
# 查看网卡配置,可查看到隧道可接口:tunl0
[root@server1 ~]# ip addr
#2. 将vip移动到隧道接口上
# 1).先将vip从eth1网卡上摘除
[root@server1 ~]# ip addr del 172.25.66.100/24 dev eth1
[root@server1 ~]# ip addr
# 2).再将vip添加到隧道接口上
[root@server1 ~]# ip addr add 172.25.66.100/24 dev tunl0
[root@server1 ~]# ip addr
#3.添加策略
# 1).先添加vip和算法 ,rr表表示调度算法
[root@server1 ~]# ipvsadm -A -t 172.25.66.100:80 -s rr
# 2).再添加真实ip
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.2:80 -i
[root@server1 ~]# ipvsadm -a -t 172.25.66.100:80 -r 172.25.66.3:80 -i
#查看策略
[root@server1 ~]# ipvsadm -ln
2.配置真实服务器(rs)
在server2上:
#1.查看是否安装了apache,若是没有需要安装
[root@server2 ~]# rpm -q httpd httpd-2.2.15-29.el6_4.x86_64
#2.编写apahce默认发布文件
[root@server2 ~]# cat /var/www/html/index.html
<h1>www.westos.org ---- server2</h1>
#3.导入隧道模块
[root@server2 ~]# modprobe ipip
# 查看到隧道接口:tunl0
[root@server2 ~]# ip addr show
#4.将vip移动到隧道接口:tunl0
# 1).将vip从eth1网卡上摘除
[root@server2 ~]# ip addr del 172.25.66.100/32 dev eth1
# 2).将vip添加到隧道接口上
[root@server2 ~]# ip addr add 172.25.66.100/32 dev tunl0
#查看ip,发现隧道接口的状态未DOWN
[root@server2 ~]# ip addr show
#5.激活隧道接口
[root@server2 ~]# ip link set up tunl0
#查看反向过滤规则
[root@server2 ~]# sysctl -a | grep rp_filter
#6.关闭反向过滤规则
[root@server2 ~]# sysctl -w net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.rp_filter = 0
[root@server2 ~]# sysctl -w net.ipv4.conf.lo.rp_filter=0
net.ipv4.conf.lo.rp_filter = 0
[root@server2 ~]# sysctl -w net.ipv4.conf.eth1.rp_filter=0
net.ipv4.conf.eth1.rp_filter = 0
[root@server2 ~]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0
net.ipv4.conf.tunl0.rp_filter = 0
#7.刷新配置,使其生效
[root@server2 ~]# sysctl -p
#再次查看反向过滤规则,发现有一个未生效
[root@server2 ~]# sysctl -a | grep rp_filter
#此时需要直接在文件中更改
[root@server2 ~]# vim /etc/sysctl.conf
#################
10 net.ipv4.conf.default.rp_filter = 0 #关闭规则(0表示关闭,1表示开启)
#刷新配置,使其生效
[root@server2 ~]# sysctl -p
# 再次查看反向过滤规则,此时所有的规则均关闭
[root@server2 ~]# sysctl -a | grep rp_filter
在server3上:
#1.查看是否安装了apache,若是没有需要安装
[root@server3 ~]# rpm -q httpd httpd-2.2.15-29.el6_4.x86_64
#2.编写apahce默认发布文件
[root@server3 ~]# cat /var/www/html/index.html
<h1>www.westos.org ---- server3</h1>
# 3.导入隧道模块
[root@server3 ~]# modprobe ipip
# 4.添加策略
[root@server3 ~]# ip addr del 172.25.66.100/32 dev eth1
[root@server3 ~]# ip addr add 172.25.66.100/32 dev tunl0
[root@server3 ~]# ip addr show
#5.激活隧道接口
[root@server3 ~]# ip link set up tunl0
#6.关闭反向过滤规则
[root@server3 ~]# sysctl -a | grep rp_filter
[root@server3 ~]# sysctl -w net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.rp_filter = 0
[root@server3 ~]# sysctl -w net.ipv4.conf.lo.rp_filter=0
net.ipv4.conf.lo.rp_filter = 0
[root@server3 ~]# sysctl -w net.ipv4.conf.eth1.rp_filter=0
net.ipv4.conf.eth1.rp_filter = 0
[root@server3 ~]# sysctl -w net.ipv4.conf.tunl0.rp_filter=0
net.ipv4.conf.tunl0.rp_filter = 0
[root@server3 ~]# sysctl -p
[root@server3 ~]# sysctl -a | grep rp_filter
[root@server3 ~]# vim /etc/sysctl.conf
#################
10 net.ipv4.conf.default.rp_filter = 0
#7.刷新配置,使其生效
[root@server3 ~]# sysctl -p
[root@server3 ~]# sysctl -a | grep rp_filter
测试:
发现当访问vip时,交替访问server2和server3两个后端服务器,即实现了轮询
[root@foundation66 ~]# curl 172.25.66.100
<h1>www.westos.org ---- server3</h1>
[root@foundation66 ~]# curl 172.25.66.100
<h1>www.westos.org ---- server2</h1>
[root@foundation66 ~]# curl 172.25.66.100
<h1>www.westos.org ---- server3</h1>
[root@foundation66 ~]# curl 172.25.66.100
<h1>www.westos.org ---- server2</h1>