负载均衡集群——lvs的TUN模式(隧道模式)详细介绍
一、TUN模式(隧道模式)工作原理
(1)IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行第二次封装,这样这个报文就可以发送到一个指定的目标主机上;
(2)VS/TUN模式下,调度器和后端服务器组之间使用IP隧道技术。当客户端发送的请求(CIP–>VIP)被director接收后,director修改该报文,加上IP隧道两端的IP地址作为新的源和目标地址,并将请求转发给后端被选中的一个目标;
(3)当后端服务器接收到报文后,首先解封报文得到原有的CIP–>VIP,该后端服务器发现自身的tun接口上配置了VIP,因此接受该数据包。
(4)当请求处理完成后,结果将不会重新交给director,而是直接返回给客户端;在后端服务器返回给客户端数据包时,由于使用的是普通网卡接口,根据一般的路由条目,源IP地址将是该网卡接口上的地址,例如是RIP。因此,要让响应数据包的源IP为VIP,必须添加一条特殊的路由条目,明确指定该路由的源地址是VIP。
Client --> DS(调度器) -->prerouting --> INPUT -->postrouting -->RS(真正的服务器)–>lo 回环接口–> 网卡ens33 -->Client
二、访问服务器的详细流程:
数据包从客户端发往DS服务器,DS服务器会根据调度策略确定要把客户端的请求发给哪台RS,此时会在数据包外面再加一层IP报头;此时源IP从CIP(192.168.1.55)变为了VIP(192.168.1.100);目的IP从VIP(192.168.1.100)变为了RIP(192.168.1.22/33),数据包的请求来源就是DS调度器(192.168.1.100);请求的目的地是RS(192.168.1.22/33),RS在接收到数据包之后,请求包的来源本来是CIP(192.168.1.55);但是加了一层数据包之后变为了VIP(192.168.1.100),而RS服务器上也有(192.168.1.100)这个ip;所以RS会把IP包的报头拆开,拆开发现请求的数据包访问的还是自己的ip(192.168.1.22/33);这时RS就会回复客户端的请求(跟DR模式类似,只不过多加了一层IP报头,封装IP守护)
IP隧道技术又称为IP封装技术,它可以将带有源和目标IP地址的数据报文使用新的源和目标IP进行二次封;这样这个报文就可以发送到一个指定的目标主机上。
三、TUN模式中的名词解释
DS 调度器,lvs的前端设备
RS 真正提供服务的后端服务器
RIP 后端服务器的ip地址
DIP 调度器和后端服务器通信的ip
源IP CIP(客户端的IP)
目的IP VIP(设置的统一入口),对外公布的ip,客户请求进来的ip
四、搭建实验环境
实验环境
三台虚拟机+一台真实主机
1台做lvs调度器,两台做后端轮询的web服务器,用真机分别连接三台虚拟机,真机本身是客户端
主机名称 ip 功能
server1 192.168.1.11 lvs调度器 DS
server2 192.168.1.22 [apache]后端web服务器1 RS
server3 192.168.1.33 [apache]后端web服务器2 RS
localhost 192.168.1.55 客户端(client)
五、搭建lvs调度器的TUN模式
在server1上:
ipvsadm -C 清除DR模式的策略
ipvsadm -L 查看策略
[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@server1 ~]# modprobe ipip 加入隧道模块
[root@server1 ~]# ip a 查看多了一块网卡
[root@server1 ~]# ip addr add 192.168.1.100/24 dev tunl0 添加ip临时添加
[root@server1 ~]# ip link set up tunl0 是网卡生效
在隧道模式里面添加策略:
ipvsadm -A -t 192.168.1.100:80 -s rr 设置轮询调度
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.22:80 -i 表示隧道模式,轮询web服务器1
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.33:80 -i 表示隧道模式,轮询web服务器2
systemctl restart ipvsadm.service重启服务生效
cat /etc/sysonfig/ipvsadm查看策略文件
server2/3相同操作
[root@server2 ~]# modprobe ipip 加入隧道模块
[root@server2 ~]# ip a 查看多了一块网卡
[root@server2 ~]# ip addr add 192.168.1.100/24 dev tunl0 添加ip临时添加
[root@server2 ~]# ip link set up tunl0 是网卡生效
在server2(web2)和server(web3)上面分别修改反向过滤规则,防止丢包
系统会对流入的数据包进行反向路径校验,入包的数据是100,如果出包的数据不是100
这个数据就会被丢弃,所以我们要消除反向过滤的影响,将=1的项都设置为0
关闭反向过滤规则,是为了防止web服务器不认识发来的拆包后的源ip把数据包给丢掉,导致web服务器丢包,客户端访问不到数据
因为隧道模式实现的是不同网段的主机进行通信,如果信息要从服务端返回到客户端时
由于客户端和服务端不在同一个网段,数据根本出不去,所以我们需要关闭反向参数检验
0:不开启源地址校验
1:开启严格的反向路径校验
对每个进来的数据包,校验其反向路径是否是最佳路径。如果反向路径不是最佳路径,则直接丢弃该数据包
server2/3相同设置
sysctl -a | grep rp_filter查看过滤表将所有的过滤规则都关闭
sysctl -w 规则=0
sysctl -p 必须使设置生效
sysctl -a | grep rp_filter再次查看
主机测试(清除缓存)
主机测试
负载均衡集群——lvs的TUN模式(隧道模式)详细介绍相关推荐
- 企业级负载均衡集群——lvs的TUN模式(隧道模式)详细说明
1.TUN模式的工作原理 TUN模式简称隧道模式,隧道模式就是修改请求报文的首部IP,再加一层IP报头 优点:DS和RS不需要在同一网段,可以实现不同网络之间的访问 数据流向如下 数据包从客户端发往D ...
- LB负载均衡集群--LVS
LB集群: LB集群是load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.keepalived ,商业的硬件负载设备F5.Netscale. ...
- 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
1.DR模式的原理 其实就是在一台主机上面搭建lvs服务器,设置lvs的工作模式是DR模式,lvs仅仅是一个调度器,它会把客户端的请求转发给后备服务器 DR模式直接由后备服务器把数据返回给客户端,不需 ...
- 负载均衡集群LVS模式之DR模型
在NAT模型下,director的工作能力是很有限的,每个用户访问服务器时,都要先访问director,在一定的范围内director可以承受,但超出这个范围director就无能为力,在较大规模应用 ...
- LB负载均衡集群 - NAT
前提: 客户机 : eth0 192.168.0.200 eth1 192.168.205.129 dir主机: eth0 192.168.0.166 eth1 1 ...
- LVS负载均衡集群介绍(4种工作模式10种调度算法)
文章目录 集群简介 集群的特点 集群的分类 负载均衡 负载均衡集群技术的实现 负载均衡分类 四层负载均衡(基于IP+端口的负载均衡) 七层的负载均衡(基于虚拟的URL或主机IP的负载均衡) 高可用性集 ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、 LVS NAT模式搭建
负载均衡集群介绍 LVS介绍 lvs的NAT模式介绍 这种模式借助iptables的nat表来实现,用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的服务器上去,这些服务 ...
- 18.6 负载均衡集群介绍 18.7 LVS介绍 18.8 LVS调度算法 18.9/18.10 LVS NAT模式搭建
2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 实现负载均衡集群的软件有:LVS.Keepalived.Nginx.haproxy等.其中LVS属 ...
- 负载均衡集群介绍LVS介绍LVS调度算法LVS NAT模式搭建
2019独角兽企业重金招聘Python工程师标准>>> 18.6 负载均衡集群介绍 • 主流开源软件LVS.keepalived.haproxy.nginx等 • 其中LVS属于4层 ...
最新文章
- [J2ME]Nokia播放音乐时发生MediaException的解决办法
- Hadoop集群搭建(27)
- 用PHP实现丢手帕问题(约瑟夫问题)
- STM32——ADC
- 吴恩达机器学习 2.矩阵和向量知识
- 反斜杠在C/C++中的作用
- PHP APM 对比评测:OneAPM, New Relic, 听云
- oc快速生成单例头文件解析
- 数据结构——八大排序算法(面试必备)
- 深入浅出、通俗易懂的讲解CAN bus。
- Webhacking.kr writeup(更新至challenge 29)
- 1~3年产品经理经典面试题
- 台式电脑计算机打开的快捷键,台式机u盘装系统按f几|台式电脑u盘装系统快捷键是哪个...
- 百度云平台BAE空间申请
- Kamiya艾美捷抗胸腺嘧啶二聚体单抗(环丁烷嘧啶二聚体CPD)说明书
- 计算机网络 理解流量控制与SACK机制
- 开发一个从磁力链取得影片截图的命令行工具
- js 返回页面顶部的实现( layui)
- HD1201 18岁生日
- 利用ArcGIS制作圈层分布图(以某一点作为中心)
热门文章
- C++文件和文件夹选择
- 免费×××帐号 送送送
- HVS人眼视觉系统(Human Visual System)
- docker linux 快速开窗口_Linux下Docker快速部署LAMP
- FEELM利用能源管理系统建设绿色工厂,减少500吨碳排放
- 构建高质量充电基础设施,快电精细运营提升充电保障能力
- MinGW/MSYS development environment
- 关于测试遇到的initializationerror:method initializationerror not found,根据保持分两种情况
- 是什么,夺走了我的时间?(2021年1月总结)
- 分手后,我依然祝你幸福