LVS负载均衡DR(直接路由)模式

在这里插入图片描述

在LVS(Linux Virtual Server)负载均衡中的DR(Direct Routing)模式下,数据包的流向如下:

  1. 客户端发送请求到负载均衡器(LVS)的虚拟IP(VIP)。
  2. 负载均衡器(LVS)接收到请求后,根据负载均衡算法选择一个后端服务器(Real Server)。
  3. 负载均衡器(LVS)将请求的目标MAC地址修改为所选后端服务器(Real Server)的MAC地址,并将数据包转发给后端服务器。
  4. 后端服务器接收到请求后,处理请求并生成响应。
  5. 后端服务器将响应发送回负载均衡器(LVS)。
  6. 负载均衡器(LVS)接收到响应后,将响应的源MAC地址修改为负载均衡器(LVS)的MAC地址,并将响应转发给客户端。
  7. 客户端接收到响应并处理。

在DR模式下,负载均衡器(LVS)只负责将请求转发给后端服务器,并将响应转发回客户端,而不会修改数据包的IP地址。这意味着后端服务器和客户端直接通信,负载均衡器(LVS)只在请求和响应的转发过程中起到中间转发的作用,减少了负载均衡器的处理负担,提高了性能和吞吐量。

需要注意的是,在DR模式下,后端服务器必须配置正确的网络路由,以确保响应数据包能够正确返回给客户端。此外,负载均衡器(LVS)和后端服务器之间需要通过网络隔离,以避免数据包循环和冲突。

DR 模式的特点:
(1)Director Server 和 Real Server 必须在同一个物理网络中。
(2)Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对 RIP 进行直接访问。
(3)Director Server作为群集的访问入口,但不作为网关使用。
(4)所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
(5)Real Server 的网关不允许指向 Director Server IP,即Real Server发送的数据包不允许经过 Director Server。
(6)Real Server 上的 lo 接口配置 VIP 的 IP 地址。

DR模式中需要解决的问题:
在这里插入图片描述
问题一:
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会接收到ARP广播。
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。
解决方式:
对节点服务器进行处理,使其不响应针对VIP的ARP请求。
使用虚拟接口lo:0承载VIP地址,设置内核参数arp_ignore=1
作用:系统只响应目的IP为本地lP的ARP请求。
在这里插入图片描述
问题二:
Real Server返回报文(源IP是VIP)经网关路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址
解决方式:
使用Real Server 的物理网卡地址(即RIP)作为响应报文的IP,这样就不会导致网关服务器的ARP缓存表的紊乱。
设置内核参数arp_announce=2 使系统不使用IP包的源地址(VIP)来作为本机进行ARP请求的源IP地址,而选择发送接口的IP地址。
在这里插入图片描述
配置步骤:
-----------------DR模式 LVS负载均衡群集部署-----------------------------------
配置所需主机:
DR 服务器:20.0.0.102
Web 服务器1:20.0.0.103
Web 服务器2:20.0.0.104
vip:20.0.0.12
NFS共享服务器:20.0.0.101

一.配置负载调度器(20.0.0.102)

systemctl stop firewalld.service  #关闭防火墙
setenforce 0 #将selinx 安全机制调为0
modprobe ip_vs #加载ip_vs内核模块,启用IPVS(IP Virtual Server)功能。
cat /proc/net/ip_vs #显示当前系统中的IPVS配置。列出IPVS的相关信息,如虚拟服务器、真实服务器和负载均衡算法等。
yum -y install ipvsadm #使用yum包管理器安装ipvsadm工具。ipvsadm是一个命令行工具,用于配置和管理IPVS。

(1)配置虚拟 IP 地址(VIP:20.0.0.12)

cd /etc/sysconfig/network-scripts/:切换到网络配置文件目录。cp ifcfg-ens33 ifcfg-ens33:0:复制名为ifcfg-ens33的网络配置文件为ifcfg-ens33:0。这将创建一个名为ens33:0的虚拟网络接口配置文件。vim ifcfg-ens33:0:使用vim编辑器打开ifcfg-ens33:0配置文件。在ifcfg-ens33:0配置文件中,添加以下内容:DEVICE=ens33:0
ONBOOT=yes
IPADDR=20.0.0.12
NETMASK=255.255.255.255
这些配置将设置虚拟网络接口ens33:0的设备名称、启动时自动激活、IP地址和子网掩码。ifup ens33:0:激活ens33:0虚拟网络接口。这将使配置的IP地址生效。ifconfig ens33:0:显示ens33:0虚拟网络接口的详细信息,包括IP地址、子网掩码等。

(2)调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
vim /etc/sysctl.conf  使用vim编辑器打开sysctl.conf文件
在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
以上这些配置将禁用IP转发和发送重定向sysctl -p  重新加载sysctl.conf文件中的配置。使新的配置生效

(3)配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm  将当前的IPVS配置保存到/etc/sysconfig/ipvsadm文件中。这将创建一个名为ipvsadm的配置文件,其中包含当前的IPVS规则
systemctl start ipvsadm  启动ipvsadm服务。这将加载之前保存的IPVS配置,并开始使用IPVS进行负载均衡。
ipvsadm -C  清空当前的IPVS配置。删除所有的虚拟服务器和真实服务器配置。
ipvsadm -A -t 20.0.0.12:80 -s rr  添加一个名为20.0.0.12:80的虚拟服务器,并使用轮询(round-robin)算法进行负载均衡。这将创建一个新的虚拟服务器配置
ipvsadm -a -t 20.0.0.12:80 -r 20.0.0.103:80 -g			
ipvsadm -a -t 20.0.0.12:80 -r 20.0.0.104:80 -g 将真实服务器20.0.0.104:80添加到虚拟服务器20.0.0.12:80的后端组中。这将进一步扩展负载均衡,将流量分发到多个真实服务器,并使用源IP散列(source IP hash)算法进行负载均衡。请注意,如果您使用的是隧道模式,应将-g替换为-i。
ipvsadm  显示当前的IPVS配置。这将列出所有的虚拟服务器、真实服务器和负载均衡算法等详细信息ipvsadm -ln					#查看节点状态,Route代表 DR模式

二.部署共享存储(NFS服务器:20.0.0.101)

systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind  用yum包管理器安装nfs-utils和rpcbind软件包。这些软件包提供了NFS(Network File System)和RPC(Remote Procedure Call)的相关工具和服务。
mkdir /opt/kgc /opt/benet 创建/opt/kgc和/opt/benet目录。这些目录将用于共享文件系统
chmod 777 /opt/kgc /opt/benet 将/opt/kgc和/opt/benet目录的权限设置为777。这将允许任何用户对这些目录进行读取、写入和执行操作。vim /etc/exports  使用vim编辑器打开/etc/exports文件。这个文件用于配置NFS共享。
在/etc/exports文件中,添加以下内容:
/usr/share *(ro,sync)
/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
这些配置将定义NFS共享的目录和访问权限。第一行将/usr/share目录以只读方式共享给所有主机。第二行将/opt/kgc目录以读写方式共享给20.0.0.0/24网段的主机。第三行将/opt/benet目录以读写方式共享给20.0.0.0/24网段的主机。systemctl start nfs.service 启动nfs服务。这将启动NFS服务器,并开始共享配置的目录。
systemctl start rpcbind.service 启动rpcbind服务。这将启动RPC绑定服务,以便NFS服务器可以与客户端进行通信。

三.配置节点服务器(20.0.0.103、20.0.0.104)

systemctl stop firewalld.service 
setenforce 01)配置虚拟 IP 地址(VIP:20.0.0.12)
#此地址仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
cd /etc/sysconfig/network-scripts/   切换到/etc/sysconfig/network-scripts/目录
cp ifcfg-lo ifcfg-lo:0		复制ifcfg-lo文件为ifcfg-lo:0。这将创建一个名为ifcfg-lo:0的新文件,用于配置虚拟接口
vim ifcfg-lo:0 使用vim编辑器打开ifcfg-lo:0文件。
在ifcfg-lo:0文件中,添加以下内容:DEVICE=lo:0
ONBOOT=yes
IPADDR=20.0.0.12
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1
以上这些配置将定义虚拟接口lo:0的设备名称、启动时自动激活、IP地址和子网掩码。ifup lo:0  激活虚拟接口lo:0。这将启用新配置的虚拟接口。
ifconfig lo:0 显示虚拟接口lo:0的配置信息。这将列出虚拟接口的IP地址、子网掩码等详细信息
route add -host 20.0.0.12 dev lo:0  添加一个路由规则,将主机20.0.0.12的流量通过虚拟接口lo:0发送。这将确保流量正确地通过虚拟接口。vim /etc/rc.local  使用vim编辑器打开/etc/rc.local文件
在/etc/rc.local文件中,添加以下内容:
/sbin/route add -host 20.0.0.12 dev lo:0chmod +x /etc/rc.d/rc.local  将/etc/rc.local文件设置为可执行。这将确保在系统启动时自动执行其中的命令。(2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
vim /etc/sysctl.conf  使用vim编辑器打开/etc/sysctl.conf文件
....../etc/sysctl.conf文件中,添加以下内容:
net.ipv4.conf.lo.arp_ignore = 1			#系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2		#系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
以上这些配置将设置系统的ARP参数,以确保系统只响应目的IP为本地IP的ARP请求,并使用发送接口的IP地址作为ARP请求的源地址。
sysctl -p  重新加载sysctl.conf文件中的配置。这将使新的ARP参数生效或者
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore:将虚拟接口lo的arp_ignore参数设置为1。echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce:将虚拟接口lo的arp_announce参数设置为2。echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore:将所有接口的arp_ignore参数设置为1。echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce:将所有接口的arp_announce参数设置为2。sysctl -p:重新加载sysctl.conf文件中的配置。这将使新的ARP参数生效。yum -y install nfs-utils rpcbind httpd:使用yum包管理器安装nfs-utils、rpcbind和httpd软件包。这些软件包提供了NFS、RPC和HTTP服务的相关工具和服务。systemctl start rpcbind:启动rpcbind服务。这将启动RPC绑定服务,以便NFS服务器可以与客户端进行通信。systemctl start httpd:启动httpd服务。这将启动Apache HTTP服务器。--20.0.0.103---mount.nfs 20.0.0.101:/opt/kgc /var/www/html 将20.0.0.101主机上的/opt/kgc目录挂载到本地的/var/www/html目录。这将使20.0.0.103主机上的Apache HTTP服务器可以访问/opt/kgc目录中的文件
echo 'this is kgc web!' > /var/www/html/index.html 将一条消息写入/var/www/html/index.html文件,以显示在浏览器中。--20.0.0.104---
mount.nfs 20.0.0.101:/opt/benet /var/www/html 将20.0.0.101主机上的/opt/benet目录挂载到本地的/var/www/html目录。这将使20.0.0.104主机上的Apache HTTP服务器可以访问/opt/benet目录中的文件
echo 'this is benet web!' > /var/www/html/index.html 将一条消息写入/var/www/html/index.html文件,以显示在浏览器中。

4.测试 LVS 群集
在客户端使用浏览器访问 http://20.0.0.12/

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

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

相关文章

【网络】数据链路层——MAC帧协议 | ARP协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 来到数据链路层后,完整的数据被叫做数据帧,习惯上称之为MAC帧。 MAC帧协议 | A…

C++STL之string类

​ 食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识:C基础 ♈️今日夜电波:喜劇—星野源 1:06 ━━━━━━️💟──────── 3:51 …

AI 绘画Stable Diffusion 研究(十三)SD数字人制作工具SadTlaker使用教程

免责声明: 本案例所用安装包免费提供,无任何盈利目的。 大家好,我是风雨无阻。 想必大家经常看到,无论是在产品营销还是品牌推广时,很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵,少则几…

三自由度PUMA机器人非线性控制研究(Matlab代码、Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

pandas数据分析40——读取 excel 合并单元格的表头

案例背景 真的很容易疯....上班的单位的表格都是不同的人做的,所以就会出现各种合并单元格的情况,要知道我们用pandas读取数据最怕合并单元格了,因为没规律...可能前几列没合并,后面几列又合并了....而且pandas对于索引很严格&am…

飞机打方块(四)游戏结束

一、游戏结束显示 1.新建节点 1.新建gameover节点 2.绑定canvas 3.新建gameover容器 4.新建文本节点 2.游戏结束逻辑 Barrier.ts update(dt: number) {//将自身生命值取整let num Math.floor(this.num);//在Label上显示this.num_lb.string num.toString();//获取GameCo…

Flink学习笔记(一)

流处理 批处理应用于有界数据流的处理,流处理则应用于无界数据流的处理。 有界数据流:输入数据有明确的开始和结束。 无界数据流:输入数据没有明确的开始和结束,或者说数据是无限的,数据通常会随着时间变化而更新。 在…

【SpringCloud】SpringCloudAlibaba官网资料

出现原因 Spring Cloud Netflix Projects Entering Maintenance Mode 官网 博客 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md官网 https://spring.io/projects/spring-cloud-alibaba#overview英文 https://github.com/alibaba/spring-cloud-…

数模论文写作细节要求

目录 优秀论文必要条件 数学建模的基本思路 第一步:了解问题——查文献、找数据 第二步:阐述要解决什么问题、用什么方法 其余步骤:给出数学模型、计算求解、对比结果与真实情况、应用于现实问题。 使用某种数学方法的理由和依据 创…

【C语言进阶(4)】指针和数组笔试题

文章目录 Ⅰ 一维数组Ⅱ 字符数组题型 1题型 2题型 3 Ⅲ 二维数组 数组名的意义 sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示的是整个数组,取出的是整个数组的地址。除了上述…

和鲸 ModelWhale 与中科可控多款服务器完成适配认证,赋能中国云生态

当前世界正处于新一轮技术革命及传统产业数字化转型的关键期,云计算作为重要的技术底座,其产业发展与产业规模对我国数字经济的高质量运行有着不可取代的推动作用。而随着我国数字上云、企业上云加快进入常规化阶段,云计算承载的业务应用越来…

Python——列表(list)推导式

本文基于python3。 目录 1、Python推导式2、列表(list)推导式2.1、定义2.2、实际操作2.2.1、一个表达式,后面为一个 for 子句2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。2.2.3、一个表达式,后面为一个…

Java虚拟机(JVM):引用计数算法

一、引言 我们学习了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来就已知的…

Rancher使用cert-manager安装报错解决

报错: rancher-rke-01:~/rke/rancher-helm/rancher # helm install rancher rancher-stable/rancher --namespace cattle-system --set hostnamewww.rancher.local Error: INSTALLATION FAILED: Internal error occurred: failed calling webhook "webhook…

数据结构 - 线性表的定义和基本操作

一、定义 线性表是具有相同特性的数据元素的一个有限序列。 线性表: 由n(n≥0)个数据元素(结点)组成的有限序列。线性表中数据元素是一对一的关系,每个结点最多有一个直接前驱,和一个直接后继 二、线性表的基本操作 …

ORB-SLAM2学习笔记9之图像帧Frame

文章目录 0 引言1 Frame类1.1 构造和重载函数1.1.1 双目相机1.1.2 RGBD相机1.1.3 单目相机 1.2 成员函数1.2.1 特征点去畸变1.2.2 特征点网格分配1.2.3 双目匹配1.2.4 RGBD相机深度计算 1.3 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记7详细了解了System主类和多线程和…

伦敦金走势图行情值得关注

不知道大家是否了解过伦敦金这个投资品种,或者有否财经网站以及金融终端上看到过它的行情走势图。其实,伦敦金并不是一种实实在在的黄金,而是一种跟踪伦敦现货黄金市场价格走势的黄金保证金交易品种,它每天的行情走势变化&#xf…

Vue-9.集成(.editorconfig、.eslintrc.js、.prettierrc)

介绍 同时使用 .editorconfig、.prettierrc 和 .eslintrc.js 是很常见的做法,因为它们可以在不同层面上帮助确保代码的格式一致性和质量。这种组合可以在开发过程中提供全面的代码维护和质量保证。然而,这也可能增加一些复杂性,需要谨慎配置…

Matlab使用

Matlab使用 界面介绍 新建脚本:实际上就是新建一个新建后缀为.m的文件 新建编辑器:ctrlN 打开:打开最近文件,以找到最近写过的文件 点击路径,切换当前文件夹 预设:定制习惯用的界面 常见简单指令 ;…