LVS负载均衡—DR模式

news/2024/5/18 21:08:48/文章来源:https://blog.csdn.net/qq_62462797/article/details/127307050

内容预知

 1.DR模式的特点

 2.LVS-DR中的ARP问题

2.1 问题一:VIP地址相同导致响应冲突

问题原因:

解决方法:

2.2 问题二:返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱

问题原因:

解决方法:

2.3 Linux部署NAT模式的应对方案

 3.LVS单网段DR模式部署

 实验准备

实验具体操作步骤 

步骤一: 配置负载调度器(192.168.73.105)

步骤二:部署共享存储(NFS服务器:192.168.73.105) 

步骤三:配置节点服务器(192.168.73.106、192.168.73.107) 

 步骤四:客户机(192.168.73.109)访问VIP地址(192.168.73.66) ,并且测试负载均衡效果

LVS-DR模式部署总结

NFS服务器的设置

调度器设置

节点服务器配置


 

 1.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。(RS的网关地址只能指定真实的路由器网关)

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

 2.LVS-DR中的ARP问题

2.1 问题一:VIP地址相同导致响应冲突

问题原因:

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

  • 当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同的网络上,它们都会收到ARP广播。
  • 只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。

解决方法:

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

  • 使用虚接口lo:0承载VIP地址
  • 设置内核参数 arp_ ignore=1:系统只响应目的IP为本地IP(物理网卡的地址,而不是lo网卡的虚接口地址)的ARP请求。

2.2 问题二:返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱

问题原因:

  • RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
  • 发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址。
  • 路由器收到ARP请求后,将更新ARP表项。原有的VIP对应Director的MAC地址,会被更新为VIP对应的Real Server的MAC地址。导致网关设备的ARP缓存表紊乱。
  • 路由器根据ARP表项,会将新来的请求报文转发给Real Server,导致Director的VIP失效。

解决方法:

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

2.3 Linux部署NAT模式的应对方案

vim /etc/sysctl.conf     //添加以下四行参数net.ipv4.conf.lo.arp_ignore = 1  net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.all.arp_announce = 2​sysctl -p  //刷新配置,读取修改后的配置​#arp_ignore=1 :使本机系统只响应目的IP为本地物理网卡IP的ARP请求。#arp_announce=2:使本机系统不使用即将返回的IP数据包的源地址来作为ARP请求报文的源地址,而采用发送接口(物理网卡)的IP作为ARP请求报文源地址。

 3.LVS单网段DR模式部署

 实验准备

五台虚拟机(两台web服务虚拟机,一台DR负载均衡调度器,一台客户机,一台NFS共享服务机),具体IP配置如下:

 DR 服务器:192.168.73.105
Web 服务器1:192.168.73.106
Web 服务器2:192.168.73.107

NFS共享服务机:192.168.73.108
客户端:192.168.73.109

vip:192.168.73.66

实验部署简图: 

实验具体操作步骤 

步骤一: 配置负载调度器(192.168.73.105)

基本配置: 

systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

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

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0                #若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.73.66
NETMASK=255.255.255.255ifup ens33:0
ifconfig ens33:0


(2)调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
vim /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 = 0sysctl -p

(3)配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.73.66:80 -s rr
ipvsadm -a -t 192.168.73.66:80 -r 192.168.73.106:80 -g            #若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.73.66:80 -r 192.168.73.107:80 -g
ipvsadmipvsadm -ln                    #查看节点状态,Route代表 DR模式

步骤二:部署共享存储(NFS服务器:192.168.73.105) 

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

 

步骤三:配置节点服务器(192.168.73.106、192.168.73.107) 

(1)配置虚拟 IP 地址(web1和web2 的相同设置) 

#此地址仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0		
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.73.66
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1ifup lo:0
ifconfig lo:0
route add -host 192.168.73.66 dev lo:0vim /etc/rc.local
/sbin/route add -host 192.168.73.66 dev lo:0chmod +x /etc/rc.d/rc.local

 (2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突(web1和web2的相同设置)

vim /etc/sysctl.confnet.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
sysctl -p或者
(echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announcesysctl -p)yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

(3) web1 节点服务器(192.168.73.106)的测试网页设置:


mount.nfs 192.168.73.108:/opt/web1 /var/www/html
echo '<h1>this is  web1 test !</h1>' > /var/www/html/index.html

(4)web2的测试网页设置: 

mount.nfs 192.168.73.108:/opt/benet /var/www/html
echo '<h1>this is web2 test!</h1>' > /var/www/html/index.html

此外为了快速测试web1节点服务器和web2节点服务器是否达到负载均衡的效果,可以关掉主配置中的连接保持 

vim  /etc/httpd/conf/httpd.confKeepAlive off

 步骤四:客户机(192.168.73.109)访问VIP地址(192.168.73.66) ,并且测试负载均衡效果

 

LVS-DR模式部署总结

NFS服务器的设置

(1)安装nfs-utils、rpcbind软件包

(2)新建共享目录,并创建站点文件

(3)修改共享配置文件,设置共享策略

(4)启动两个服务,查看本机的NFS共享信息

调度器设置

 (1)加载 ip_vs 模块,安装ipvsadm工具

(2)配置虚拟网卡(ens33:0)IP地址(VIP)

(3)条件proc参数,并且关闭路由转发功能

 (4)使用ipvsadm工具配置负载均衡策略(配置时注意,该转发设置基于VIP设置,而非调度器本身的IP

节点服务器配置

 (1)安装httpd服务,并且创建各自的测试网页(真实环境是多个节点服务器挂同一个NFS共享机,并且内容网页相同。)

(2)添加虚拟网卡,与调度器不同,节点服务器设置的虚拟网卡为回环的虚拟网卡(lo:0),用于承载VIP,做自身数据处理

  (3)调整内核(/etc/sysctl.conf)的参数设置,以阻止更新 VIP 的 MAC 地址,避免发生冲突。

  (4)添加路由,指定设备为回环的虚拟网卡(也是承载VIP的虚拟网卡)

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

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

相关文章

GitHub爆火,一份从零到1「架构师成长手册」,原来成为架构师也有捷径

架构师】我想应该没有哪个程序员会陌生了吧&#xff0c;作为一个程序员技术追求的里程碑&#xff0c;有多少程序员想转型架构师而不得门路&#xff0c;其实架构师比较抽象的拆解能力就两方面技术项目足够的技术栈深度和广度再加上足够的项目经验其实是完全可以驾驭架构师的岗位…

QFramework v1.0 使用指南 架构篇:05. 引入 Utility

05. 引入 Utility 在这一篇&#xff0c;我们来支持 CounterApp 的存储功能。 其代码也非常简单&#xff0c;只需要修改一部分 Model 的代码即可&#xff0c;如下&#xff1a; // 定义一个 Model 对象public class CounterAppModel : AbstractModel{private int mCount;public…

爬虫学习(01):了解爬虫超文本传输协议的理解

一、爬虫入门二、web请求过程(百度为例)2.1 页面渲染1. 服务器渲染 -> 数据直接在页面源代码里能搜到2. 前端JS渲染 -> 数据在页面源代码里搜不到三、浏览器工具的使用(重点)1. Elements2. Console3. Source4. Network四、超文本传输协议请求:响应:https协议加密方法(三种…

常见的网络安全风险有哪些?

常见的网络安全风险&#xff1a; 1、勒索软件 勒索软件(Ransomware&#xff0c;又称勒索病毒)是一种恶意软件&#xff0c;它的工作方式基本与计算机病毒类似&#xff0c;不过跟一般的计算机病毒不同&#xff0c;它们不会直接地破坏数据&#xff0c;而是将数据进行加密锁定&am…

搭建云上博客

安装apache: yum -y install httpd mod_ssl mod_perl mod_auth_mysql httpd -v systemctl start httpd.service Firefox ESR浏览器的址栏中&#xff0c;访问http://ECS公网地址。 安装MariaDB数据库: yum install -y mariadb-server systemctl start mariadb systemctl …

Day33、JavaScript

1、JavaScript 1.1、JavaScript组成 1.2、什么是ECMAScript 1&#xff09;ECMAScript是一种语法标准 语法、变量和数据类型、运算符、逻辑控制语句、关键字、保留字、对象 2&#xff09;编码遵循ECMAScript标准 1.3、什么是BOM 1&#xff09;BOM&#xff1a;Browser Object Mod…

leetcode 474一和零

一和零 动态规划&#xff08;01背包&#xff0c;三级数组&#xff09; 和经典的背包问题只有一种容量不同&#xff0c;这道题有两种容量&#xff0c;即选取的字符串子集中的 0 和 1 的数量上限。 经典的背包问题可以使用二维动态规划求解&#xff0c;两个维度分别是物品和容量…

DataFrame简介

dataframe是什么 DataFrame实质上是存储在不同节点计算机中的一张关系型数据表。分布式存储最大的好处是&#xff1a;可以让数据在不同的工作节点上并行存储&#xff0c;以便在需要数据的时候并行运算。 dataframe与RDD的关系 RDD是一种分布式弹性数据集&#xff0c;将数据分…

高项 案例分析重点知识 人力资源沟通干系人

七、人力资源管理 人力资源管理常见考点&#xff1a; 一、人力资源重要知识点&#xff08;人力资源管理计划、成功团队的特征、项目经理要求、权利的分类、激励理论等&#xff09; 二、人力资源常见问题及答题要点&#xff08;管理风格、领导关系、人员责职、项目经理任命、…

SAP LTO1创建转储 L_TO_CREATE_MULTIPLE 及前台操作

目录 LT01 转储前台操作 用L_TO_CREATE_MULTIPLE做转储 数据的传参 TRY-CATCH 异常捕获 代码展示 LT01 转储前台操作 首先输入T-CODE LT01 进入一下界面 如图所示输入必输项(数据用自个的) 然后回车 回车后会进入下面的界面输入从.......到目的地的数据,数量也要输 然…

保姆教程系列一:国产数据库达梦安装教程(DM)

系列文章目录 保姆教程系列一、国产达梦数据库安装教程 保姆教程系列二、国产数据库达梦无缝迁移 保姆教程系列三、国产数据库整合Spring boot 文章目录系列文章目录前言简介一、准备工作1.1 检查docker版本1.2 获取镜像二、运行初始化2.1 运行并初始化容器2.2 容器运行失败异常…

MPNet: Masked and Permuted Pre-training for Language Understanding(2020-4-20)

模型介绍 BERT采用掩模语言建模(MLM)进行预训练&#xff0c;是最成功的预训练模型之一。由于BERT忽略了预测的 token 之间的依赖关系&#xff0c;XLNet引入了排列语言建模(PLM)进行预训练&#xff0c;以解决这个问题。然而&#xff0c;XLNet并没有利用一个句子的全部位置信息&…

Windows系统历史版本简介

思考&#xff1a;30年间Windows系统有哪些版本呢&#xff1f; 木易巷带你了解~ 前言 跟我一起&#xff0c;穿越时间&#xff01; 你在使用什么操作系统&#xff0c;是Windows还是MacOS还是Linux? 一、Windows 1.0 1985年11月20日&#xff0c;微软推出了历史上第一款视窗操…

orin+96712接GMSL2相机调试经验

文章目录 1. 9295端2. 96712端a. Link lock状态Link ALink BLink CLink Db. VID PIPELINE LOCK状态c.video有效数据d. GMSL2及LINK EN 状态e.CSIPLL 状态1. 9295端 如下4个寄存器,确认相机pclk_DET状态,其中正常值是有⼀路值是0x8a。 (VID_TX X)0x102 (VID_TX Y)0x10A (V…

看了这篇Java 泛型通关指南,再也不怵满屏尖括号了

在前面介绍 Java 集合框架里的各种容器的时候&#xff0c;我们已经接触到泛型了&#xff0c;那时我们对泛型的简单理解是&#xff0c;类似这样 ArrayList 声明一个 ArrayList 实例&#xff0c;就给它做了个类型限制&#xff0c;让能让它其中只能放入 String 类型的元素。泛型在…

MASA Framework 的异常处理

前言 在程序设计中&#xff0c;我们会遇到各种各样的异常问题&#xff0c;一个异常处理不仅仅可以帮助开发者快速的定位问题&#xff0c;也可以给用户更好的使用体验&#xff0c;那么我们在AspNetCore项目中如何捕获以及处理异常呢&#xff1f; 而对应AspNetCore程序&#xf…

攻击类型热点分布

蔓灵花&#xff08;BITTER&#xff09; 蔓灵花 (BITTER) 组织是一个长期针对巴基斯坦和中国等国家进行攻击的攻击组织&#xff0c;主要针对政府、 军工业、电力和核设施等单位进行攻击&#xff0c;具有强烈的政治意图。该组织通常使用 InPage 文档处理软件 的漏洞进行攻击&…

Mybatis入门(十)

目录 视频教程: https://www.bilibili.com/video/BV1WZ4y1P7Bp?p147 官方笔记链接&#xff1a;https://pan.baidu.com/s/1dnL5hwOPHPMNgb81yzQIOQ 提取码&#xff1a;2022 项目目录结构 1. MyBatis的快速入门 ① 添加MyBatis的坐标 ② 创建user数据表 ③ 编写User实体类 …

花2个月时间整理了3.5W字的自动化测试面试题(答案+学习路线)为了找到好工作,拼了

从6月初开始找工作到现在&#xff0c;先后面试了阿里巴巴、字节跳动、网易、快手的测试开发岗。 大公司对于测试开发的要求相比来说高很多&#xff0c;要求掌握的知识点的广度和深度层次也比较高&#xff0c;遂整理了这两个月的面试题目文档供大家参考&#xff0c;同时也是为了…

单刷 3 届 Hackathon,朝着理想中的数据库出发丨TiDB Hackathon 选手访谈

单刷 3 届 Hackathon&#xff0c;朝着理想中的数据库出发丨TiDB Hackathon 选手访谈 TiDB Hackathon 2022 正在火热报名中&#xff0c;截止目前已经收到 230 位参赛者报名&#xff0c;组队近 60 组。想必各位选手已经摩拳擦掌&#xff0c;开始准备自己项目的 RFC 了。在等待比…