当前位置: 首页 > article >正文

LVS-DR 负载均衡群集

目录

一、LVS-DR集群

1、LVS-DR 工作原理

2、数据包流向分析

3、LVS-DR 模式特点

二、直接路由模式(LVS-DR)

1、准备案例环境

2、配置负载调度器(101)

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

(2)配置负载分配策略

3、配置节点服务器(102/103)

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

(2)调整proc 响应参数

(3)安装httpd,创建测试网页

4、测试LVS群集


一、LVS-DR集群

LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的工作模式之一。

1、LVS-DR 工作原理

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

2、数据包流向分析

以下为数据包流向分析步骤:

(1)客户端发送请求到 Director Server,请求的数据报文(源 IP 是 CIP,目标IP 是 VIP) 到达内核空间。

(2)Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。

(3)内核空间判断数据包的目标IP是本机 VIP,此时 IPVS 比对数据包请求的服务是否是集群服务,是集群服务就重新封装数据包。修改源MAC地址为Director Server 的 MAC 地址,修改目标 MAC 地址为 Real Server 的 MAC 地址,源 IP 地址与目标 IP地址没有改变,然后将数据包发送给 Real Server。

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

(5)Real Server 直接将响应报文传送到客户端。

3、LVS-DR 模式特点

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

二、直接路由模式(LVS-DR)

1、准备案例环境

在 DR 模式的群集中,LVS 负载调度器作为群集的访问入口,但不作为网关使用;服务器池中的所有节点都各自接入 Internet,发送给客户机的 Web 响应数据包不需要经过 LVS 负载调度器。

这种方式入站、出站访问数据被分别处理,因此LVS负载调度器和所有的节点服务器都需要配置 VIP地址,以便响应对整个群集的访问。考虑到数据存储的安全性,共享存储设备会放在内部的专用网络中。

主机

操作系统

IP地址

应用

lvs(101)

openEuler 24.03

ens160:192.168.10.101/24

ens160:0:192.168.10.172/24

ipvsadm

web1(102)

openEuler 24.03

ens160:192.168.10.102/24

lo:0:192.168.10.172/32

httpd

web2(103)

openEuler 24.03

ens160:192.168.10.103/24

lo:0:192.168.10.172/32

httpd

客户机(105)

openEuler 24.03

192.168.10.105

注:LVS-DR也可以使用NFS共享功能,可在上一章的文章中查看,本文不再赘述

2、配置负载调度器(101)

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

采用虚接口的方式(ens160:0),为网卡ens33绑定VIP地址,以便响应群集访问。

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens160 ifcfg-ens160:0vim ifcfg-ens160:0
NAME=ens160:0
DEVICE=ens160:0
IPADDR=192.168.10.172
nmcli c reload
nmcli c up ens160

(2)配置负载分配策略

ipvsadm -C    #清除原有策略
ipvsadm -A -t 192.168.10.172:80 -s wrr
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2
ipvsadm-save -nipvsadm-save > /etc/sysconfig/ipvsadm    #保存策略systemctl enable ipvsadm

3、配置节点服务器(102/103)

使用 DR 模式时,节点服务器也需要配置 VIP 地址,并调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突。除此以外,Web 服务的配置与 NAT 方式类似。

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

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

ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lo
或
vim /etc/rc.local    #在文件中添加
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 dev lochmod +x /etc/rc.local    #给权限
reboot    #重启
ifconfig    #查看是否已有lo:0

(2)调整proc 响应参数

vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2sysctl -p    #重新加载sysctl.conf文件,查看是否有错误

(3)安装httpd,创建测试网页

dnf -y install httpdecho "test1/2" >/var/www/html/index.html    #修改102/103的网页内容
systemctl start httpd    #启动httpd服务程序
systemclt enable httpdsystemctl stop firewalld
setenforce 0
systemctl disable firewalld

4、测试LVS群集

[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test1
[root@bogon ~]# curl 192.168.10.172
test2
[root@bogon ~]# curl 192.168.10.172
test2

然后可以在101负载调度器中,查看节点状态观察当前的负载分配情况。

[root@bogon ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.172:80 wrr-> 192.168.10.102:80            Route   1      0          6         -> 192.168.10.103:80            Route   2      0          10        

相关文章:

LVS-DR 负载均衡群集

目录 一、LVS-DR集群 1、LVS-DR 工作原理 2、数据包流向分析 3、LVS-DR 模式特点 二、直接路由模式(LVS-DR) 1、准备案例环境 2、配置负载调度器(101) (1)配置虚拟IP 地址(VIP&#xff…...

理解并解决高丢包率问题,构建清晰流畅的实时音视频通话

丢包作为数字通信中的重要干扰因素,常常潜伏在表面之下,却严重影响性能,将清晰的对话变的模糊不清,将连贯的演示变的断断续续。因此,对音视频通话相关应用的开发者来说,理解丢包率非常重要。 什么是丢包&am…...

Ubuntu系统Todesk进度卡在100%

1 : 修改配置文件,关闭wayland sudo nano /etc/gdm3/custom.conf2 : 把#WaylandEnablefalse前的#号删掉 按图片删除注释 3 : 按Ctrl X ,离开(会问你要不要保存,输入 Y 回车保存) 4 : 重启系统 或在命令行输入 r…...

[Dify] 如何应对明道云API数据过长带来的Token超限问题

在集成明道云与大型语言模型(LLM)如ChatGPT或本地部署的Dify时,开发者经常会面临一个核心问题:API获取的数据太长,超出LLM支持的Token数限制,导致无法直接处理。本文将深入探讨这个问题的成因,并提供几种可行的解决方案,包括分段处理、外部知识库构建等策略。 明道云AP…...

Axure动态面板学习笔记

一、动态面板概述 动态面板(Dynamic Panel)是Axure中一个强大的交互组件,它本质上是多页面的集合,可以实现更丰富的页面交互功能。 主要特点: 可以包含多个状态(State),每个状态相当于一个独立页面 支持在不同状态间切换&#…...

eNSP企业综合网络设计拓扑图

1.拓扑图 2.拓扑配置 此拓扑还有一些瑕疵,仅做参考和技术提升使用。 想要配置的可以关注下载 大型网络综合实验拓扑图(eNSP)资源-CSDN文库...

工程化架构设计:Monorepo 实战与现代化前端工程体系构建

三、核心架构实践:从模块管理到微前端落地 1. Monorepo 进阶:依赖治理与性能优化 痛点深化 依赖提升冲突:不同包对同一依赖的版本要求冲突幽灵依赖治理:未声明依赖被非法引用巨型仓库构建慢:全量构建耗时随项目增长线…...

BugKu Web渗透之备份是个好习惯

启动场景后,网页显示一段字符串。 看起来像md5值,但是又过长了。 步骤一:右键查看源代码,没有发现任何异常。 步骤二:使用dirsearch去查看是否有其他可疑文件。 在终端输入: dirsearch -u http://117.72.…...

华为AP6050DN无线接入点瘦模式转胖模式

引言 华为AP6050DN是一款企业级商用的无线接入点。由于产品定位原因,其默认工作在瘦模式下,即须经AC统一控制和管理,是不能直接充当普通的无线路由器来使用的。 而本文的目的,就是让其能脱离AC的统一控制和管理,当作普通无线路由器来使用。 硬件准备 华为AP6050DN无线接…...

uniapp 配置本地 https 开发环境(基于 Vue2 的 uniapp)

1、生成本地 HTTPS 证书(mac)打开终端,运行以下命令: mkdir ~/ssl-cert && cd ~/ssl-cert2、生成私钥: openssl genrsa -out localhost.key 20483、生成自签名证书(有效期365天)&…...

十、【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战

【核心功能篇】项目与模块管理:前端页面开发与后端 API 联调实战 前言准备工作第一部分:完善项目管理功能 (Project)1. 创建/编辑项目的表单对话框组件 第二部分:模块管理功能 (集成到项目详情页)1. 创建模块相关的 API 服务 (src/api/module…...

【大模型/MCP】MCP简介

一句话总结 如果你打算让 LLM 像人一样“随手”调用脚本、数据库、搜索引擎或 CI/CD 流水线,而又不想为每个工具分别写 REST 插件或轮询接口,那么把它们包进 MCP 服务器是当前最省心、延迟最低、可复用最高的做法——正因如此 OpenAI、Google DeepMind、…...

[Godot][游戏开发] 如何在 Godot 中配置 Android 环境(适配新版 Android Studio)

在使用 Godot 进行 Android 项目的开发与导出时,配置 Android 环境是一项必要步骤。随着 Android Studio 的更新(特别是自 Arctic Fox 版本起),安装方式发生了变化,默认不再引导用户手动配置 SDK/JDK/NDK,而…...

Vue-Router中的三种路由历史模式详解

在最新版的 Vue-Router 中,我们使用createRouter和createWebHashHistory、createwebHistory、createMemoryHistory等方法来配置路由。 下面详细介绍这几种历史记录栈的使用与场景,并结合实际代码说明。 1. createWebHashHistory 原理: 1.…...

机器学习多分类逻辑回归和二分类神经网络实践

1、2-17 实现多分类逻辑回归 代码 # 2-17 实现多分类逻辑回归 import pandas as pd import numpy as np import matplotlib.pyplot as plt# 参数设置 iterations 5400 # 迭代次数 learning_rate 0.1 # 学习率 m_train 200 # 训练样本数量# 整数索引值转one-hot向量 def…...

社交类网站设计:经典feed流系统架构详细设计(小红书微博等)

文章目录 一、关注服务1、粉丝、关注数架构设计(1)数据库实现方案1(2)数据库实现方案2(3)基于redis缓存优化(4)使用专用计数服务(5)近似计数(牺牲…...

K6 是什么

K6 是一款现代化的 开源性能测试工具,专注于开发者和 DevOps 团队的易用性,用于对 Web 应用、API 和微服务 进行高性能的负载测试。它采用 JavaScript 脚本编写测试用例,结合命令行工具和云原生设计,特别适合 CI/CD 集成 和 自动化…...

RISC-V PMA、PMP机制深入分析

1 PMA PMA(Physical Memory Attributes),物理内存属性,顾名思义就是用来设置物理内存属性的,但这里说“设置”,并不合理,因为一般情况下各存储的属性,在芯片设计时就固定了&#xf…...

git常见命令说明

git branch -avv -a 显示 所有分支-vv (--verbose 的缩写) 额外显示本地分支跟踪的远程分支(如 [origin/main])及其状态对比。 # git branch -v * main abc1234 修复登录bugdev def5678 更新文档# git branch -vv * main abc1234 …...

深入解析 Tomcat 线程管理机制:从设计思想到性能调优

一、Tomcat 线程模型的核心架构 Tomcat 的线程管理机制是其高性能的核心支撑,其设计围绕 Connector(连接器) 和 Executor(执行器) 两大组件展开。以下为架构分层解析: 1. Connector 的线程模型 Tomcat 的…...

【NebulaGraph】查询案例(七)

【NebulaGraph】查询案例 七 1. 查询语句12. 查询语句23. 查询语句34. 查询语句4 1. 查询语句1 GO FROM "player100" OVER * YIELD type(edge) AS link, properties($$) AS properties,tostring(src(edge)) AS src,tostring(dst(edge)) AS dst, tags($$) AS tagLi…...

从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本

随着新能源技术的快速发展,电动汽车的普及对传统配电网提出了新的挑战。传统的“刚性扩容”模式依赖基础设施的物理扩建,不仅投资成本高,且难以应对动态变化的电力需求。在此背景下,“弹性供给”理念逐渐兴起,特别是移…...

Java与Docker容器化优化:从核心技术到生产实践

在2025年的云原生与微服务时代,容器化技术已成为企业级应用部署的标准,Docker作为主流容器平台,显著提升了应用的 portability、可扩展性和部署效率。根据CNCF 2024年报告,95%的企业在其生产环境中使用Docker,特别是金…...

QT单例模式简单讲解与实现

单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。在QT开发中,单例模式常用于管理全局资源,如配置管理、日志系统等。 最简单的QT单例实现 方法一:静态局部变量实现(C11及以上…...

Vite Vue3 配置 Composition API 自动导入与项目插件拆分

为了提升开发效率,减少重复引入 ref、reactive、computed 等 Composition API 的繁琐操作,通过 unplugin-auto-import 插件实现自动导入。 1、配置自动导入 1.1 安装插件 npm install -D unplugin-auto-import1.2 配置 vite.config.js import { def…...

React从基础入门到高级实战:React 生态与工具 - React Query:异步状态管理

React Query:异步状态管理 引言 在现代Web开发中,异步数据管理是React应用开发中的核心挑战之一。无论是从远程API获取数据、处理用户交互,还是同步服务器状态,开发者都需要一种高效、可靠的方式来应对这些复杂场景。传统的状态…...

Grafana-Gauge仪表盘

仪表盘是一种单值可视化。 可让您快速直观地查看某个值落在定义的或计算出的最小和最大范围内的位置。 通过重复选项,您可以显示多个仪表盘,每个对应不同的序列、列或行。 支持的数据格式 单值 数据集中只有一个值,会生成一个显示数值的…...

按照状态实现自定义排序的方法

方法一:使用 MyBatis-Plus 的 QueryWrapper 自定义排序 在查询时动态构建排序规则,通过 CASE WHEN 语句实现优先级排序: import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Ser…...

游戏引擎学习第313天:回到 Z 层级的工作

回顾并为今天的内容定下基调 昨天我们新增了每个元素级别的排序功能,并且采用了一种我们认为挺有意思的方法。原本计划采用一个更复杂的实现方式,但在中途实现的过程中,突然意识到其实有个更简单的做法,于是我们就改用了这个简单…...

论文阅读:arxiv 2024 SmoothLLM: Defending LLMs Against Jailbreaking Attacks

SmoothLLM: Defending LLMs Against Jailbreaking Attacks 总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://www.doubao.com/chat/6961264964140546 https://github.com/arobey1/smooth-llm https://arxiv.org/pd…...