【LVS】2、部署LVS-DR群集

LVS-DR数据包的流向分析

1.客户端发送请求到负载均衡器,请求的数据报文到达内核空间;

2.负载均衡服务器和正式服务器在同一个网络中,数据通过二层数据链路层来传输;

3.内核空间判断数据包的目标IP是本机VIP,此时IP虚拟服务器比对数据包请求的服务是否是集群服务,是、则重新封装数据包;修改源MAC地址为负载均衡服务器的MAC地址,目标MAC地址为真实服务器的MAC地址,源IP地址和目标IP地址不变,然后将数据包发送给真实服务器

4.如果到达真实服务器的请求报文的MAC地址是自身的MAC地址,就接收此报文;数据包重新封装报文(源 IP 地址为 VIP,目标 IP 为 CIP),将响应报文通过 lo 接口传送给物理网卡然后向外发出

5.真实服务器直接将响应报文传送到客户端

    Clint向目标VIP发出请求,Director(负载均衡器)接收
    IP包头及数据帧头部信息

LVS-DR中的ARP故障

1.ARP通信紊乱
防止网关路由器发送ARP广播时调度器和节点都进行响应,导致ARP通信紊乱;
可以不对非本地物理网卡的arp请求进行响应,使用虚拟接口lo:0承载VIP地址

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

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

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

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

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

2.ARP_announce-2
系统不使用响应数据的源IP地址(VIP)来作为本机进行的arp请求报文的源IP地址,
而是使用发送报文的物理网卡的IP地址作为ARP请求报文的源IP地址,
这样可以防止网关路由器接收到源IP地址为VIP的ARP请求,报文后的又去更新ARP缓存表,导致外网再去发送请求时,数据包无法到达调度器

RS返回报文(源IP是VIP)经路由器转发,重新封装报文时,需要想获取路由器的MAC地址,发送ARP请求时,Linux默认使用IP包的源IP地址(即VIP)作为ARP请求包中的源IP地址,此时路由器的路由表进行更新,VIP的MAC地址由原先的均衡器变为节点服务器,路由器根据ARP表项,会将新来的请求报文转发给节点服务器,导致均衡器的VIP失效,又会造成VIP的紊乱

解决办法:

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

修改/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的特性

1.负载均衡服务器(DS)和真实服务器(RS)必须在同一个物理网络中

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

3.DS作为群记得访问入口,但不作为网关使用

4.所有请求报文经由DS,但回复响应报文不能经过DS

5.RS的网关不允许指向DS IP,即RS发送的数据包不允许经过DS

6.RS上的lo接口配置VIP的IP地址

LVS的优点:负载均衡器只负责将请求包分发给物理服务器,而物理服务器将响应包直接发送给用户,所以负载均衡器能处理很巨大的请求流量;这种方式,一台负载均衡能为超过100M的物理服务器服务,负载均衡器不再是系统瓶颈;使用LVS-DR方式,如果你的负载均衡器拥有100M全双工网卡的话,使用LVS就能达到1G甚至更高的吞吐量

5万以内用Nginx,5-10万使用

LVS的缺点:所有的调度器和节点服务器在同一个广播域,必须在同一个物理网络中,不支持异地容灾

.

LVS-DR负载均衡群集部署

流程图:(待修改ing)

设备准备:
DR 服务器:192.168.220.130
Web 服务器1:192.168.220.111      
Web 服务器2:192.168.220.112      
vip:192.168.220.135
NFS共享存储:192.168.220.131
1.配置负载调度器(192.168.220.130)
#关闭防火墙和安全机制
systemctl stop firewalld.service
setenforce 0#安装加载ip_vs
modprobe ip_vs
cat /proc/net/ip_vs
#安装ipvsadm服务
yum -y install ipvsadm
(1)配置虚拟 IP 地址(VIP:192.168.220.135) 
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255#启动虚拟网卡ens33:0
ifup ens33:0
#查看虚拟网卡ens33:0当前状态
ifconfig ens33:0#ifup 与 ifdown 会直接到 /etc/ sysconfig/network-scripts 目录下搜索对应的配置文件,进行启动与关闭
(2)调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。

vim /etc/sysctl.confnet.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
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadmipvsadm -C        #清空所有规则
ipvsadm -A -t 192.168.220.135:80 -s rr        #配置虚拟IP;rr为普通轮询
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.111:80 -g			#-g表示DR模式;若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.112:80 -g#启动ipvsadm
ipvsadm
#查看节点状态,Route代表 DR模式
ipvsadm -ln
2.部署共享存储(NFS服务器:192.168.220.131)
systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.220.0/24(rw,sync)
/opt/benet 192.168.220.0/24(rw,sync)systemctl start nfs.service
systemctl start rpcbind.service

3.配置节点服务器(192.168.220.111、192.168.220.112)

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

systemctl stop firewalld.service
setenforce 0
(1)配置虚拟 IP 地址(VIP:192.168.220.135)
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0		
vim ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255						#注意:子网掩码必须全为 1
#开启虚拟网卡lo:0,查看虚拟网卡lo:0的状态
ifup lo:0
ifconfig lo:0
#添加规则
route add -host 192.168.220.135 dev lo:0vim /etc/rc.local
/sbin/route add -host 192.168.220.135 dev lo:0#给文件执行权限
chmod +x /etc/rc.d/rc.local
(2)调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突
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 -pyum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd
--192.168.220.111---
#挂载
mount.nfs 192.168.220.111:/opt/kgc /var/www/html
echo 'this is kgc web!' > /var/www/html/index.html
--192.168.220.112---
#挂载
mount.nfs 192.168.220.112:/opt/benet /var/www/html
echo 'this is benet web!' > /var/www/html/index.html
4.测试 LVS 群集

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

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

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

相关文章

微服务中间件--分布式搜索ES

分布式搜索ES 11.分布式搜索 ESa.介绍ESb.IK分词器c.索引库操作 (类似于MYSQL的Table)d.查看、删除、修改 索引库e.文档操作 (类似MYSQL的数据)1) 添加文档2) 查看文档3) 删除文档4) 修改文档 f.RestClient操作索引库1) 创建索引库2) 删除索引库/判断索引库 g.RestClient操作文…

思维导图工具有哪些?如何挑选思维导图工具?10款好用工具推荐!

在我们的生活和工作中,思维导图是一种有效的工具,可以帮助我们更好地组织和理解信息,提高我们的学习和工作效率。当然,如何选择一款适合自己的思维导图工具也是一门学问。在这篇文章中,我将为大家介绍如何挑选一款适合…

UE4/5Niagara粒子特效之Niagara_Particles官方案例:1.1->1.4

目录 1.1-Simple Sprite Emitter ​编辑 发射器更新 粒子生成 粒子更新 1.2-Simple Sprite Emitter 发射器更新 粒子生成 粒子更新 渲染 1.3-Simple GPU Emitter 属性 发射器更新 粒子生成 粒子更新 1.4-Sprite Facing 发射器更新 粒子生成 粒子更新 通过对官方…

lwIP更新记10:IP 冲突检测

lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布,带来了我期盼已久的 IPv4 冲突检测 功能。 lwip-2.2.0-rc1 版本重新回归了 master 分支(主分支),不再使用单独的稳定分支。 master 分支 是一个 Git(版本控制程序&…

el-table动态合并单元格

el-table使用这个方法合并单元格&#xff0c;:span-method“hbcell” <el-table size"small" :data"table.data" border empty-text"暂无数据" :cell-style"cellStyle" :header-cell-style"tableHeaderColor":span-meth…

Haproxy原理及部署

一、Haproxy简介 1、Haproxy应用分析 LVS在企业中康复在能力很强&#xff0c;但存在不足&#xff1a; LVS不支持正则处理&#xff0c;不能实现动静分离对于大型网站LVS的事实配置较为复杂&#xff0c;维护成本相对较高 Haproxy是一款可以供高可用性、负载均衡和基于TCP和HT…

OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法

最近在windows下面用cmake编译OpenCV的项目代码,但是一直碰到找不到mutex的问题&#xff0c;百思不得其解, Executing task: g -g -o bin/debug.exe src/main.cppC:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:697:14: error: recursive_mutex in namespace st…

ssl卸载原理

SSL卸载&#xff0c;也称为SSL解密&#xff0c;是一种将SSL加密数据流卸成非加密的明文数据流的过程。SSL卸载通常在负载均衡器、代理服务器、WAF等设备中实现&#xff0c;可以提高传输效率和安全性。 SSL卸载的原理是将SSL数据流拦截下来&#xff0c;通过设备内置的证书进行解…

图为科技-边缘计算在智慧医疗领域的作用

边缘计算在智慧医疗领域的作用 随着科技的进步&#xff0c;智慧医疗已成为医疗行业的重要发展趋势。边缘计算作为新兴技术&#xff0c;在智慧医疗领域发挥着越来越重要的作用。本文将介绍边缘计算在智慧医疗领域的应用及其优势&#xff0c;并探讨未来发展方向。 一、边缘计算…

androidstudio Please specify a signing configuration for this variant (release)

当直接运行release版本时&#xff0c;报错Error: The apk for your currently selected variant cannot be signed. Please specify a signing configuration for this variant (package64-release). 解决报错&#xff1a;添加签名&#xff0c;signingConfigs 写在buildTypes前…

知道吗?微软将Python集成到Excel中,国产软件“抄作业”了

Excel集成Python 众所周知哦&#xff0c;VBA是一种基于微软的Visual Basic语言的宏编程语言&#xff0c;专为在Office应用程序中执行自动化任务而设计。 VBA适用于Excel、Word、PowerPoint等Office套件中的宏编程&#xff0c;可直接操作和控制Office应用程序的对象模型。 我们…

appium2.0+ 单点触控和多点触控新的解决方案

在 appium2.0 之前&#xff0c;在移动端设备上的触屏操作&#xff0c;单手指触屏和多手指触屏分别是由 TouchAction 类&#xff0c;Multiaction 类实现的。 在 appium2.0 之后&#xff0c;这 2 个方法将会被舍弃。 "[Deprecated] TouchAction action is deprecated. Ple…

Docker 搭建 LNMP + Wordpress(详细步骤)

目录 一、项目模拟 1. 项目环境 2. 服务器环境 3.任务需求 二、Linux 系统基础镜像 三、Nginx 1. 建立工作目录 2. 编写 Dockerfile 脚本 3. 准备 nginx.conf 配置文件 4. 生成镜像 5. 创建自定义网络 6. 启动镜像容器 7. 验证 nginx 四、Mysql 1.…

无脑入门pytorch系列(五)—— nn.Dropout

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…

PySide6学习笔记--gui小模版使用

一、界面绘制 1.desiner画图 2.画图代码 # -*- coding: utf-8 -*-################################################################################ ## Form generated from reading UI file t1gui.ui ## ## Created by: Qt User Interface Compiler version 6.5.2 ## ##…

备份服务器搭建

备份服务器搭建 1、背景2、作用3、选型4、环境5、部署5.1、服务端部署5.1.1、安装5.1.2、配置 5.2、客户端部署5.3、备份策略5.3.1、定时备份策略5.3.2、文件变动备份 6、参考 1、背景 随着项目的推进&#xff0c;备份服务器被提上了工作日程&#xff0c;等保、密评和接入测评…

优化指南:带宽限制的可行策略

大家好&#xff01;作为一名专业的爬虫程序员&#xff0c;我们经常面临的一个挑战就是带宽限制。尤其是在需要快速采集大量数据时&#xff0c;带宽限制成为了我们提升爬虫速度的一大阻碍。今天&#xff0c;我将和大家分享一些解决带宽限制的可行策略&#xff0c;希望能帮助大家…

postman接口自动化测试框架实战!

什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试&#xff0c;模拟人去操作软件界面&#xff0c;把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码&#xff0c;属于一种软件开发工作&#xff0c;已经开发完成的用…

MongoDB【CRUD练习-条件查询-文档关系】

练习1-CRUD // 进入test数据库 use test; // 查询文档内容 db.students.find(); // 显示当前数据库中所有集合 show collections; // 向数据库的user集合中插入一个文档 db.users.insertOne({username: "lyh"} ); // 查看当前数据库中所有的集合 发现users集合被创建…

JVM——类加载与字节码技术—编译期处理+类加载阶段

3.编译期处理 编译期优化称为语法糖 3.1 默认构造器 3.2 自动拆装箱 java基本类型和包装类型之间的自动转换。 3.3泛型集合取值 在字节码中可以看见&#xff0c;泛型擦除就是字节码中的执行代码不区分是String还是Integer了&#xff0c;统一用Object. 对于取出的Object&…