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

LVS-DR模型实例

一、LVS-DR集群介绍

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。

1、LVS-DR 工作原理

LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用,节点 Director Server 与 Real Server 需要在同一个网络中,返回给客户端的数据不需要经过 Director Server。为了响应对整个群集的访问,Director Server 与 Real Server 都需要配置 VIP 地址。
 

2、 数据包流向分析

为方便进行原理分析,将Client与群集机器放在同一网络中,数据包流经的路线为 1-2-3-4 四步

第一步:客户端发送请求到 Director Server (负载均衡器),请求的数据报文到达内核空间。

此时请求的数据报文
源 IP —— 客户端的 IP(CIP)
目标 IP —— VIP
源 MAC —— 客户端的 MAC
目的 MAC —— Director Server 的 MAC

第二步:内核空间判断数据包的目标 IP 是本机 VIP,此时 IPVS(IP 虚拟服务器)比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。然后将数据包发送给根据 负载均衡算法选择的 Real Server。(Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。)

此时请求的数据报文
源 IP —— 客户端的 IP
目标 IP —— VIP
源 MAC —— Director Server 的 MAC
目的 MAC —— Real Server 的 MAC

第三步:到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址,就接收此报文。数据包重新封装报文,将响应报文通过 lo 接口传送给物理网卡然后向外发出。

此时请求的数据报文
源 IP —— VIP
目标 IP —— 客户端的 IP(CIP)
源 MAC —— Real Server 的 MAC
目的 MAC —— 客户端的 MAC

第四步:通过交换机和路由器将响应报文传送到客户端。客户端收到回复报文,得到想要的服务,但是不会知道是哪台服务器处理的。

3、LVS-DR 模式的特点

Director Server 和 Real Server 必须在同一个物理网络中。

Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。

所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。

Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。

Real Server 上的 lo 接口配置 VIP 的 IP 地址。

4、LVS-DR中的ARP问题

4.1 问题一

在LVS-DR负载均衡集群中,负载均衡器与节点服务器都要配置相同的VIP地址,在局域网中具有相同的IP地址。势必会造成各服务器ARP通信的紊乱

当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播

只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播

解决方法:

节点服务器进行处理,使其不响应针对VIP的ARP请求

使用虚接口lo:0承载VIP地址

设置内核参数arp_ ignore=1: 系统只响应目的IP为本地IP的ARP请求

4.2问题二

问题说明:RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址,路由器收到ARP请求后,将更新ARP表项,原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址。

路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效

解决方法:

节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

-----------------DR模式 LVS负载均衡群集部署-----------------------------------
DR 服务器:192.168.50.37     vip:192.168.50.38
Web 服务器1:192.168.50.56       
Web 服务器2:192.168.50.57          
客户端:192.168.50.22      

二、构建LVS-DR集群

1.配置负载调度器(192.168.50.37 虚拟vip 192.168.50.38

   1. #关闭防火墙
      systemctl stop firewalld.service
      setenforce 0
   2. #安装ipvsadm工具
      yum -y install ipvsadm
   3. #配置虚拟IP地址(VIP:192.50.38)
      cd /etc/sysconfig/network-scripts/
      cp ifcfg-ens33 ifcfg-ens33:0
      vim ifcfg-ens33:0
      #删除UUID,dns与网关,注意子网
      NAME=ens33:0
      DEVICE=ens33:0
      IPADDR=192.168.50.38
      NETMASK=255.255.255.255


   4. #重启网络服务、启动网卡
      systemctl restart network
      ifup ifcfg-ens33:0
   5. #调整/proc响应参数   
      #对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭 Linux 内核的重定向参数响应服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能
      vi /etc/sysctl.conf
      net.ipv4.ip_forward = 0
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0


   6. #刷新配置
      sysctl -p
   7. #加载模块
      modprobe ip_vs
      cat /proc/net/ip_vs
   8. #配置负载分配策略,并启动服务
      ipvsadm-save >/etc/sysconfig/ipvsadm
      systemctl start ipvsadm.service
   9. #清空ipvsadm,并做策略
      ##添加真实服务器-a  指定VIP地址及TCP端口-t   指定RIP地址及TCP端口 -r 指定DR模式-g
      ipvsadm -C
      ipvsadm -A -t 192.168.50.38:80 -s rr
      ipvsadm -a -t 192.168.50.38:80 -r 192.168.50.56:80 -g
      ipvsadm -a -t 192.168.50.38:80 -r 192.168.50.57:80 -g
   10. #保存设置
       ipvsadm
       ipvsadm -ln


       ipvsadm-save >/etc/sysconfig/ipvsadm

2.部署共享存储(NFS服务器:192.168.50.22)

systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind
mkdir /opt/lc1 /opt/lc2
chmod 777 /opt/lc1 /opt/lc2vim /etc/exports
/usr/share *(ro,sync)
/opt/lc1 192.168.50.0/24(rw,sync)
/opt/lc2 192.168.50.0/24(rw,sync)systemctl start nfs.service
systemctl start rpcbind.service

3.配置节点服务器(192.168.50.56、192.168.50.57)

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y

[root@localhost ~]# systemctl start httpd
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.50.38
NETMASK=255.255.255.255                        #注意:子网掩码必须全为 1

ifup lo:0
ifconfig lo:0
route add -host 192.168.50.38 dev lo:0

[root@localhost network-scripts]# vim /etc/rc.d/rc.local 

/usr/sbin/route add -host 192.168.50.38 dev lo:0

[root@localhost network-scripts]# chmod +x /etc/rc.d/rc.local
[root@localhost network-scripts]# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1            
net.ipv4.conf.lo.arp_announce = 2        
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2


[root@localhost network-scripts]# sysctl -p

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

--192.168.50.56---
[root@localhost network-scripts]# mount 192.168.50.22:/opt/lc1 /var/www/html/
[root@localhost network-scripts]# echo 'lc is my love 12312' > /var/www/html/index.html

--192.168.50.57---
[root@localhost network-scripts]# mount 192.168.50.22:/opt/lc2 /var/www/html/
[root@localhost network-scripts]# echo '1213 my love is lc' > /var/www/html/index.html

4.浏览器访问虚拟ip 192.168.50.38

 

相关文章:

LVS-DR模型实例

一、LVS-DR集群介绍 LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。 1、LVS-DR 工作原理 LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用&#xff0…...

Vue面试题

1. vue优点 轻量级速度快简单易学低耦合可重用性独立开发文档齐全,且文档为中文文档 2. ## vue中组件间传值 prop/$emit 父子组件传值 ref 和 $parent/$children 父子组件传值 eventBus($emit/$on) 父子,隔代,兄弟组件传值 $attrs/$listeners…...

使用图像处理算法检测金属表面的生锈区域: Python实现及步骤解析

摘要: 本文主要介绍如何使用Python和OpenCV库来实现对金属表面的生锈区域的检测。图像处理在工业领域有着广泛的应用,尤其是对材料的表面缺陷的检测。本文将详细阐述该算法的具体实现步骤,并提供完整的Python代码示例。 1. 引言 金属的锈蚀是…...

通过爬虫抓取上市企业利润表并在睿思BI中展示

睿思BI从v5.3开始支持网络爬虫,可以从指定URL抓取表格数据,本示例实现从网络上抓取上市企业招商银行的利润表数据,并在睿思BI中进行展现。 功能演示URL:https://www.ruisitech.com/rsbi-ultimate/#/dashboard/ShareView?token31…...

填充柄功能

单元格右下角十字符号 顺序式填充 输入1,2,直接拉取即可实现顺序1到10. 复制式填充 CtrlD或者拉取,选择右下角复制单元格。 规律式填充 输入星期一,星期二,下拉一直可以到星期日 自定义填充 选择文件-》选项-》自定义序列 输…...

Python爬虫性能优化:多进程协程提速实践指南

目录 1. 多进程爬虫的实现: 1.1 将爬虫任务划分成多个子任务: 1.2 创建进程池: 1.3 执行任务: 1.4 处理结果: 代码示例 2. 协程爬虫的实现: 2.1 定义异步爬虫函数: 2.2 创建事件循环&a…...

mongodb export(2023新)

之前的mongodb export发现不能用了,T3带ui的版本,试用到期不支持导出。 根据文档,是因为server版本更新后 tool版本没有升级,(refs文档) 按文档下载bin,后解压到更新本地文件夹,替换/usr/local/bin里的文…...

css-flex使用

文章目录 flex弹性容器属性flex-directionflex-wrapflex-flowalign-itemsjustify-contentalign-content主轴和侧轴 弹性元素默认大小属性flex-growflex-shrinkalign-selfflex-basisflexorder 高度坍塌flex布局子元素宽度超出父元素 flex 弹性盒,伸缩盒,…...

SAP安全库存-安全库存共享、安全库存简介

SAP系统中的安全库存用于管理计划外和计划内的库存需求,在某些行业中,由于不同的情况,如意外损耗、损坏、环境问题、制造工艺问题、需求增加等,通常会出现意外的库存需求。 SAP提供了维护安全库存的处理方式来处理这样的问题,安全库存的字段信息在主数据视图中,在物料需…...

CentOS自己搭建时钟同步服务实操

目录 1、产生背景 2、操作过程 3、客户端操作 4、ntpd和ntpdate的区别 5、参考文章 1、产生背景 因为公司业务,需要使用一些网关设备上报监测实时数据,为了保障数据时钟一致性,所以需要提供一天时钟校验服务器。因为原来这个厂家的网关设…...

高阶数据结构-图

高阶数据结构-图 图的表示 图由顶点和边构成,可分为有向图和无向图 邻接表法 图的表示方法有邻接表法和邻接矩阵法,以上图中的有向图为例,邻接表法可以表示为 A->[(B,5),(C,10)] B->[(D,100)] C->[(B,3)] D->[(E,7)] E->[…...

Linux/Ubuntu 的日常升级和安全更新,如何操作?

我安装的是Ubuntu 20.04.6 LTS的Windows上Linux子系统版本,启动完成后显示: Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.90.4-microsoft-standard-WSL2 x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.c…...

Linux自动挂载U盘

文章目录 UEDV规则文件挂在U盘规则,创建.ruiles将下放代码放入 UEDV规则文件 规则文件是 udev 里最重要的部分,默认是存放在 /etc/udev/rule.d/ 下。所有的规则文件必须以".rules" 为后缀名。 下面是一个简单的规则: KERNEL"…...

Edge浏览器免费使用GPT3.5

搜索sider,安装Sidebar插件 注册账号即可每天免费使用30次。 Sider: ChatGPT侧边栏,GPT-4, 联网, 绘图...

面试题--redis篇

一、Redis支持的数据类型? String (字符串) Hash (哈希) List (列表) Set (集合) zset (sorted set:有序集合) 1. String(字符串) 格式: set key value string 类型是二进制安全的,意思是 redis 的 string 可以包含任…...

Android Studio 新建module报错:No signature of method

android平台uni原生插件开发过程中,使用Android Studio 新增 module 报错 选择app --> create new module ,填写相关信息 Android Studio 新建module报错: 原因:Android Studio 版本过高,新增了namespace&#x…...

python使用dir()函数获取对象中可用的属性和方法(看不到python源码又想知道怎么调用,DLL调用分析,SDK二次开发技巧)

有时候调用一些SDK,但是人家又是封装成dll文件形式调用的,这时没法看源码,也不想看其对应的开发文档(尤其有些开发文档写得还很难懂,或者你从某个开源社区拿过来,就根本没找到开发文档)&#xf…...

【MySQL系列】SQL语句入门(创建删除操作)、字符集和数据类型详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

谈谈召回率(R值),准确率(P值)及F值

通俗解释机器学习中的召回率、精确率、准确率,一文让你一辈子忘不掉这两个词 赶时间的同学们看这里:提升精确率是为了不错报、提升召回率是为了不漏报 先说个题外话,暴击一下乱写博客的人,网络上很多地方分不清准确率和精确率&am…...

【脚本推荐】网页字体渲染插件

下图是三种网页字体增强的效果对比。 **SUM:**前面两个都是通过脚本运行,而最后一个是通过扩展插件;中间的脚本(字体渲染)效果是最好的,可惜输入框没有效果,也就意味着如果现在网页上写写学习笔…...

一文读懂 .git 目录:Git 仓库的心脏与底层原理

你是否也曾好奇,Git 是如何记住我们每一次提交、每一次分支切换的?答案就藏在项目根目录下那个不起眼的 .git 文件夹里。它是 Git 仓库的 “心脏”,所有版本控制的数据、历史记录、配置信息都存储在这里。今天,我们就来深度拆解 .…...

在 Taotoken 上观测多模型 API 调用用量与成本明细

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在 Taotoken 上观测多模型 API 调用用量与成本明细 对于使用多个大模型 API 的开发者而言,清晰、透明地掌握调用情况和…...

终端工作空间新选择:从 tmux 到 Zellij 的迁移与实战

1. 为什么需要从 tmux 迁移到 Zellij 作为一个用了五年 tmux 的老用户,我最初对 Zellij 这个"新玩具"是持怀疑态度的。直到有一次在远程服务器上调试时,tmux 的窗格突然卡死,所有工作进度瞬间归零,我才开始认真寻找替代…...

STM32H743以太网实战:基于CubeMX 6.8.0与LAN8720的LWIP移植避坑指南

1. 环境准备与CubeMX基础配置 折腾了一周终于把STM32H743的以太网调通,发现网上大多数教程都存在配置遗漏。这里分享我的完整配置流程,从CubeMX安装到最终Ping通,每个步骤都经过实测验证。 首先确保安装STM32CubeMX 6.8.0和对应的HAL库。我遇…...

3分钟为Windows 11 LTSC恢复微软商店的完整指南:解决精简版系统应用生态缺失问题

3分钟为Windows 11 LTSC恢复微软商店的完整指南:解决精简版系统应用生态缺失问题 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows …...

架构设计经验分享:从方法论到落地的完整实践

写在前面 “架构"是技术圈里被滥用最严重的词之一。很多人一说架构就开始画框图、讲中间件、列技术栈,但问一句"你这个架构解决了什么问题”,答不上来。 我做架构这些年,最深的体会是:架构不是技术选型的堆砌&#xff0…...

Maple Mono字体终极配置指南:3步解决连字显示难题,开启高效编程体验

Maple Mono字体终极配置指南:3步解决连字显示难题,开启高效编程体验 【免费下载链接】maple-font Maple Mono: Open source monospace font with round corner, ligatures and Nerd-Font icons for IDE and terminal, fine-grained customization option…...

Zynq MPSoC实战:从官方Base TRD里,只抠出HDMI输入+DP显示这一个功能(Vivado 2020.1 + Petalinux)

Zynq MPSoC实战:精准剥离HDMI输入与DP显示功能的工程精简指南 面对Xilinx官方提供的Base TRD参考设计,许多开发者都会被其庞大的规模所震撼——12000行代码、数十个功能模块交织在一起,就像一个功能齐全但臃肿不堪的"瑞士军刀"。本…...

解密GAIA-DataSet:如何用6500+真实系统指标革新AIOps研究

解密GAIA-DataSet:如何用6500真实系统指标革新AIOps研究 【免费下载链接】GAIA-DataSet GAIA, with the full name Generic AIOps Atlas, is an overall dataset for analyzing operation problems such as anomaly detection, log analysis, fault localization, e…...

iMeta | 伦敦国王学院量化系统生物学组-解析肝硬化中口腔-肠道转移细菌与宿主互作

点击蓝字 关注我们整合宿主–微生物组建模揭示了口腔–肠道微生物转移在晚期肝硬化中的潜在作用iMeta主页:http://www.imeta.science研究论文● 期刊: iMeta (IF 33.2,中科院双一区Top)● 英文题目: Integrative host-microbiome modelling uncovers the implicatio…...