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

web集群(LVS-DR)

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项 目,它的官方站点是 www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在 Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已 经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。 使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用 的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。 LVS自从1998年开始,发展到现在已经是一个比较成熟的技术项目了。可以利用LVS技术实现高可伸缩 的、高可用的网络服务,例如WWW服务、Cache服务、DNS服务、FTP服务、MAIL服务、视频/音频点 播服务等等,有许多比较著名网站和组织都在使用LVS架设的集群系统,例如:Linux的门户网站( w.linux.com)、向RealPlayer提供音频视频服务而闻名的Real公司( ww www.real.com)、全球最大的开 源网站(sourceforge.net)等。

LVS-DR模式工作原理

首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将 请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将该数据包直接发送到客 户端计算机(不经过director),并且以此回复数据包使用的目的VIP 地址作为源IP地址。因此,实际上 是客户计算机被“欺骗”了,客户计算机始终认为它正与同一台计算机对话,而实际上它正在发送请求数 据包给一台计算机(LB),并从另一台计算机(RS)接收回复的数据包。

LVS-DR模式应用特点

1)所有集群节点RS必须和Director在相同的物理网段(即同一个局域网中);

2)所有客户端入站(而不是出站)请求由Director首先接收,并转发给集群节点RS;

3)集群节点RS通常来说最好带外部IP,而不使用Director及某固定机器作为默认网关,以便将数据包直 接回复给客户端计算机,且不会产生回包的瓶颈;

4)所有集群节点RS上必须在lo网卡上绑定VIP地址,以便验证通过目的IP非RS的数据包;

5)由于所有集群节点RS上必须在lo网卡上绑定VIP地址,因此,带来arp问题,即集群节点RS默认会相 应发往Director VIP的数据包。因此要对所有集群节点RS做ARP抑制处理,把响应VIP的请求交给LVS Director;

6)很多操作系统都可以用在集群内部的RS真实服务器上只要该操作系统能够实现ARP隐藏,如: Windows,linux,unix;

7)LVS/DR模式不需要开启调度器转发功能,这点和LVS/NAT模式是不同的。

8)LVS/DR Director(服务器数量100台)可以比LVS-NAT Director(服务器数量10-20台)承受更多的 并发请求和转发更多的服务器数量。

ipvsadm工具使用

ipvsadm工具常用的参数选项有:

-A --add-service添加一条新的虚拟服务

-E --edit-service编辑虚拟服务

-D --delete-service删除虚拟服务

-C --clear清除所有的虚拟服务规则

-R --restore恢复虚拟服务规则

-a --add-server在一个虚拟服务中添加一个新的真实服务器

-e --edit-server编辑某个真实服务器

-d --delete-server删除某个真实服务器

-L | -l --list显示内核中的虚拟服务规则

-n --numeric以数字形式显示IP端口

-c --connection显示ipvs中目前存在的连接,也可以用于分析调度情况

-Z --zero将转发消息的统计清零

-p --persistent配置持久化时间

--set tcp tcpfin udp配置三个超时时间(tcp/tcpfin/udp)

-t | -u TCP/UDP协议的虚拟服务

-g | -m | -i LVS模式为:DR | NAT | TUN-w配置真实服务器的权重

-s配置负载均衡算法,如:rr, wrr, lc等--timeout显示配置的tcp/tcpfin/udp超时时间

--stats显示历史转发消息统计(累加值)

--rate显示转发速率信息(瞬时值)

实验部分

手动配置部分

准备三台实验机:Rocky 8.10,IP地址192.168.126.13{0..132},其中130为DS服务器,其余为RS服务器

为了验证效果,先在131,132主机上面安装nginx服务

systemctl stop firewalld 
setenforce 0
dnf install nginx -y
echo "this is a test page which from ip:$(hostname -I)" > /usr/share/nginx/html/index.html
systemctl start nginx

 添加虚拟IP地址,这里有两种方式:

nmcli con add type dummy ifname lvsTest ipv4.method manual ipv4.addresses 192.168.126.140/32
ifconfig ens160:10 192.168.126.140 broadcast 192.168.126.140 netmask 255.255.255.255 up

 上面是两种不同的方式配置虚拟IP地址,选一种进行执行即可,一般建议不是脚本类执行的话可以考虑nmcli,否则ifconfig

  • nmcli:适用于创建虚拟接口和持久化配置,适合现代系统和复杂网络配置。

  • ifconfig:适用于在同一物理接口上绑定多个 IP 地址,适合临时配置和简单场景。

ARP抑制

在RS主机上面需要配置ARP抑制,要不然当ARP包寻求140这个虚拟主机时候,它会和DS一同响应。

echo '1' >  /proc/sys/net/ipv4/conf/lvsTest/arp_ignore
echo '2' >  /proc/sys/net/ipv4/conf/lvsTest/arp_announce

 0 -(默认值):回应任何网络接口上对任何本地IP地址的arp查询请求。

1 – 只回答目标IP地址是来访网络接口本地地址的ARP查询请求。

2 – 只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内。

以上的内容请配置于所有的RS服务器

配置DS服务器

dnf install ipvsadm -y
nmcli con add type dummy ifname lvsTest ipv4.method manual ipv4.addresses 192.168.126.140/32
#添加规则
ipvsadm -At 192.168.126.140:80 -s rr -p20
ipvsadm -at 192.168.126.140:80 -r 192.168.126.131:80 
ipvsadm -at 192.168.126.140:80 -r 192.168.126.132:80 

[root@host130 ~]# 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.126.140:80 rr
  -> 192.168.126.131:80           Route   1      0          2
  -> 192.168.126.132:80           Route   1      0          3

 此时打开一个终端cmd,直接访问140这个IP地址

 以上就是反复在131和132之间访问,下面进行脚本部署

自动化脚本配置

先把RS服务的关于140的ARP服务给打开

echo '0' >  /proc/sys/net/ipv4/conf/lvsTest/arp_ignore
echo '0' >  /proc/sys/net/ipv4/conf/lvsTest/arp_announce

删除nmcli添加的虚拟IP,我们后续使用ifconfig配置

nmcli con del dummy-lvsTest
Connection 'dummy-lvsTest' (c6e1603c-640a-4a98-96f6-d36fadcf813c) successfully deleted.

 RS的系统服务脚本:在/etc/init.d/目录下面创建一个名为LVSRS的脚本

vim /etc/init.d/LVSRS#!/bin/sh
#chkconfig: - 28 72
#description: Initialise the Linux Virtual Server for DR
#Provides: ipvsadm
#Required-Start: $local_fs $network $named
#Required-Stop: $local_fs $network $remote_fs
LOCK=/var/local/ipvsadm.lock
VIP=192.168.126.140
DevName=ens160
. /etc/rc.d/init.d/functions
start(){PID=$(ifconfig | grep lo:10 | wc -l)if [ $PID -ne 0 ]thenecho "The LVS_DR_RIP Server is already running!"else/sbin/ifconfig lo:10 $VIP broadcast $VIP netmask 255.255.255.255 up/sbin/route add -host $VIP dev lo:10echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/${DevName}/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/${DevName}/arp_announce/bin/touch $LOCKecho "Starting LVS-DR-RIP Server is ok!"fi
}stop(){sbin/route del -host $VIP dev lo:10/sbin/ifconfig lo:10 down  >/dev/nullecho "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/${DevName}/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/${DevName}/arp_announcerm -rf $LOCKecho "stopping LVS-DR-RIP server is ok !"
}status() {if [ -e $LOCK ];thenecho "The LVS-DR-RIP Server is already running !"elseecho "The LVS-DR-RIP Server is not running !"fi}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1esacexit 0

上面使用回环地址来创建,而不是直接创建一个虚拟接口,原因:

  • lo:10 是本地回环接口的别名,通常用于本地通信,数据包不会离开主机。

  • ens160:10 是一个物理网络接口的别名(虚拟接口),通常用于实际的网络通信。

我们的DS服务会使用ens160创建一个虚拟接口,vim /etc/init.d/LVSDS

 #!/bin/sh## Startup script handle the initialisation of LVS# chkconfig: - 28 72# description: Initialise the Linux Virtual Server for DR#### BEGIN INIT INFO# Provides: ipvsadm# Required-Start: $local_fs $network $named# Required-Stop: $local_fs $remote_fs $networkLOCK=/var/lock/ipvsadm.lockVIP=192.168.126.140RIP1=192.168.126.131RIP2=192.168.126.132
DipName=ens160. /etc/rc.d/init.d/functionsstart() {PID=`ipvsadm -Ln | grep ${VIP} | wc -l`if   [ $PID -gt 0 ];thenecho "The LVS-DR Server is already running !"else#Set the Virtual IP Address/sbin/ifconfig ${DipName}:10 $VIP broadcast $VIP netmask 
255.255.255.255 up/sbin/route add -host $VIP dev ${DipName}:10#Clear IPVS Table/sbin/ipvsadm -C#Set Lvs/sbin/ipvsadm -At $VIP:80 -s rr /sbin/ipvsadm -at $VIP:80 -r $RIP1:80 -g/sbin/ipvsadm -at $VIP:80 -r $RIP2:80 -g/bin/touch $LOCK#Run Lvsecho "starting LVS-DR Server is ok !"       fi}stop()    {#clear Lvs and vip /sbin/ipvsadm -C/sbin/route del -host $VIP dev ${DipName}:10/sbin/ifconfig ${DipName}:10 down >/dev/nullrm -rf $LOCKecho "stopping LVS-DR server is ok !"}status() {if [ -e $LOCK ];thenecho "The LVS-DR Server is already running !"elseecho "The LVS-DR Server is not running !"fi}case "$1" instart)start;;stop)stop;;restart)stopstart;;status)status;;*)echo "Usage: $1 {start|stop|restart|status}"exit 1esacexit 0

以上脚本增加执行权限chmod + x

添加到系统服务chkconfig --add LVSRS

启动systemctl start LVSRS,下面就表示已经启动了。

 [root@host130 ~]# systemctl restart LVSDS
[root@host130 ~]# systemctl status LVSDS
● LVSRS.service - LSB: Initialise the Linux Virtual Server for DR
   Loaded: loaded (/etc/rc.d/init.d/LVSRS; generated)
   Active: active (exited) since Thu 2025-02-13 07:08:09 EST; 16s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2217 ExecStart=/etc/rc.d/init.d/LVSRS start (code=exited, status=0/SUCCESS)
Feb 13 07:08:09 host130 systemd[1]: Starting LSB: Initialise the Linux Virtual Server>
Feb 13 07:08:09 host130 LVSRS[2217]: The LVS-DR Server is already running !
Feb 13 07:08:09 host130 systemd[1]: Started LSB: Initialise the Linux Virtual Server >

 RS同上

验证效果:

相关文章:

web集群(LVS-DR)

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项 目,它的官方站点是 www.linuxvirtualserver.org。现在LVS已经是 Linux标准内核的一部分,在 Linux2.4内核以前,使用LVS时必须要重新编…...

Instagram与小红书的自动化运营

Instagram与小红书的自动化运营 引言 在这个信息爆炸的时代,社交媒体成为了与世界互动的重要平台。在这样的背景下,如何高效地运营你的Instagram或小红书账户,成为众多内容创作者和品牌的重要课题。那么,自动化运营究竟是什么&a…...

从二维到三维3D工业相机如何改变机器视觉检测

从二维到三维,3D工业相机在机器视觉检测中带来了显著变革,主要体现在以下几个方面: 深度信息获取 二维相机:只能提供平面信息,无法获取物体的深度。 三维相机:通过深度信息,能够更精确地测量物…...

多媒体软件安全与授权新范例,用 CodeMeter 实现安全、高效的软件许可管理

背景概述 Reason Studios 成立于 1994 年,总部位于瑞典斯德哥尔摩,是全球领先的音乐制作软件开发商。凭借创新的软件产品和行业标准技术,如 ReWire 和 REX 文件格式,Reason Studios 为全球专业音乐人和业余爱好者提供了一系列高质…...

DeePseek结合PS!批量处理图片的方法教程

​ ​ 今天我们来聊聊如何利用deepseek和Photoshop(PS)实现图片的批量处理。 传统上,批量修改图片尺寸、分辨率等任务往往需要编写脚本或手动处理,而现在有了AI的辅助,我们可以轻松生成PS脚本,实现自动化处…...

2.14寒假作业

web:[SWPUCTF 2021 新生赛]PseudoProtocols 打开环境给了提示要我们找 hint.php url是给了后缀的,不单纯是地址,直接用为协议看一下目标文件,得到base64加密的文字 解密,提示我们访问一个文件 跟着思路走访问文件之后…...

【鱼眼镜头12】Scaramuzza的鱼眼相机模型实操,不依赖于具体的相机几何结构,直接从图像数据出发,因此更具灵活性。

文章目录 Scaramuzza相机模型标定效果2、原理和代码代码1、 2D映射到3D,函数输入为2D点坐标OCAM参数代码功能详解2、3D --> 2D 3、总结Scaramuzza 模型的核心思想Scaramuzza 模型的核心思想与 Kannala-Brandt 模型的对比Scaramuzza 模型的独特之处Scaramuzza 的意…...

(Windows | Linux)ssh访问服务器报错:no matching key exchange method found

问题现象 ssh user1192.168.1X.XX Unable to negotiate with 192.168.1X.XX port 22: no matching key exchange method found. Their offer: gss-group1-sha1-toWM5Slw5Ew8Mqkayal2g,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-…...

达梦分布式集群DPC_架构详解_yxy

达梦分布式集群DPC_架构详解 1 DPC核心架构介绍1.1 架构图1.2 DPC核心架构组件 2 多副本2.1 多副本架构图2.2 多副本示例2.3 RAFT组概念2.4 表空间与RAFT组的关系 1 DPC核心架构介绍 1.1 架构图 1.2 DPC核心架构组件 DMDPC 架构由三部分组成 SP(SQL Processor&…...

51单片机独立按键的扩展应用

提示: 按键S7和S6为选择键,确定控制键控制那组LED指示灯。按键S5和S4为控制键,按键该键点亮指定的LED指示灯,松开后熄灭。按下S7点亮L1指示灯,L1点亮后,S6不响应操作,S5控制L3,S4控…...

浅识MQ的 Kafka、ActiveMQ、RabbitMQ、RocketMQ区别

DeepSeek回复: 以下是主流消息队列(MQ)的对比分析,结合核心特性、适用场景和实际案例说明: 一、主流MQ对比分析 维度 Kafka RabbitMQ RocketMQ ActiveMQ所属公司Apache(LinkedIn开源)…...

模型报错infeasible,如何查看冲突约束

在使用Gurobi求解模型时,如果模型不可行(infeasible),可以通过以下步骤来查看冲突的约束或变量,帮助诊断问题: 1. 使用 computeIIS() 方法 Gurobi 提供了 computeIIS() 方法,用于计算不可行模…...

Golang GORM系列:GORM事务及错误处理

在数据库管理领域,确保数据完整性至关重要。GORM是健壮的Go对象关系映射库,它为开发人员提供了维护数据一致性和优雅地处理错误的基本工具。本文是掌握GORM事务和错误处理的全面指南。我们将深入研究如何使用事务来保证原子性,并探索有效处理…...

如何实现对 ELK 各组件的监控?试试 Metricbea

上一章基于 Filebeat 的日志收集使用Filebeat收集文件中的日志,而Metricbeat则是收集服务器存活性监测和系统指标的指标。 1. Filebeat和Metricbeat的区别 特性FilebeatHeartbeat作用收集和转发日志监测服务可用性数据来源服务器上的日志文件远程主机、API、服务主…...

图像处理篇---基本Python图像处理

文章目录 前言1. 图像灰度化原理Python 实现 2. 图像二值化原理:Python 实现 3. 图像掩膜(Mask)原理Python 实现 4. 腐蚀(Erosion)和膨胀(Dilation)原理Python 实现 5. 其他常用图像操作(1) 图像…...

使用PHP爬虫获取1688商品分类:实战案例指南

在电商领域,商品分类信息是商家进行市场调研、选品分析和竞争情报收集的重要基础。1688作为国内领先的B2B电商平台,提供了丰富且详细的商品分类数据。通过PHP爬虫技术,我们可以高效地获取这些分类信息,为商业决策提供有力支持。 …...

【微服务学习二】nacos服务发现与负载均衡

nacos服务发现 想要开启服务发现,需要在main函数上添加 EnableDiscoveryClient 注解 然后我们编写一个controller类来查询nacos中注册的所有微服务以及对应的ip端口号 Controller public class DiscoveryController {AutowiredDiscoveryClient discoveryClient;//…...

深入剖析推理模型:从DeepSeek R1看LLM推理能力构建与优化

著名 AI 研究者和博主 Sebastian Raschka 又更新博客了。原文地址:https://sebastianraschka.com/blog/2025/understanding-reasoning-llms.html。这一次,他将立足于 DeepSeek 技术报告,介绍用于构建推理模型的四种主要方法,也就是…...

有哪些滤波,原理是什么,分别在什么时候用

均值滤波(Average Filtering) 原理:通过计算像素点邻域内像素值的平均值来作为该像素点滤波后的新值。例如,对于一个 3x3 的邻域,将 9 个像素值相加然后除以 9 得到滤波后的像素值。优点:简单易实现&#x…...

小初高各学科教材,PDF电子版下载

链接:https://pan.quark.cn/s/7c2125f648e2 小初高中电子课本资料pdf合集 高中各科教材 (部分举例) - 语文:新人教版、旧人教版、苏教版等 - 数学:人教A版、沪教版、鄂教版等 - 英语:重大版、人教版…...

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...

java后端开发day14--之前练习的总结和思考

1.感受 这两天学点儿新的就直接上手打代码,真的是累死个人。我唯一的感受就是,课听完了,代码也跟着打完了(是的,跟着打的,没自己打),感觉自己脑袋里乱乱的,对代码的分区…...

[运输时间]

运输时间 真题目录: 点击去查看 E 卷 200分题型 题目描述 M(1 ≤ M ≤ 20)辆车需要在一条不能超车的单行道到达终点,起点到终点的距离为 N(1 ≤ N ≤ 400)。 速度快的车追上前车后,只能以前车的速度继续行驶,求最后一辆车到达目的地花费的时间。 注:每辆车固定间隔…...

【愚公系列】《Python网络爬虫从入门到精通》008-正则表达式基础

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…...

理解 WebGPU 中的 GPUQueue:GPU 的命令队列

在现代图形编程中,与 GPU 的交互变得越来越高效和灵活,而 WebGPU API 的出现更是为 Web 开发者带来了强大的图形处理能力。其中, GPUQueue 作为 WebGPU 的核心接口之一,扮演着至关重要的角色。本文将详细介绍 GPUQueue 的概…...

AIoT时代来临,物联网技术如何颠覆未来生活?

在这个万物互联的时代,“物联网”(IoT)正以前所未有的速度改变我们的生活,而“AIoT”则是在物联网基础上融入人工智能技术,赋予设备更高的智能和自主决策能力。随着5G、边缘计算和云技术的不断发展,物联网正…...

基于SpringBoot的电影院售票管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

CanMV的刷新比Openmv强

今天使用CanMV k230的板子,发现CanMV的刷新比Openmv强,速度快,不用再次拍照刷新,写一次就能在ide屏幕上同时显示。 参考一下CanMV K230拍照保存Demo - CanMV(K210 / K230) - 01科技 | 01Studio Takephot(…...

深度学习与人工智能:解锁未来的无限可能

在当今这个科技飞速发展的时代,深度学习和人工智能已不再只是科幻小说中的概念,它们正以惊人的速度渗透到我们生活的方方面面,从智能手机上的语音助手到医疗领域的疾病诊断,从自动驾驶汽车到金融市场的风险预测,其影响…...

广东茂名能源国际会议(IS-ESE 2025)

能源科学与工程国际研讨会(IS-ESE 2025)将于4月18-20日中国茂名召开,聚焦能源科学与工程,录用文章将由IOP出版并提交EI索引,旨在促进国际合作与交流,诚邀海内外专家学者参会。 征稿主题集中但不限于“能源…...