LVS集群-DR模式

概念:

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

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

简略图:lVS-DR数据流向

lVS-DR模式的工作原理:

  1. 客户端会发送请求到vip
  2. lVS的调度器接受请求之后,根据算法选择一台真实的服务器,请求转发到后端RS,会把请求报文的目的mac地址,修改成后端真实服务器的Mac地址,转发
  3. 后端真实服务器接受请求,处理完成之后,由于后端 服务器直接把响应结果转发给客户端,响应报文中的目的Mac地址修改成客户端的Mac地址,直接把响应的报文转发发给客户端
  4. 调度器,后端真实服务器都有vip地址,调度器的地址和后端真实服务器在同一网段

详细的工作流程:
它记住了双方的Mac地址,可直接转发到后端客户端,根据Mac地址来就那些转发数据包,只能在同一网段转发

DR模式的特点:

  1. 调度器的ip和真实服务器的IP必须在同一个物理网络中
  2. 真实的服务器的IP地址可以是私有地址,也可以是工有地址。如果配置是公网,通过互联网可直接访问PIP
  3. 调度器只作为入口,但是不做网关,需要把服务器的转发功能关闭
  4. 后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器
  5. 后端的真实服务器上,基于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模式:很少用,因为收费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/106408.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Chimera:混合的 RLWE-FHE 方案

参考文献: [HS14] S. Halevi and V. Shoup. Algorithms in HElib. In Advances in Cryptology–CRYPTO 2014, pages 554–571. Springer, 2014.[HS15] S. Halevi and V. Shoup. Bootstrapping for HElib. In Advances in Cryptology–EUROCRYPT 2015, pages 641–6…

【vue3 】 创建项目vscode 提示无法找到模块

使用命令创建 vue3 创建新应用 npm create vuelatest会看到一些可选功能的询问? √ 请输入项目名称: … vue-project √ 是否使用 TypeScript 语法? … 否 / 是 √ 是否启用 JSX 支持? … 否 / 是 √ 是否引入 Vue Router 进行单…

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台,借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为:Version 2.428 SonarQube版本为:Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…

Python —— UI自动化用例前置处理日志封装

1、UI自动化用例增加前置 1、fixture(夹具)的使用 前置顾名思义是在执行测试用例之前做的一些事情,在自动化测试时会碰到用例执行前需要做一些前置操作,以及用例执行后需要做一些后置操作,比如登录、退出等&#xff…

Leetcode—80.删除有序数组中的重复项II【中等】

2023每日刷题&#xff08;十&#xff09; Leetcode—80.删除有序数组中的重复项II 双指针实现代码 int removeDuplicates(int* nums, int numsSize){int i 0;int j 1;int k 1;int tmp nums[i];while(j < numsSize) {if(nums[j] tmp && k < 2) {nums[i] n…

YOLOv5— Fruit Detection

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客 &#x1f366; 参考文章&#xff1a;365天深度学习训练营-第7周&#xff1a;咖啡豆识别&#xff08;训练营内部成员可读&#xff09; &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https…

P1868 饥饿的奶牛

根据题意可以知道是一个动态规划&#xff0c;看完数据范围之后可以知道是一个线性DP。 解决方法有点类似于背包问题&#xff0c;枚举背包的每一个空间。 如果把坐标轴上每个点都看成一个块儿&#xff0c;只需要按顺序求出前 i 个块儿的最大牧草堆数&#xff0c;f[i] 就是前i的…

【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》

在软考中软件工程模块主要包含以下考点&#xff1a; 文章目录 软件过程模型&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;逆向工程&#x1f31f;基于构件的软件工程&#x1f31f;&#x1f31f;软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…

支持向量机(SVM)

一. 什么是SVM 1. 简介 SVM&#xff0c;曾经是一个特别火爆的概念。它的中文名&#xff1a;支持向量机&#xff08;Support Vector Machine, 简称SVM&#xff09;。因为它红极一时&#xff0c;所以关于它的资料特别多&#xff0c;而且杂乱。虽然如此&#xff0c;只要把握住SV…

Kotlin中使用ViewBinding绑定控件并添加点击事件

文章目录 效果1、加入依赖2、与控件进行绑定在 Activity 中使用视图绑定 3、监听控件 效果 实现源码 class MainActivity : AppCompatActivity() {lateinit var binding:ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstan…

C# 串口通信简单示例

C# 简单串口通信示例 串口通信示例代码 串口通信 C# 串口通信主要操作&#xff1a; 命名空间&#xff1a;using System.IO.Ports;获取端口&#xff1a;string[] ports System.IO.Ports.SerialPort.GetPortNames();设置端口名&#xff1a;serialPort1.PortName “COM1”; //…

性能测试工具:如何学习JMeter?

JMeter是一个广泛应用于Web应用程序性能测试与负载测试的开源负载测试工具&#xff0c;学习JMeter则可以协助软件测试工程师更好地进行自动化性能测试与负载测试&#xff0c;本文就来介绍下如何学习JMeter。 1. 应用场景 (1) Web应用程序、数据库服务器、FTP服务器、SOAP和RE…

Makefile 基础教程:从零开始学习

在软件开发过程中&#xff0c;Makefile是一个非常重要的工具&#xff0c;它可以帮助我们自动构建程序&#xff0c;管理程序依赖关系&#xff0c;提高开发效率。本篇博客将从基础开始&#xff0c;介绍Makefile的相关知识&#xff0c;帮助大家快速掌握Makefile的使用方法 Makefil…

springboot异步线程池

项目中经常会遇到线程池异步处理一些任务 1.配置信息 # 异步线程配置 # 核心线程数 async:executor:thread:core_pool_size: 10# 最大线程数max_pool_size: 100# 任务队列大小queue_capacity: 20# 线程池中线程的名称前缀name:prefix: kc-async-service-# 缓冲队列中线程的空闲…

0基础学习PyFlink——用户自定义函数之UDTF

大纲 表值函数完整代码 在《0基础学习PyFlink——用户自定义函数之UDF》中&#xff0c;我们讲解了UDF。本节我们将讲解表值函数——UDTF 表值函数 我们对比下UDF和UDTF def udf(f: Union[Callable, ScalarFunction, Type] None,input_types: Union[List[DataType], DataTy…

【JavaEE初阶】 线程安全的集合类

文章目录 &#x1f340;前言&#x1f332;多线程环境使用 ArrayList&#x1f6a9;自己使用同步机制 (synchronized 或者 ReentrantLock)&#x1f6a9;Collections.synchronizedList(new ArrayList);&#x1f6a9;使用 CopyOnWriteArrayList &#x1f38d;多线程环境使用队列&am…

【AI视野·今日Robot 机器人论文速览 第五十九期】Fri, 20 Oct 2023

AI视野今日CS.Robotics 机器人学论文速览 Fri, 20 Oct 2023 Totally 29 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers CCIL: Continuity-based Data Augmentation for Corrective Imitation Learning Authors Liyiming Ke, Yunchu Zhang, Abhay D…

html/css/javascript/js实现的简易打飞机游戏

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 视频浏览地址

Java提升技术,进阶为高级开发和架构师的路线

原文网址&#xff1a;Java提升技术&#xff0c;进阶为高级开发和架构师的路线-CSDN博客 简介 Java怎样提升技术&#xff1f;怎样进阶为高级开发和架构师&#xff1f;本文介绍靠谱的成长路线。 首先点明&#xff0c;只写业务代码是无法成长技术的。提升技术的两个方法是&…