LVS实战-IP隧道模式(即TUN模式)配置

发布时间 2023-07-13 17:38:18作者: 往事已成昨天

LVS实战-IP隧道模式(即TUN模式)配置

图片图片

教程每周二、四、六更新

图片
Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
210篇原创内容

首先,让我们看一下通过 IP 隧道的虚拟服务器的图。IP隧道模式与NAT模式最大的不同是IP隧道模式通过IP隧道向真实服务器发送请求,而NAT模式通过网络地址转换向真实服务器发送请求.

图片

当用户访问服务器集群提供的服务时,一个发往VIP(虚拟IP地址)的数据包到达。负载均衡器(LVS服务器或叫DS服务器)检查数据包的目标地址和端口。如果它们与本机服务匹配,则根据连接调度算法从集群中选择一个真实服务器,并将连接添加到记录连接的哈希表中。然后,负载均衡器将数据包封装在 IP 数据报中,并将其转发到选定的服务器。当传入的数据包属于此连接并且可以在哈希表中找到所选服务器时,该数据包将再次封装并转发到该服务器。当服务器收到封装好的数据包后,解封装数据包并处理请求,最后根据自己的路由表将结果直接返回给用户。连接终止或超时后,连接记录将从哈希表中删除。我们还是用上一步准备的环境:
hostnameIP
ds 10.0.0.128(nat)
rs01 10.0.0.62
rs02 10.0.0.63
vip 10.0.0.201
在进行下列配置之前,重启上面的三台服务器,以便清除一些配置,并重新配置rs服务器的网卡。准备环境:
# 所有机器关闭防火墙、关闭selinux(具体命令不再单独列出)

# LVS主机
[root@ds ~]# yum -y install ipvsadm

# RS主机,两个都要做
[root@rs01 ~]# yum -y install nginx
[root@rs01 ~]# echo rs01 > /usr/share/nginx/html/index.html # 修改第二台的时候注意把rs01改成rs02,以便区分
[root@rs01 ~]# systemctl start nginx
[root@rs01 ~]# curl 10.0.0.62
rs01

LVS(ds服务器)服务器配置:

# 给ens33添加ip
[root@ds ~]# ip a add 10.0.0.201/24 dev ens33
[root@ds ~]# ip a
......
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a4:37:31 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.128/24 brd 10.0.0.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 10.0.0.201/24 scope global secondary ens33
       valid_lft forever preferred_lft forever
......

# 开启内核转发
[root@ds ~]# cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@ds ~]# sysctl -p

# 设置LVS转发策略
[root@ds ~]# ipvsadm -A -t 10.0.0.201:80 -s rr
[root@ds ~]# ipvsadm -a -t 10.0.0.201:80 -r 10.0.0.62 -i
[root@ds ~]# ipvsadm -a -t 10.0.0.201:80 -r 10.0.0.63 -i
在RS(真实服务器)服务上(两台都要做):
# 加载隧道模块
[root@rs01 ~]# modprobe ipip
[root@rs01 ~]# ip a add 10.0.0.201/32 dev tunl0
[root@rs01 ~]# ip link set up tunl0
[root@rs01 ~]# ip a
......
4: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ipip 0.0.0.0 brd 0.0.0.0
    inet 10.0.0.201/32 scope global tunl0
       valid_lft forever preferred_lft forever

# 关闭内核反向过滤功能
[root@rs01 ~]# cat /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 0 # 反向路由检查:Reverse Path Filter
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
[root@rs01 ~]# sysctl -p
客户端验证:
[root@m01 ~]# curl 10.0.0.201
rs01
[root@m01 ~]# curl 10.0.0.201
rs02
注意:arp_ignore=1  表示对于网络上发来的arp广播包,realserver将会丢弃,因为如果做出应答,根据arp协议,相当于通告网络上其它主机VIP对应的Mac地址是realserver的Mac地址,而不是LB的Mac地址,这样客户端就会绕过lvs,直接与后端的realserver通信,负载调度就失去了意义。arp_announce=2  定义将自己的地址向外通告时的级别 。2表示仅向与本地接口上(ens33)地址匹配的网络进行通告

 


 

雷哥开通了抖音(云计算雷哥)和微信视频号,求关注!!!和大家一起学习 技术!

图片

推荐阅读

 

《一站式教程之集群架构》:

LVS - 基础知识

LVS基本原理及工作模式(1)

LVS-IP隧道模式和DR模式(2)

LVS调度算法

LVS部署

ipvsadm命令

 

 

 

看完本文有收获?请分享给更多人

推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
210篇原创内容

图片


图片

 

Cloud研习社
收录于合集 #一站式教程
 259
上一篇LVS实战-NAT模式配置
阅读 100