LVS负载均衡群集(DR模式)

news2024/10/5 21:15:45

LVS-DR工作原理

数据包流向分析

第一步:客户端发送请求到 Director Server (负载均衡器),请求的数据报文到达内核空间。
数据报文
源 IP ------客户端的 IP
目标 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
源 MAC ------ Real Server 的 MAC
目的 MAC ------ 客户端的 MAC

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

DR模式的特点

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

LVS-DR中的ARP问题

问题一:

在LVS-DR负载均衡集群中,负载均衡与节点服务器都要配置相同的VIP地址。
在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱。
解决思路:
当ARP广播发送到LVS-DR集群时,因为负载均衡器和节点服务器都是连接到相同网络上,它们都会接收到ARP广播。
只有前端的负载均衡器进行响应,其他节点服务器不应该响应ARP广播。
对节点服务器进行处理,使其不响应针对VIP的ARP请求。
解决方法:
使用虚接口lo:0承载VIP地址
设置内核参数arp_ignore=1:系统只响应目的IP为本地IP的ARP请求

问题二:

RealServer返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要先获取路由器的MAC地址。
发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,而不使用发送接口的IP地址
如:ens33
路由器收到ARP请求后,将更新ARP表项
原有的VIP对应Director的MAC地址会被更新为VIP对应RealServer的MAC地址
路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效
解决方法:
对节点服务器进行处理,设置内核参数arp_announce=2:系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
 

解决ARP的两个问题的设置方法

修改 /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

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

环境搭建:

主机操作系统IP地址所需服务
DR 服务器(负载调度器)CentOS7ens33:192.168.254.100
ens33:0 (VIP):192.168.254.10
ipvsadm
Web节点服务器1CentOS7ens33:192.168.254.150
lo:0 (VIP):192.168.254.10
nfs-utils、rpcbind、httpd
Web节点服务器2CentOS7ens33:192.168.254.200
lo:0 (VIP):192.168.254,10
nfs-utils、rpcbind、httpd
NFS服务器CentOS7192.168.254.110rpcbind、nfs-utils
客户端Windows10192.168.254.50

注意:此次搭建在同一局域网内,设置网络时不用网关和DNS,注释即可。如果不在同一网段,需要配置网关。

部署共享存储

NFS服务器:192.168.254.110

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum -y install nfs-utils rpcbind

systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/test1
mkdir /opt/test2

chmod 777 /opt/test1
chmod 777 /opt/test2

vim /etc/exports
/opt/test1 192.168.254.0/24(rw,sync)
/opt/test2 192.168.254.0/24(rw,sync)

exportfs -rv

 

 

 配置节点服务器

Web节点服务器1:ens33:192.168.254.150 lo:0 (VIP):192.168.254.10
Web节点服务器2:ens33:192.168.254.200 lo:0 (VIP):192.168.254.10

两台服务器一样的操作

#此地址仅用做发送 Web 响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器监听并分发)。
#因此使用虚接口 lo:0 来承载 VIP 地址,并为本机添加一条路有记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.254.10
NETMASK=255.255.255.255
ONBOOT=yes

ifup lo:0
ifconfig lo:0

#设置临时的路由,重启失效;禁锢路由
route add -host 192.168.254.10 dev lo:0
#查看路由
route -n

#开机自动添加路由,生产环境应该用这个
vim /etc/rc.local
/sbin/route add -host 192.168。254.10 dev lo:0
chmod +x /etc/rc.d/rc.local

 

 

 

 调整内核的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

yum install -y nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl enable rpcbind
systemctl start httpd.service
systemctl enable httpd.service

 

 

 

 Web节点服务器1:ens33:192.168.254.150 lo:0 (VIP):192.168.163.10

showmount -e 192.168.163.110

mount.nfs 192.168.163.150:/opt/test1 /var/www/html
echo 'this is test1 web!' > /var/www/html/index.html

 Web节点服务器2:ens33:192.168.254.200 lo:0 (VIP):192.168.163.10

showmount -e 192.168.163.110

mount.nfs 192.168.163.200:/opt/test1 /var/www/html
echo 'this is test2 web!' > /var/www/html/index.html

配置负载调度器

负载调度器:192.168.254.100 lo:0 (VIP):192.168.254.10

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

#加载ip_vs模块,并安装ipvsadm工具
modprobe ip_vs
cat /proc/net/ip_vs
yum install -y ipvsadm

配置虚拟 IP 地址(VIP:192.168.254.100)

vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.254.100
NETMASK=255.255.255.255

ifup ens33:0
ifconfig ens33:0

调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭Linux 内核的重定向参数响应,不充当路由器,
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

配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

#清除原有策略
ipvsadm -C
ipvsadm -A -t 192.168.254.10:80 -s rr
ipvsadm -a -t 192.168.254.10:80 -r 192.168.254.150:80 -g #如果这里是隧道模式,直接将-g替换成-i即可
ipvsadm -a -t 192.168.254.10:80 -r 192.168.254.200:80 -g

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

测试验证

在客户端访问 http://192.168.254.10/,刷新测试负载均衡是否成功

 小结

工作原理

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

特点

Director Server 和 Real Server 必须在同一个物理网络中。
Real Server 可以使用私有地址,也可以使用公网地址。如果使用公网地址,可以通过 互联网对 RIP 进行直接访问。
所有的请求报文经由 Director Server,但回复响应报文不能经过 Director Server。
Real Server 的网关不允许指向 Director Server IP,即不允许数据包经过 Director S erver。
Real Server 上的 lo 接口配置 VIP 的 IP 地址。
 

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

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

相关文章

全产业链核心升级 集聚创新大展宏图——慕尼黑华南电子展回顾

展会简介 2022年11月15日至17日,高交会 - 智能制造、先进电子及激光技术博览会旗下成员展 (LEAP Expo)-慕尼黑华南电子展、慕尼黑华南电子生产设备展、华南先进激光及加工应用技术展览会及同期举办的华南电路板国际贸易采购博览会与中国&…

【全网热点】打造全网最全爱心代码仓库【火速领取爱心】

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【代码实践】 目录🌙正文🌏部分效果在线演示🌏部分效果截屏🌸文末祝…

操作系统4小时速成:复习内存管理,内部碎片和外部碎片,页式存储管理,段式存储管理,段页式存储管理,虚拟内存,页面置换算法,LRU内存替换算法

操作系统4小时速成:复习内存管理,内部碎片和外部碎片,页式存储管理,段式存储管理,段页式存储管理,虚拟内存,页面置换算法,LRU内存替换算法 2022找工作是学历、能力和运气的超强结合体&#xff…

react面试题详解

React-Router怎么设置重定向&#xff1f; 使用<Redirect>组件实现路由的重定向&#xff1a; <Switch><Redirect from/users/:id to/users/profile/:id/><Route path/users/profile/:id component{Profile}/> </Switch>当请求 /users/:id 被重定…

显示控件——直线进度条

该控件是指定一个图标&#xff08;矩形长条&#xff09;&#xff0c;通过其滑动在水平方向或者垂直方向实现来调节指定存储空间的变量的效果。滑动范围对应变量地址数据&#xff0c;显示位置通过变量设定。可以配合“滑动调节”触摸控件进行设置。 位置信息&#xff1a;控件在工…

Android App接管手势处理TouchEvnet中单点触摸和多点触控的讲解及实战(附源码 超简单实用)

运行有问题或需要源码请点赞关注收藏后评论区留言~~~ 一、单点触摸 dispatchTouchEvent onInterceptTouchEvent onTouchEvent三个方法的输入参数都是手势事件MotionEvent&#xff0c;其中包含触摸动作的所有信息&#xff0c;各种手势操作都从MotionEvent中获取触摸信息并判断处…

Python3,5行代码,让你拥有无限量壁纸美图,终于告别手动下载了。

这里写目录标题1、引言2、代码实战2.1 手动下载2.2 代码批量下载3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 你电脑桌面壁纸挺好看啊。 小鱼&#xff1a;那是&#xff0c; 毕竟我的审美观在这摆着呢。 小屌丝&#xff1a;你这话&#xff0c;让我不服… 小鱼&#xff…

STC51单片机30——单个数码管显示

#include<reg51.h> // 包含51单片机寄存器定义的头文件 /************************************************** 函数功能&#xff1a;延时函数&#xff0c;延时一段时间 ***************************************************/ void delay(void) { unsigned …

腾讯二面vue面试题总结

Vue2.x 响应式数据原理 整体思路是数据劫持观察者模式 对象内部通过 defineReactive 方法&#xff0c;使用 Object.defineProperty 来劫持各个属性的 setter、getter&#xff08;只会劫持已经存在的属性&#xff09;&#xff0c;数组则是通过重写数组7个方法来实现。当页面使…

在 Swift 图表中使用 Foudation 库中的测量类型

前言 在这篇文章中&#xff0c;我们将建立一个条形图&#xff0c;比较基督城地区自然散步的持续时间。我们将使用今年推出的新的Swift Charts 框架&#xff0c;并将看到如何绘制默认不符合 Plottable 协议的类型的数据&#xff0c;如 Measurement<UnitDuration>。 定义…

【附源码】计算机毕业设计JAVA校园社团管理平台演示录像2021

【附源码】计算机毕业设计JAVA校园社团管理平台演示录像2021 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1…

537页15万字大数据治理体系、大数据可视化平台及应用方案

目录 第1章 前言 第2章 集团企业大数据现状分析 2.1、 基本现状 2.2、 总体现状 2.2.1、 行领导 2.2.2、 业务人员 2.3、 数据架构方面 2.3.1、 业务表现 2.3.2、 问题 2.4、 数据应用难题 2.4.1、 缺少统一的应用分析标准 2.4.1.1、 业务表现 2.4.1.2、 问题 2.4…

天天都在CRUD,你知道数据库如何工作的吗?

作为一个天天都在CRUD的程序员&#xff0c;你有没有想过&#xff0c;数据库是如何工作的&#xff1f; 今天&#xff0c;让我们从一个最最最简单的模型开始&#xff0c;揭开数据库神秘的一角。 对我们使用者而言&#xff0c;数据库就像是一个黑盒子&#xff0c;你可以往它里面…

神策 SCRM 正式发布,打通企业全域数据,聚焦私域精细化运营

随着企业微信能力的不断延展和客户接受度的持续提升&#xff0c;越来越多的企业开始基于企业微信生态搭建私域流量池&#xff0c;通过高粘性的专属服务和沟通提升客户满意度和转化效率。在企微私域运营过程中&#xff0c;他们发现&#xff1a; 管理难&#xff1a;客户分散在每位…

【Nginx】初识与环境准备

文章目录Nginx简介Nginx的优点及功能特性Nginx常用功能模块及组成Nginx系统环境准备Nginx安装方式介绍Nginx目录结构分析Nginx服务器启停命令方式一:Nginx服务的信号控制方式二:Nginx的命令行控制Nginx服务操作的问题Nginx配置成系统服务可能会出现的问题Nginx命令配置到系统环…

酷开科技 | 强势出圈,酷开系统一举突破媒介价值纵深

从起势到成熟&#xff0c;从无序到理性&#xff0c;从单一到多维&#xff0c;如今的OTT市场&#xff0c;早已是一个全新的舞台&#xff0c;不仅OTT的功能与服务承载更加丰富&#xff0c;产业的竞争维度也更加多元。踔厉奋发的OTT行业&#xff0c;在新的时代背景和产业环境下&am…

关于Python自动化的就业真相

作为近几年来特别受欢迎的编程语言之一&#xff0c;Python一直以来被众多行业内人士寄予厚望&#xff0c;今后有可能替代老牌霸主Java&#xff0c;成为新一代编程语言榜首。 为什么懂技术的人必学Python&#xff1f; 与其他语言相比&#xff0c;Python中的语言语法特别简单&a…

ABBYY FineReader PDF2023版本有什么新特点?

ABBYY FineReader PDF Windows版更加智能的 PDF 解决方案在数字化工作场所转换、编辑、共享和协作处理数字化工作场所中的 PDF 和扫描件。 在阅读某些扫描得到的PDF文档时&#xff0c;我经常因为它不可编辑而烦恼&#xff0c;直到我遇到了ABBYY。打开ABBYY FineReader PDF软件…

【MySQL进阶】深入理解B+树索引底层原理

【MySQL进阶】深入理解B树索引底层原理 文章目录【MySQL进阶】深入理解B树索引底层原理一、前言——没有索引的查找1、在一个页中的查找2、在很多页中查找3、总结二、索引1、一个简单的索引方案2、InnoDB中的索引方案3、B 树4、聚簇索引5、二级索引6、回表7、联合索引三、InnoD…

vivado跑完发邮件

前言 vivado 综合实现要跑好长时间&#xff0c;耍会儿手机不过分吧。然而我不想时不时抬头看有没有跑完&#xff0c;于是产生了该脚本 一. QQ邮箱配置 参考&#xff1a;https://blog.csdn.net/qq_40608730/article/details/104904398?spm1001.2014.3001.5502 &#xff08;注…