当前位置: 首页 > news >正文

LVS+DR部署

LVS-DR的工作原理:

1.客户端会发送请求到vip

2.LVS的调度器接受请求之后,根据算法选择一台真实服务器,请求转发到后端RS,请求的报文的目的MAC地址,修改成后端真实服务器的MAC地址,转发。

3.后端真实服务器处理接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的mac地址修改成客户端的MAC地址,直接把响应报文转发到客户端

4.调度器,后端真实服务器都有VIP地址,调度器和后端真实服务器在同一网段。

核心:用MAC地址做转发

DR模式的特点:

1.调度器的IP和真实服务器的IP必须在同一个物理网络中

2.真实服务器的IP地址可以是私有地址,也可以是公网地址。如果配置的公网,则可以通过互联网直接访问。

3.调度器只作为访问入口,但是不做网关(即不对数据进行转发),要把服务器的转发功能关闭

4.后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器。

5.后端真实服务器上,基于LO接口配置VRRP的IP地址

DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网

VIP:标识后端的真实服务器,保证调度器和后端服务器之间的通信,保证请求可以正确的转发到后端服务器,实现高可用和故障转移

常见问题

问题1:

由于调度器和后端真实服务器都有相同的VIP地址,导致响应冲突,ARP通信紊乱。

对真实服务器进行处理,让他不响应针对VIP的响应请求

VIP地址使用LO的虚拟地址:arp_ignore=1

后端服务器只响应目的IP为本地IP,也就是RIP。后端服务器的真正IP地址。ens33网卡提供的地址。

问题2:

返回报文使用的源地址还是VIP地址,调度器还是VIP,怎么把响应返回到客户端不经过调度器?

后端真实服务器做一个内核参数的优化:arp_announce=2 系统不使用IP数据包的源地址,来设置arp的请求。真实的物理网卡地址。

LVS+DR的负载均衡部署

test1 20.0.0.10 调度器
test2 20.0.0.20 web集群1
test3 20.0.0.30 web集群2
test4 NFS
VIP 20.0.0.100
客户端随机选择关闭防火墙
systemctl stop firewalld
setenforce 0test1modprobe ip_vs
yum -y install ipvsadm
//配置vip地址
ifconfig ens33:0 20.0.0.100/24
//虚拟网卡//调度器的内核优化
vim /etc/sysctl.conf
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不发送重定向消息
wq!
sysctl -pipvsadm -A -t 20.0.0.100:80 -s rr
ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.20:80 -g
ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -g
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
ipvsadm -D -t 20.0.0.10:80
ipvsadm -ln
ipvsadm -A -t 20.0.0.100:80 -s rr
ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.20:80 -g
ipvsadm -a -t 20.0.0.100:80 -r 20.0.0.30:80 -gtest4
mkdir kgc benet
vim /etc/exports
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
wq!
chmod 777 /opt/kgc /opt/benet
systemctl restart rpcbind
systemctl restart nfs
exportfs -rvshowmount -eecho "this is kgc" > /test2
yum -y install nginx
systemctl restart nginx
systemctl restart rpcbind
systemctl restart nfs
showmount -e 20.0.0.40
mount 20.0.0.10:/opt/kgc /usr/share/nginx/html
curl 20.0.0.20
cd /etc/ssyconfig/network-script
cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=20.0.0.100
NETMASK=255.255.255.255
ifup lo:0route add -host 20.0.0.100 dev lo:0
//添加一个路由,把vip的地址绑定到lo:0。作为LVS的VIP地址,标识,告诉调度器,进行转发请求的IP地址寻址vim /etc/sysctl.conf
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
yum -y install nginx
mount 20.0.0.40:/opt/benet /usr/share/nginx/html
cd /etc/ssyconfig/network-script
cp ifcfg-lo ifcfg-lo:0vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=20.0.0.100
NETMASK=255.255.255.255
ifup lo:0vim /etc/sysctl.conf
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请求全部忽略

总结

DR模式核心:相应客户端由后端的真实服务器来完成,不需要经过调度器

VIP作用

vip地址:调度器和后端服务器都要有vip地址

vip地址:暴露访问地址 , 调度器转发请求的标识 , 调度器和后端服务器之间的通信 , 高可用(DR)

其他所有的请求和响应都是禁用

NAT工作原理:

1、 在调度器上配置双网卡,一个指内,一个指外

2、 配置一个可以和公网进行通信的VIP

3、 通过配置转发策略,访问公网的VIP会把请求转发到后台的RS。请求的格式是报文。调度器会修改请求的目标IP地址和端口(12.0.0.1:80 20.0.0.20:80)

4、 RS处理完请求后响应客户端,先到调度器,调度器进行地址转换,把内网地址转换成公网地址。最后响应调度器给用户。 20.0.0.20:80 ---- 调度器 ---- nat地址转换 ----- 12.0.0.1:80 ---- 客户端

客户端进入是改请求报文。出去是地址转换 转发由调度器通过算法来完成,后端服务器只管接受响应。也不需要修改任何配置。
 

DR工作原理:

1、 客户端发送请求到vip

2、 LVS的调度器接受请求后,根据算法选择一台后端的真实服务器,请求转发到后端RS,请求报文的目的MAC地址。修改成后端真实服务器的MAC地址。然后转发。

3、 后端真实服务器接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的MAC地址修改。直接把响应报文转发到客户端。

4、 调度器,后端真实服务器都有vip地址,调度的地址和后端真实服务器在同一网段。

客户端进入时请求调度器的VIP地址,通过LVS交换器配置的算法把请求的目的MAC地址,修改为后台的真实服务器的MAC地址。实现转发。后端服务器处理完成后,会修改响应报文中的目的MAC地址,之间转发到客户端。
 

相关文章:

LVS+DR部署

LVS-DR的工作原理: 1.客户端会发送请求到vip 2.LVS的调度器接受请求之后,根据算法选择一台真实服务器,请求转发到后端RS,请求的报文的目的MAC地址,修改成后端真实服务器的MAC地址,转发。 3.后端真实服务器…...

C++项目——云备份-②-第三方库认识

文章目录 专栏导读1. json 认识1.1 JSON 数据结构的特点 2. jsoncpp库认识3. json实现序列化案例4. json实现反序列化案例5. bundle文件压缩库认识6. bundle库实现文件压缩案例7.bundle库实现文件解压缩案例8.httplib库认识9. httplib库搭建简单服务器案例10. httplib库搭建简单…...

Linux入门攻坚——4、shell编程初步、grep及正则表达式

bash的基础特性(续): 1、提供了编程环境: 编程风格:过程式:以指令为中心,数据服务于执行;对象式:以数据为中心,指令服务于数据 shell编程,编译执…...

TCP/IP(二十二)TCP 实战抓包分析(六)TCP 快速建立连接

一 TCP Fast Open 快速建立连接 说明: 之前讲解TCP 相关知识点遗漏了这个知识点,补充上 ① TFO简介 ② 请求 Fast Open Cookie过程 "原理图" ③ 真正开始 TCP Fast Open 重点: TFO 使 SYN包 可以包含payload 数据 ④ 抓包分析 1、…...

IDEA如何拉取gitee项目?

1.登录gitee 说明:打开idea,在设置上面搜索框输入gitee,然后登录gitee注册的账号。 2. 创建gitee仓库 说明:创建idea中的gitee仓库。 3.寻找项目文件 说明:为需要添加gitee仓库的项目进行添加。 4.项目右键 说明&a…...

视频编辑不求人,教你一招制胜批量添加封面

视频添加封面是一个相当简单的任务,您只需要一款专门的软件,就能轻松搞定!下面就是详细教程啦! 首先,您需要在浏览器中搜索“固乔智剪软件”,进入官网并下载这款软件。固乔智剪软件是一款非常专业的视频剪辑…...

产品的竞争力是什么

产品的竞争力归根到底是3点:功能,性能,容量。 功能 我这个产品完成了别人没有实现的功能,而且是用户需要的。解决了客户的痛点 性能 我这个产品的功能虽然别人有,但是我性能好,性能好意味着干同样的活给…...

vue3 拖拽插件 Vue3DraggableResizable

Vue3DraggableResizable 拖拽插件的官方文档 一、Vue3DraggableResizable 的属性和事件 1、Vue3DraggableResizable 的属性配置 属性类型默认值功能描述示例initWNumbernull设置初始宽度&#xff08;px&#xff09;<Vue3DraggableResizable :initW“100” />initHNumb…...

VUE父组件向子组件传递数据和方法

文章目录 1 父组件写法2 子组件写法 1 父组件写法 父组件参数和方法 data() {return {// 遮罩层loading: true,// 表格数据yfeList: []}}导入组件 import yfTable from "/views/yf/yfTable.vue";组件 components: {yfTabTable},传值使用 <yfTabTable :loadin…...

NPI加速器在烽火科技SMT车间的应用:贴片机程序制作效率的革新

烽火科技&#xff0c;一个在国内颇具知名度的高科技企业&#xff0c;坐落于武汉光谷的SMT车间中&#xff0c;机器嗡嗡作响&#xff0c;作业员们忙碌地进行着生产。工厂使用的是ASM的贴片机&#xff0c;使用Sipalce Pro作为其编程软件。然而&#xff0c;在高效的生产线背后&…...

如何给照片添加水印?请看下面3个简单教程

如何给照片添加水印&#xff1f;随着智能手机的普及和不断提升的拍摄技术&#xff0c;如今人们可以轻松使用手机进行高质量的照片拍摄。从老人到小孩&#xff0c;每个人都可以在日常生活中捕捉到美好瞬间&#xff0c;并将其记录下来。作为一种表达自己的方式&#xff0c;现在手…...

仿写知乎日报第一周

效果图 主要的逻辑 Manager封装网络请求 首先&#xff0c;对于获取网络请求&#xff0c;我是将这些方法封装成了一个类Manager&#xff0c;后续在获取以往的内容时又封装了一个beforeManager类用于网络请求。这里不多赘述&#xff0c;Manager封装网络请求的知识参考我的以往博…...

32二叉树——DFS深度优先遍历

目录 深度优先算法&#xff08;Depth-First Search&#xff0c;DFS&#xff09; LeetCode之路——102. 二叉树的层序遍历 分析 深度优先算法&#xff08;Depth-First Search&#xff0c;DFS&#xff09; DFS是一种用于遍历或搜索树状数据结构的算法&#xff0c;其中它首先探…...

华为昇腾NPU卡 ChatGLM2模型使用

参考&#xff1a;https://gitee.com/mindspore/mindformers/blob/dev/docs/model_cards/glm2.md#chatglm2-6b 1、安装环境&#xff1a; 昇腾NPU卡对应英伟达GPU卡&#xff0c;CANN对应CUDA底层&#xff1b; mindspore对应pytorch&#xff1b;mindformers对应transformers 本…...

【机器学习】集成模型/集成学习:多个模型相结合实现更好的预测

1. 概述 1.1 什么是集成模型/集成学习 "模型集成"和"集成学习"是相同的概念。它们都指的是将多个机器学习模型组合在一起&#xff0c;以提高预测的准确性和稳定性的技术。通过结合多个模型的预测结果&#xff0c;集成学习可以减少单个模型的偏差和方差&am…...

如何提高广告投放转化率?Share Creators 资产库与Appsflyer营销数据的全面结合

如何提高广告投放转化率&#xff1f;Share Creators 资产库与Appsflyer营销数据的全面结合 全球经济进入了低迷期。 营销成本越来越高&#xff0c; 营销需要更务实&#xff0c;注重投入产出比。众所周知&#xff0c;除了渠道、客群画像以外&#xff0c; 优秀的广告设计图&#…...

《软件方法》2023版第1章(11)1.4.3 具体工作步骤

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 1.4 应用UML的建模工作流 1.4.3 使用UML建模的工作流步骤 图1-17中“工件形式”一列所列出的图就是本书推荐的在建模工作流ABCD中的UML用法&#xff0c;我用活动图进一步表示建模的步…...

git将当前分支A强制推送远程分支pro上

前言 开发中基于线上分支pro创建了A分支&#xff0c;开发完成之后。又基于线上分支pro创建了B分支&#xff0c;都以此合并到测试分支&#xff0c;两个分支更改中都动用部分共同的文件&#xff0c;这就导致后续开发合并代码越来越乱&#xff0c;这时你想把本地开发的分支强推到…...

【计算机基础】存储器

目录 一.概念二.分类1&#xff0e;按存储介质分类2&#xff0e;按存储方式分类3&#xff0e;按存储器的读写功能分类4&#xff0e;按信息的可保存性分类5&#xff0e;按在计算机系统中的作用分类 三.主存区分SRAM、DRAM、Flash、DDR1.SRAM&#xff08;静态随机存储器&#xff0…...

【LCR 159. 库存管理 III】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int getrandom(int left,int right,vector<int>& stock){return stock[rand()%(right-left1)left];}void qsort(int l,int r,vector<int>& s…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...