LVS负载均衡与DR模式

news2024/12/25 9:04:09

LVS负载均衡与DR模式

  • 一、DR模式的特点
  • 二、LVS-DR中的ARP问题
      • 1.VIP地址相同导致响应冲突
      • 2.返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱
  • 三、DR模式 LVS负载均衡群集部署
      • 实验准备
      • 实验部署
      • 实验步骤
        • 1.配置负载调度器(192.168.30.10)
        • 2.部署共享存储(NFS服务器:192.168.30.40)
        • 3.配置节点服务器(192.168.30.20、192.168.30.30)
        • 4.测试 LVS 群集

一、DR模式的特点

  • Director Server(调度器) 和 Real Server(节点服务器) 必须在同一个物理网络中。
  • Real Server可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过互联网对RIP进行直接访问。
  • Director Server作为群集的访问入口,但不作为网关使用。
  • 所有的请求报文经由Director Server, 但回复响应报文不能经过Director Server。
  • Real Server 的网关不允许指向Director Server IP, 即Real Server发送的数据包不允许经过Director Server。(RS的网关地址只能指定真实的路由器网关)
  • Real Server 上的 lo 接口配置VIP的IP地址。

二、LVS-DR中的ARP问题

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.返回报文时源地址使用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地址。

三、DR模式 LVS负载均衡群集部署

实验准备

DR 服务器:192.168.30.10
NFS共享服务器1:192.168.30.40
vip:192.168.30.188
客户端:192.168.30.200
节点服务器1:192.168.30.20
节点服务器2:192.168.30.30

实验部署

在这里插入图片描述

实验步骤

1.配置负载调度器(192.168.30.10)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

`(1)配置虚拟 IP 地址(VIP:192.168.30.188)`
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens32:0				#若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens32:0
DEVICE=ens32:0
ONBOOT=yes
IPADDR=192.168.30.188
NETMASK=255.255.255.255

ifup ens32:0
ifconfig ens32: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 = 0

sysctl -p

`(3)配置负载分配策略`
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.30.188:80 -s rr
ipvsadm -a -t 192.168.30.188:80 -r 192.168.30.20:80 -g			#若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.30.188:80 -r 192.168.30.30:80 -g
ipvsadm

ipvsadm -ln					#查看节点状态,Route代表 DR模式

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

systemctl stop firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind
mkdir /opt/ztm /opt/hss
chmod 777 /opt/ztm /opt/hss

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.30.0/24(rw,sync)
/opt/benet 192.168.30.0/24(rw,sync)

systemctl start rpcbind.service
systemctl start nfs.service

3.配置节点服务器(192.168.30.20、192.168.30.30)

systemctl stop firewalld.service
setenforce 0
(1)配置虚拟 IP 地址(VIP:192.168.30.188)
#此地址仅用作发送 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.30.188
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1

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

vim /etc/rc.local
/sbin/route add -host 192.168.30.188 dev lo:0

chmod +x /etc/rc.d/rc.local

(2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
vim /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

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_announce

sysctl -p

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

--192.168.30.20---
mount.nfs 192.168.30.40:/opt/ztm /var/www/html
echo 'this is ztm web!' > /var/www/html/index.html

--192.168.30.30---
mount.nfs 192.168.30.40:/opt/hss /var/www/html
echo 'this is hss web!' > /var/www/html/index.html

4.测试 LVS 群集

在客户端使用浏览器访问 http://192.168.30.188/

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

荣登第一,亚马逊云科技帮助用户实现云上快速部署,轻松维护不同类型的数据库

近期,Gartner发布了2022年全球数据库管理系统(Database Management System,DBMS)市场份额报告,在这一排名中出现了微妙变化,那就是亚马逊云科技超过微软,登上了第一“宝座”,占据了市…

MySQL数据库常用命令

mysql是不见 分号 不执行,分号表示结束。\c可以终止命令的输入。 1.登录数据库 mysql -u root -p然后在输入密码 root 2.查看数据库(以分号结尾) show databases; 3.创建数据库 pk create database pk; 4.使用数据库pk use pk; 5.删除数据库pk drop database…

【2023电工杯】B题人工智能对大学生学习影响的评价26页论文及python代码

【2023电工杯】B题人工智能对大学生学习影响的评价26页论文及python代码 1 题目 B题 人工智能对大学生学习影响的评价 人工智能简称AI,最初由麦卡锡、明斯基等科学家于1956年在美国达特茅斯学院开会研讨时提出。 2016年,人工智能AlphaGo 4:1战胜韩国…

5分钟让你明白什么是面向对象编程

相信很多刚开始接触编程的小伙伴,对于什么是面向对象,什么是面向过程都是一脸懵逼的。 网上关于这两个的回答真的很多,但是都有一个共同特点:------------不容易懂。 让我们来看看某百科给出的定义: 能不能好好说话!…

浮点数在内存中的运算

他们力量的源泉,是值得信赖的搭档以及想要保护的对象还有强大的敌人 本文收录于青花雾气-计算机基础 往期回顾 从汇编代码探究函数栈帧的创建和销毁的底层原理 从0到1搞定在线OJ 数据在内存中的存储 计算机存储的大小端模式 目录 浮点数的二进制转化及存储规…

pySCENIC单细胞转录因子分析更新:数据库、软件更新

***pySCENIC全部往期精彩系列:1、PySCENIC(一):python版单细胞转录组转录因子分析2、PySCENIC(二):pyscenic单细胞转录组转录因子分析3、PySCENIC(三):pyscen…

我的创作纪念日之这四年的收获与体会

第一次来写自己的创作纪念哈,不知不觉都已经过去整整四年了,好与不好还请大家担待: 1、机缘 1. 记得是大一、大二的时候就听学校的大牛说,可以通过写 CSDN 博客,来提升自己的代码和逻辑能力,以及后面工作…

图解LeetCode——994. 腐烂的橘子

一、题目 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回直到单元格…

醒醒吧,连新来的实习生都在进阶自动化,你还在点点点吗,聪明人都在提升自己!

5年测试老兵了,真的很迷茫,觉得自己不再提升自己,真的会被实习生替代。 很多朋友跟我吐槽,说自己虽然已经工作3-4年,可工作依旧是点点点,新来的实习生用一周的时间就把工作内容学会了,他的压力…

让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验?

让博客支持使用 ChatGPT 生成文章摘要是一种什么样的体验? 起因 Sakurairo 主题支持了基于 ChatGPT 的 AI 摘要功能,我有点眼红,但是因为那是个主题限定功能,而我用的又是 Argon,遂想着让 Argon 也支持 AI 摘要功能。…

【spring】spring是什么?详解它的特点与模块

作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、spring介绍 二、spring的特点(七点) 1、简化开发 2、AOP的支持 3、声明式事务的支持 4、方便测试 5、…

springcloud 父项目建立(一)

我们开发项目,现在基本都用到maven,以及用父子项目,以及公共模块依赖,来构建方便扩展的项目体系; 首先我们建立父项目 microservice ,主要是一个pom,管理module,以及管理依赖&#x…

shell实现多并发控制

背景: 遇到一个业务需求,一个上位机需要向多个下位机传送文件,当前的实现是for循环遍历所有下位机,传送文件,但是此种方法耗时太久,需要优化。因此可以通过并发的方式向下位机传送文件。 这边写一段测试代…

【Vue3 第二十七章】路由和状态管理

一、路由 1.1 服务端路由 与 客户端路由 服务端路由 服务端路由指的是服务器根据用户访问的 URL 路径返回不同的响应结果。当我们在一个传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML,然后重新加载整个页面。客户端路…

人机交互学习-2 人机交互基础知识

人机交互基础知识 交互框架作用执行/评估活动周期 EEC四个组成部分七个阶段和两个步骤 执行隔阂&评估隔阂扩展EEC模型四个部分两个阶段 交互形式命令行交互菜单驱动界面基于表格的界面直接操纵问答界面隐喻界面自然语言交互交互形式小结 理解用户信息处理模型信号处理机人类…

“秩序与自由”——超详细的低代码开发B端产品前端页面设计规范

Hi,我们是钟茂林和李星潮,来自万应低代码 UI 设计团队。 编辑搜图 编辑搜图 左:钟茂林 右:李星潮 在过去,B 端应用通常只在企业内部员工中使用,与 C 端产品数以千万计的用户相比显得少之…

Pycharm 配置Django 框架(详解篇)

首先你必须具备pycharm 专业版 / 社区版也可以 打开pycharm专业版 找到在最下方菜单栏找到 Terminal 第二步:检查自己的python版本 python --version 第三步: 寻找和自己python版本匹配的django版本 (图片来源: 化雨随风 …

【NLP模型】文本建模(2)TF-IDF关键词提取原理

一、说明 tf-idf是个可以提取文章关键词的模型;他是基于词频,以及词的权重综合因素考虑的词价值刻度模型。一般地开发NLP将包含三个层次单元:最大数据单元是语料库、语料库中有若干文章、文章中有若干词语。这样从词频上说,就有词…

华为OD机试真题 JavaScript 实现【最小传输时延】【2023 B卷 100分】,附详细解题思路

一、题目描述 某通信网络中有N个网络节点,用1到N进行标识。 网络通过一个有向无环图表示,其中图的边的值表示结点之间的消息传递时延。 现给定相连节点之间的时延列表times[i] {u,v,w},u表示源节点,v表示目的节点,…

C++入门攻略

C补足C语言部分缺陷 1.命名空间:1.1 命名空间namespace关键字1.命名空间中可以定义变量、函数、类型2.命名空间可以嵌套3.相同命名空间共存 1.2 命名空间的使用方式:1.名称加用域作用限定符的方式访问(同上)2.使用using引入某个空…