LVS集群-DR模式
概念:
LVS-DR模式,也是最常用的lVS负载方式,DR DIRECT ROUTING 直接路由模式

负载均衡器lVS调度器,只负责请求和转发到后端的真实服务器,但是影响结果,由后端服务器直接转发给客户端,不需要经过调度器处理,减轻lVS调度器的负担,提高了性能得出稳定性
简略图:lVS-DR数据流向

lVS-DR模式的工作原理:
- 客户端会发送请求到vip
- lVS的调度器接受请求之后,根据算法选择一台真实的服务器,请求转发到后端RS,会把请求报文的目的mac地址,修改成后端真实服务器的Mac地址,转发
- 后端真实服务器接受请求,处理完成之后,由于后端 服务器直接把响应结果转发给客户端,响应报文中的目的Mac地址修改成客户端的Mac地址,直接把响应的报文转发发给客户端
- 调度器,后端真实服务器都有vip地址,调度器的地址和后端真实服务器在同一网段
详细的工作流程:
它记住了双方的Mac地址,可直接转发到后端客户端,根据Mac地址来就那些转发数据包,只能在同一网段转发

DR模式的特点:
- 调度器的ip和真实服务器的IP必须在同一个物理网络中
- 真实的服务器的IP地址可以是私有地址,也可以是工有地址。如果配置是公网,通过互联网可直接访问PIP
- 调度器只作为入口,但是不做网关,需要把服务器的转发功能关闭
- 后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器
- 后端的真实服务器上,基于LO接口配置vip的IP地址
复习一下:ARP协议:网络层协议,将IP地址解析为物理Mac地址
ARP请求:主机A和主机B

ARP的核心:解决局域网内部电的通信,IP地址和MAC地址的映射

DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网内部通信
常见的问题:
问题一:
由于调度器和后端真实的服务器都有相同的vip地址,导致响应冲突,ARP通信紊乱
对真实服务器进行处理,真实服务器不响应针对vip的ARP的请求
Vip地址使用的LO的虚拟地址:arp_ignore=1
后端的真实服务器只响应目的IP为本地IP,也就是RIP,后端服务器的真实IP地址,ens33的网卡提供的地址
问题二:
返回报文使用的源地址还是vip地址,调度器也是vip怎么把响应返回到客户端不经过调度器呢
后端的真实服务器做一个内核参数的优化:arp_announce=2 系统优化的意义,系统不使用IP数据包的源地址来设置arp请求,而是用真实的物理网卡

实验:如何实现DR模式的负载均衡
Test1 20.0.0.51 调度器
Test2 20.0.0.52 web集群1
Test3 20.0.0.53 web集群2
Test4 NFS
Vip地址:20.0.0.54
客户端:随机选择
首先来到调度机

配置vip地址

关闭重定向的参数
![]()

调度器的内核优化
net.ipv4.ip_forward = 0
关闭服务器作为网关的转发功能
net.ipv4.conf.all.send_redirects = 0
控制是否发送ICMP的重定向消息,禁止重定向
net.ipv4.conf.default.send_redirects = 0
禁止默认网络接口,就是调度器的网卡发送ICMP的重定向消息
net.ipv4.conf.ens33.send_redirects = 0
指明网卡设备,ens33不发送重定向消息
立即生效

先添加IP地址

添加web地址


配置共享服务




Test2 test3设置访问页面
Test2


Test3同样的操作

Test1配置:





Ifconfig查看一下网卡设备


命令:
route add -host 20.0.0.100 dev lo:0
把vip的地址绑定到lo:0,作为LVS的vip地址。标识,告诉调度器,进行转发请求的IP地址寻址


net.ipv4.conf.lo.arp_ignore = 1
#设置lo接口忽略来自任何接口的ARP请求
net.ipv4.conf.lo.arp_announce = 2
设置lo接口仅会响应本地的IP地址,其他的接口ARP请求,全部忽略
net.ipv4.conf.all.arp_ignore = 1
所有接口忽略来自任务接口的ARP请求
net.ipv4.conf.all.arp_announce = 2
# 所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略
Test3同样的配置

拿共享服务器访问vip地址

Vip地址只做一件事情代理地址,标识地址,转发地址,还有高可用功能
负载均衡算法:
修改VIP的调度算法:
ipvsadm -E -t 20.0.0.100:80 -s wrr
修改策略的轮训算法:
例如:

修改:


指向后端的真实服务器
Forward:负载均恒算法和负载均衡方式。Route就是DR模式
Weight:后端服务器的轮训权重
ActiveConn:活跃连接,表示调度器正在处理的活动连接数 这些连接正在进行传输数据或者正在进行交互
InActCoon:表示当前处于非活动状态的连接数,已经建立连接但是目前没有数据传输,第二个连接处于的等待状态
修改策略的轮询权重:
ipvsadm -e -t 20.0.0.100:80 -r 20.0.0.52:80 -w 3

一定要先保存,再重启

总结:
LVS负载均衡的工作方式:NAT DR(最常用) TUN
NAT模式:优点,配置简单
缺点,性能瓶颈
真实服务器:所有,支持所有
支持的网络模式:私网
后端服务器数量:low(10-20)
DR模式:优点:性能最好,响应最好,不用经过调度器,直接到后端
缺点:调度服务器和后端真实服务器不能跨网段
真实服务器:NO-ARP (请求只能到真实服务器)
支持的网络:后端服务器即可以是内网也可以是外网
真实服务器数量:100台
Tun模式:很少用,因为收费
相关文章:
LVS集群-DR模式
概念: LVS-DR模式,也是最常用的lVS负载方式,DR DIRECT ROUTING 直接路由模式 负载均衡器lVS调度器,只负责请求和转发到后端的真实服务器,但是影响结果,由后端服务器直接转发给客户端,不需要经…...
行为型模式-状态模式
在状态模式中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。 意图:允许对象在内部状态发生改变时改变它的行为࿰…...
html/css/javascript/js实现的简易打飞机游戏
源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制 视频浏览地址...
ubuntu 22.04安装百度网盘
百度网盘 客户端下载 (baidu.com) 下载地址 sudo dpkg -i baidunetdisk_4.17.7_amd64.deb...
关于路由转发
路由表的作用 路由表的作用:目标网络匹配路由表,从相应网络转发;不匹配路由表,丢弃或转发至默认路由器。 路由转发的原理 根据IP地址找到目标网络,由应路由器解封装查看目标网络是否可达,重新封装进行转…...
oradebug current_sql
CDB 或者PDB都可以,但是数据库sid不对找不到SQL TEXT ps -ef|grep 3485015 oracle 3485015 1 51 21:19 ? 00:01:10 oracle (LOCALNO) oracle 3489325 3488836 0 21:21 pts/0 00:00:00 grep --colorauto 3485015 . oraenv [oracle~]$ s SQL*…...
JSON(详解)
目录 什么是JSON? 哪里会用到JSON? JSON的特点 JSON的优点 JSON的缺点 JSON和cJSON的关系 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示…...
1-多媒体通信概述
文章目录 媒体和多媒体媒体多媒体VarityIntergrationInteraction 多媒体通信(MMC)业务类型 MMC主要问题和关键技术主要问题关键技术 MMC发展动向重要事件趋势 标准化组织 媒体和多媒体 媒体 承载信息的载体. 感知媒体, 表示媒体, 显示媒体, 存储媒体, 传输媒体. 多媒体 Var…...
k8s集群环境搭建
k8s环境集群搭建 1.简述2.k8s概述3.软硬件配置3.1 硬件配置3.2 软件配置4 环境配置4.1使用root权限4.2 节点ip配置4.3 设置系统主机名4.4 解析主机名4.5 关闭swap4.6 设置时间同步5 安装集群所需软件5.1 安装 docker5.2 安装cri-dockerd5.3 安装 Kubernetes6 K8s集群实例部署6.…...
Makefile 基础教程:从零开始学习
在软件开发过程中,Makefile是一个非常重要的工具,它可以帮助我们自动构建程序,管理程序依赖关系,提高开发效率。本篇博客将从基础开始,介绍Makefile的相关知识,帮助大家快速掌握Makefile的使用方法 Makefil…...
绝对路径与相对路径
目录 一、绝对路径 二、相对路径 三、举例 一、绝对路径 绝对路径是指从根目录开始的完整路径,包括所有父目录的路径,直到目标文件或者目录 所在的位置。 全文件名全路径文件名绝对路经完整的路径 例如:在windows系统中,绝对路径通常以…...
电大搜题:开启智慧学习新时代
近年来,随着社会的发展和科技的迅猛进步,远程教育成为了广大学子继续教育的新选择。而在重庆,一所备受关注的远程教育学府——重庆开放大学,以其开放的教育理念和多元的学习方式,为广大学生提供了便捷而高效的学习平台…...
Android Studio 导出 jar
AS版本:Android Studio Giraffe | 2022.3.1 Patch 1 1、File——New Module——Android Library 2、mylibrary——main——新建功能类 3、mylibrary——build.gradle——android {}内复制以下代码——Sync Now //Copy类型 tasks.register(makeJar, Copy) { //删…...
【Leetcode】【每日一题】【中等】1465. 切割后面积最大的蛋糕
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/maximum-area-of-a-piece-of-cak…...
Ocelot简易教程目录
Ocelot简易教程目录 这里写目录标题 Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么Ocelot简易教程(二)之快速开始1Ocelot简易教程(二)之快速开始2Ocelot简易教程(三)之主要特…...
什么是可重入,什么是可重入锁? 它用来解决什么问题?
可重入 可重入是多线程并发编程里面一个比较重要的概念,简单来说,就是在运行的某个函数或者代码,因为抢占资源或者中断等原因导致函数或者代码的运行中断,等待中断程序执行结束后,重新进入到这个函数或者代码中运行&am…...
Unity报错:Microsoft Visual C# Compiler version
Unity报错:Microsoft Visual C# Compiler version 问题解决方案总结 问题 Microsoft Visual C# Compiler version 2.9.1.65535 (9d34608e) Copyright © Microsoft Corporation 切换版本或者使用老项目的时候可能会出现这个报错,这个报错就是项目设置的问题 …...
2023年下半年WSK-PETS5考试内容大纲及题型解析
国家公派留学人员全国外语水平考试(WSK-PETS5)成绩作为国家留学基金委(CSC)认可语言成绩证明,一直备受公派访问学者、博士后申请者的关注。随着下半年考试时间的临近,知识人网小编特整理出本次考试内容大纲…...
【24种设计模式】单例模式(Singleton Pattern)
当我们需要确保一个类只有一个实例时,可以使用单例模式。单例模式确保一个类只有一个实例,并提供一个全局访问点来获取该实例。 单例模式有多种实现方式,包括饿汉式、懒汉式和双重检查锁等。下面我们将分别介绍这些实现方式的特点和示例。 …...
shell算数运算指令、
1.shell算数运算的指令 (( )) $[ ] let expr expr的字符串运算 例子: 2.shell的if分支结构...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
