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模式:很少用,因为收费

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年第四届MathorCup大数据竞赛(A题)|坑洼道路检测和识别|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2021年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 希望这些想法对大家的做题有一定的启发和借鉴意义。 让我们来…

LLM系列 | 22 : Code Llama实战(下篇):本地部署、量化及GPT-4对比

引言 模型简介 依赖安装 模型inference 代码补全 4-bit版模型 代码填充 指令编码 Code Llama vs ChatGPT vs GPT4 小结 引言 青山隐隐水迢迢,秋尽江南草未凋。 小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。紧接…

微信小程序设计之主体文件app-ts/js

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

iPhone开发--Xcode中的ld64和-ld_classic是什么意思

如下内容,翻译自官方论坛文档 文档地址如下: https://developer.apple.com/forums/thread/715385 关键内容摘抄如下: A static library is an archive of one or more object files. It has the extension .a. Use ar, libtool, and ranlib…

新的iLeakage攻击从Apple Safari窃取电子邮件和密码

图片 导语:学术研究人员开发出一种新的推测性侧信道攻击,名为iLeakage,可在所有最新的Apple设备上运行,并从Safari浏览器中提取敏感信息。 攻击概述 iLeakage是一种新型的推测性执行攻击,针对的是Apple Silicon CPU和…

Python中的文件操作和异常处理

在Python编程中,文件操作和异常处理是非常重要的概念。本文将介绍如何使用Python进行文件读写操作,并展示如何处理可能出现的错误和异常情况。 文件读写操作 Python提供了简单而强大的文件读写功能,让我们能够轻松地处理各种文件类型。下面…

【IT行业就业前景广阔:探讨热门方向与就业机会】

IT行业哪个方向比较好就业? IT行业是一个快速发展的领域,与许多其他行业紧密结合,为各个行业带来了巨大的变革和机遇。在这个充满活力的行业中,有许多就业方向可以选择。让我们一起来探讨一下IT行业的发展背景、就业方向以及分享一些就业经…

简单了解一下:NodeJS的WebSocket网络编程

NodeJS的webSocket网络编程。 那什么是WebSocket呢?WebSocket是HTML5提供的一种浏览器和服务器进行通信的网络技术。两者之间,只需要做一个握手动作,就可以在浏览器和服务器之间开启一条通道,就可以进行数据相互传输。 实现WebS…

c++的4中类型转换操作符(static_cast,reinterpret_cast,dynamic_cast,const_cast),RTTI

目录 引入 介绍 static_cast 介绍 使用 reinterpret_cast 介绍 使用 const_cast 介绍 使用 dynamic_cast 介绍 使用 RTTI(运行时确定类型) 介绍 typeid运算符 dynamic_cast运算符 type_info类 引入 原本在c中,我们就已经接触到了很多类型转换 -- 隐式类型转…

线程安全问题

线程安全 简单来说,在多个线程访问某个方法或者对象的时候,不管通过任何的方式调用以及线程如何去交替执行。在程序中不做任何同步干预操作的情况下,这个方法或者对象的执行/修改都能按照预期的结果来反馈,那么这个类就是线程安全…

YOLOv7优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

💡💡💡本文改进:感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题 提供多种卷积变体供使用:CBAMConv,CAMConv,CAConv,RFAConv,RFCAConv RFAConv | 亲测在多个数据集能够实现…

刷题笔记day03-链表

前言 今天是刷题的第三天,坚持就是胜利 203.移除链表元素 增加一个头结点,这样可以统一删除操作 另外,遇到等于的值,就让 prev 指向 curr.Next ,同时将curr更新指向 prev.Next。 /*** Definition for singly-linked…

buuctf_练[CISCN2019 华东南赛区]Web4

[CISCN2019 华东南赛区]Web4 文章目录 [CISCN2019 华东南赛区]Web4掌握知识解题思路代码分析正式解题 关键paylaod 掌握知识 ​ 根据url地址传参结构来判断php后端还是python后端;uuid.getnode()函数的了解,可以返回主机MAC地址十六进制;pyt…

Hive简介及核心概念

本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038 1.简介 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 …

Golang 自定义函数库(个人笔记)

1.用字符串连接切片元素(类似php implode) package mainimport ("fmt""strconv""strings" )func main() {data : []int{104, 101, 108, 108, 111}fmt.Println(IntSliceToString(data, ",")) }func IntSliceToS…

汽车4S店如何在数字化管理下,提高市场竞争力

在所有人都认为疫情过后,经济形势会一路向阳,但是,实际情况出乎所有人的意料,各行各业举步维艰。 新闻爆出的各大房地产,恒大的2.4万亿让人瞠目结舌,还有碧桂园和融创,也是债台高筑了&#xff…

xml导出pdf简单实现

1. 引入依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>8.0.1</version> </dependency>2. 代码实现 import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.ker…

ESP32网络开发实例-HTTP-GET请求

HTTP-GET请求 文章目录 HTTP-GET请求1、HTTP GET请求2、软件准备3、硬件准备4、代码实现4.1 向OpenWeatherMap请求天气数据4.2 ThingSpeak 中的 ESP32 HTTP GET(更新值)在本文中,我们将介绍如使用ESP32向 ThingSpeak 和 openweathermap.org 等常用 API 发出 HTTP GET 请求。…

ToLua使用原生C#List和Dictionary

ToLua是使用原生C#List 介绍Lua中使用原生ListC#调用luaLua中操作打印测试如下 Lua中使用原生DictionaryC#调用luaLua中操作打印测试如下 介绍 当你用ToLua时C#和Lua之间肯定是会互相调用的&#xff0c;那么lua里面使用List和Dictionary肯定是必然的&#xff0c;在C#中可以调用…

shell的执行流控制

目录 1.for语句 2.条件语句 while...do语句 until...do 语句 if...then...elif...then...else...fi 语句 3.case语句 4.expect 5.break,continue,exit 1.for语句 作用&#xff1a;为循环执行动作 for语句结构 for //定义变量 do //使用变量&#xff0…