负载均衡LVS集群之TUN模式搭建

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)

扫描二维码关注公众号,回复: 5352060 查看本文章

在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>

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/86653713