centos7之LVS-TUNNEL模式
介绍

优缺点以及适用场景
优点:能负载更多的Realserver减轻LB的压力。LVS和Realserver可以不再同一网段。
缺点:tun模式的开销比较大(出口流量大),性能不如DR模式。不支持端口转发。后端Realserver系统必须支持tunnel协议。
适用:有局域网+广域网负载需求的公司(用的少)
tun模式:隧道模式,以封装数据包为主,原理
1.客户端发送请求给LB
2.LB收到数据包拆包(源ip:CIP 目标ip:VIP),发现是给自己的就收下数据包。
3.LB根据算法(rr wrr)选择合适的RealServer,并建一层隧道把源报文封装进去[外层源ip:DIP(内层源ip:CIP 内层目标ip:VIP)外层目标ip:RIP]发给RS
4.RS收到数据包拆包并还原之前的数据包(源ip:CIP 目标ip:VIP),并把回复的数据加进去直接发给客户端。
1、准备环境

所有主机关闭selinux iptables firwalld
lvs基于四层ip+端口转发,不支持基于url和目录的转发
2、部署lvs
(1) 查看当前隧道模块
# lsmod |grep ipip # 目前是没有的(2) 添加虚拟网卡tunl0并配置vip
# ip addr add 192.168.1.100/32 dev tunl0(3) 再次查看隧道模块已经有了
# lsmod |grep ipip
ipip 13465 0
tunnel4 13252 1 ipip
ip_tunnel 25163 1 ipip(4) 查看新增加的虚拟网卡tunl0,状态为DOWN
# ip addr
5: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state DOWN group default qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0inet 192.168.1.100/32 scope global tunl0valid_lft forever preferred_lft forever(5) 激活虚拟网卡并再次查看虚拟网卡状态为UNKNOWN,通过ifconfig也能看到tunl0网卡了
# ip link set up tunl0
# ip addr
5: tunl0@NONE: <NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000link/ipip 0.0.0.0 brd 0.0.0.0inet 192.168.1.100/32 scope global tunl0valid_lft forever preferred_lft forever
(6) 安装ipvsadm并配置负载均衡
# yum -y install ipvsadm
# ipvsadm -A -t 192.168.1.100:80 -s rr # 创建虚拟服务器并添加vip
# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.23:80 -i -w 1 # 为虚拟服务器添加后端realserver
# ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.24:80 -i -w 1
----------------------------------------------------
-A:添加虚拟服务器
-t: 指定vip和tcp端口
-a: 添加realserver
-r: realserver地址
-i: tunnel模式 -m:nat模式 -g dr模式
-w: 权重(7) 也可以设置基于udp的
# ipvsadm -A -u 192.168.1.100:30005 -s rr
# ipvsadm -a -u 192.168.1.100:30005 -r 192.168.1.11:30005 -i -w 1
# ipvsadm -a -u 192.168.1.100:30005 -r 192.168.1.12:30005 -i -w 1(8) 保存ipvsadm规则并重启
# ipvsadm -Sn > /etc/sysconfig/ipvsadm # 保存规则
# ipvsadm-restore < /etc/sysconfig/ipvsadm # 导入规则
# systemctl restart ipvsadm # 导入规则后才会有ipvsadm.service文件
# systemctl enable ipvsadm(9) 查看lvs状态
# ipvsadm -ln
# ipvsadm -ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 rr-> 192.168.1.23:80 Tunnel 1 0 0 -> 192.168.1.24:80 Tunnel 1 0 0 UDP 192.168.1.100:30005 rr-> 192.168.1.11:30005 Tunnel 1 0 6 -> 192.168.1.12:30005 Tunnel 1 0 6(10)脚本配置
# cat /usr/local/sbin/lvs_tun.sh
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
ipv=/usr/sbin/ipvsadm
vip=192.168.3.229
rs1=192.168.3.225
rs2=192.168.3.226
#注意这里的网卡名字
ifconfig tunl0 $vip broadcast $vip netmask 255.255.255.255 up
# 让vip走虚拟网卡
route add -host $vip dev tunl0
$ipv -C
$ipv -A -t $vip:80 -s rr
$ipv -a -t $vip:80 -r $rs1:80 -i -w 1
$ipv -a -t $vip:80 -r $rs2:80 -i -w 1
3、部署realserver
(1) 配置nginx略(2) 在两台realserver添加tunl0网卡并配置vip
# ip addr add 192.168.1.100/32 dev tunl0
# ip link set up tunl0 # 激活网卡(3) 配置内核关闭arp转发(否则客户端没有经过lvs负载就直接访问到后端realserver的vip上去了)
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
# 关闭地址校验
echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
--------------------------------------------------
rp_filter:默认为1,linux会反向校验来源ip是否从同一张网卡进出,如果不是就会丢弃数据包,而TUNNEL模式是从tunl0网卡进物理网卡出,如果不关闭这个功能会导致数据包被丢弃。(4) 脚本
# cat /usr/local/sbin/lvs_tun_rs.sh
#/bin/bash
vip=192.168.3.229
#把vip绑定在tunl0上,是为了实现rs直接把结果返回给客户端
ifconfig tunl0 $vip broadcast $vip netmask 255.255.255.255 up
# 让vip走虚拟网卡
route add -host $vip tunl0
#以下操作为更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/tunl0/rp_filter
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
4、验证不要在lvs上curl,这样不通,需要通过windows的浏览器访问才行(用linux做客户端测试最好)
相关文章:
centos7之LVS-TUNNEL模式
介绍 优缺点以及适用场景 优点:能负载更多的Realserver减轻LB的压力。LVS和Realserver可以不再同一网段。 缺点:tun模式的开销比较大(出口流量大),性能不如DR模式。不支持端口转发。后端Realserver系统必须支持tunnel协议。 适用ÿ…...
Linux驱动开发(3):字符设备驱动
上一章节我们了解到什么是内核模块,模块的加载卸载详细过程以及内核模块的使用等内容。 本章,我们将学习驱动相关的概念,理解字符设备驱动程序的基本框架,并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点:…...
刘艳兵-DBA023-控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息:
控制文件是Oracle 数据库用来查找数据库文件,控制文件包含以下哪些信息: A 表空间信息 B 创建数据库的时间戳 C 有关数据文件、 联机重做日志文件、和归档重做日志文件的信息 D 数据库名称和数据库唯一标识符(DBID) E RMAN备份…...
Vue Scoped CSS深度解析:原理、误区与最佳实践
引言 在Vue开发中,Scoped CSS是一个强大而复杂的功能。它允许我们将样式限制在特定组件内,但同时也带来了一些细微的行为,可能导致意外的样式"泄漏"。本文将深入探讨Vue Scoped CSS的工作原理,解释常见的误区ÿ…...
744. 寻找比目标字母大的最小字母
目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这…...
浅谈QT中Tab键的切换逻辑
浅谈QT中Tab键的切换逻辑 无意中发现在输入界面中按下Tab键时,没有按照预想的顺序切换焦点事件,如下图所示 这个现象还是很有趣,仔细观察了下,默认的切换顺序是按照控件拖入顺序,那么知道了这个问题想要解决起来就很简…...
基于MoviNet检测视频中危险暴力行为
项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【Faster & Mask R-CNN模型实现啤酒瓶瑕疵检测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生…...
《等保测评:抵御网络威胁的盾牌》
在网络空间的无垠战场上,网络安全威胁如同暗夜之狼,潜伏在每一个角落,随时准备对企业和个人发动致命一击。在这场没有硝烟的战争中,等保测评作为国家网络安全等级保护制度的重要组成部分,犹如坚固的盾牌,为…...
前端必知必会-JavaScript 对象属性
文章目录 JavaScript 对象属性访问 JavaScript 属性添加新属性删除属性嵌套对象 总结 JavaScript 对象属性 对象是无序的属性集合 属性是 JavaScript 对象中最重要的部分。 属性可以更改、添加、删除,有些属性是只读的。 访问 JavaScript 属性 访问对象属性的语…...
双11都有什么值得入手的好物?双十一最建议买的5样东西
双11的脚步逐步渐近,我们点开各大电商平台也可以看到,各个商家已经开始大激烈的促销大战,那么双十一作为一年之中最盛大的购物节,都有什么值得入手的好物呢?今天就给大家建议买的5样东西,从家电好物到生活用…...
Xcode 15.4 运行flutter项目,看不到报错信息详情?
Xcode升级后,遇到了奇怪的事情: 运行flutter项目,左侧栏显示有报错信息,但是点击并没有跳转出具体的error详情。【之前都会自己跳转出来的,升级后真的是无厘头】 方案: 点击左侧导航栏最右边的图标——>…...
AMD开始为基于RDNA的GPU开发自己的神经超采样和去噪技术
NVIDIA 的升级技术已经取得了长足的进步,这些技术解决了现代游戏在开启光线追踪时在苛刻场景中的性能问题。NVIDIA 开始实施各种光线追踪和升级技术后,AMD 和英特尔也紧随其后,推出了自己的 FSR 和 XeSS 升级方法。据报道,AMD 将跟…...
Python中的文件I/O操作
在Python编程中,文件I/O(输入/输出)是一个重要的主题,涉及如何读取和写入文件。无论是处理文本文件还是二进制文件,Python提供了简洁易用的接口。本文将介绍如何在Python中进行文件I/O操作,包括读取、写入和…...
.net framework 3.5sp1开启错误进度条不动如何解决
浏览器地址栏输入www.dnz9.com远程解决netframework问题 在Windows操作系统上安装或启用.NET Framework 3.5 SP1时,如果遇到进度条不动的问题,可能由多种原因引起。以下是一些可能的解决方案: 1. 使用Windows功能对话框 1.打开“控制面板”。…...
什么影响网站的SEO排名
1.多IP多C段配置:海外站群服务器通常提供多IP多C段配置,这使得网站可以拥有多个独立的IP地址,有效避免同一IP下多个网站之间的关联性问题,降低被搜索引擎认为是站群作弊的风险。通过将不同的内容部署在不同的IP地址和C段上&#x…...
css绘制s型(grid)
在之前有通过flex布局实现了s型布局,是通过截取数组形式循环加载数据 这次使用grid直接加载数据通过css实现 <div id"app"><template v-for"(item,inx) in items"><div class"row"><template v-for"(ite…...
【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师
一、ISIS邻居关系条件 1、同一层次(比如Level-2路由器不能和Level-1路由器形成邻居关系) 2、同一区域(L1必须同一区域) 3、同一网段 R1和R2之间分别配置如下IP地址和掩码: R1 的接口S1/0/0掩码为/24 R2的接口S1/0/0配置成掩码/28: 此时R1和R2依然可以建立ISIS邻居关系…...
Word首行空格不显示空格符号问题
Word段落首行空格设置指南 问题描述 在Word中编辑文档时,有时会遇到段落首行敲击空格键却不显示空格的问题。这通常与Word的自动更正设置有关。 解决方法 要解决此问题,需要调整Word的自动更正设置。具体步骤如下: 打开Word的"自动更…...
vue+element上传图片
一、html页面上传图片 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> <…...
用ChatGPT提升工作效率:从理论到实际应用
伴人工智能技术的迅速演进,像ChatGPT这类语言模型已成为提升工作效率的关键工具。这类模型不仅具备处理海量数据的能力,还能自动化许多日常任务,从而提高决策的准确性。本文将深入探讨如何在工作中利用ChatGPT等AI工具提升效率,涵…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
CMS内容管理系统的设计与实现:多站点模式的实现
在一套内容管理系统中,其实有很多站点,比如企业门户网站,产品手册,知识帮助手册等,因此会需要多个站点,甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...
软件工程教学评价
王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...
