LVS 负载均衡
目录
LVS 体系结构
LVS 相关概念术语
lvs 集群常见类型
实验一:
LVS NAT模式
LVS NAT特性
实验二:
LVS DR模式
LVS DR特性
LVS是Linux virtual server的缩写,是一个高性能的、开源的负载均衡器,它运行于Linux操作系统之上,用于将网络请求分发给后端服务器集群中的服务器。
LVS简单工作原理为用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。
LVS 体系结构
LVS架构主要由三个部分组成:
1)负载均衡层:位于整个集群系统的最前端,由一台或多台负载调度器(Director Server)组成,LVS模块就安装在调度器上。
2)服务器群组层:由一组实际运行的应用服务器(Real Server)组成,可以是web服务器、mail服务器、DNS服务器、FTP服务器等。
3)数据共享存储层:为所有Real Server提供共享存储空间和内容一致性的存储区域,一般通过NFS网络文件系统或集群文件系统实现。
LVS 相关概念术语
- VS: Virtual Server。负责调度。
- RS:Real Server。后端真实的工作服务器,负责真正提供服务。
- DS(Director Server):指的是前端负载均衡器节点,调度服务器,将负载分发到Real Server的服务器上。
- VIP:Virtual IP。虚拟 IP,向外部直接面向用户请求,作为用户请求的目标的IP地址。[ VS外网的IP ]
- DIP:Director IP Address。Director连接到Real Server的IP地址。主要用于和内部主机通讯。[ VS内网的IP ]
- RIP:Real IP Address。真实IP地址,(后端服务器)集群节点上使用的IP地址。
- CIP:Client IP。客户端的IP地址。
访问流程:CIP VIP == DIP RIP
lvs 集群常见类型
按转发方式划分:
LVS-NAT(网络地址转换):LVS将请求报文中的目标地址和目标端口修改为选定到的真实服务器的IP和端口,从而实现报文的转发。
LVS-DR(直接路由):也称为Direct Routing,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。
LVS-TUN(隧道):不修改请求报文的IP首部,而在源IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标Real Server,Real Server直接响应给客户端(源IP是VIP,目标IP是CIP)。
LVS-FULLNAT:通过同时修改请求报文的源IP地址和目标IP地址进行转发。
实验一:
LVS NAT模式
NAT 模式双向流量都经过 LVS。
LVS NAT特性
- VIP和RIP不需要在同一个网段内;
- NAT的包的进出都需要经过LVS,所以LVS可能会成为一个系统的瓶颈问题。
-----------------------------------------------------------
lvs:设置两个网卡:eth0 172.25.254.100/24 NAT eth1 192.168.0.100/24 仅主机
webserver1: eth0 192.168.0.10/24 仅主机模式
webserver2 :eth0 192.168.0.20/24 仅主机模式
lvs:调度器
systemctl disable --now firewalld.service
vim /etc/sysctl.conf ##配置内核参数:net.ipv4.ip_forward = 1 启用IP转发
sysctl -p ##应用更改
yum install httpd -y
yum install ipvsadm -y ##安装工具包
:ipvsadm是一个用于管理 Linux 虚拟服务器(IPVS)的工具,它允许系统管理员设置和管理负载均衡器。ipvsadm -A -t 172.25.254.100:80 -s rr ##添加虚拟服务
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m ##添加后端服务器
ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
ipvsadm -Ln ##列出 Linux 虚拟服务器(IPVS)表中当前配置
systemctl restart httpd

webserver1: #webserver2类似
systemctl disable --now firewalld
yum install httpd -y
echo webserver1-192.168.0.10 >/var/www/html/index.html
systemctl restart httpd
在lvs上测试:
curl 192.168.0.10
curl 192.168.0.20
实验二:
LVS DR模式
DR 模式 LVS 逻辑比较简单,数据包通过直接路由方式转发给后端服务器,而且响应数据包是由 RS 服务器直接发送给客户端,不经过 LVS。
LVS DR特性
- 前端路由将目标地址为VIP报文统统发给Director Server;
- RS跟Director Server必须有一个网卡在同一个物理网络中;
- 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server;
- 所有的real server机器上都有VIP地址。
-----------------------------------------------------------
router:路由器
NAT模式:172.25.254.100/24 仅主机模式:192.168.0100/24
systemctl disable --now firewalld.service
vim /etc/NetworkManager/system-connections/eth0.connection
vim /etc/NetworkManager/system-connections/eth1.connection
nmcli connection reload
nmcli connection up eth0
nmcli connection up eth1
vim /etc/sysctl.conf
sysctl -p


![]()
webserver1:web服务器1
仅主机:ip:192.168.0.10;gateway:192.168.0.100
systemctl disable --now firewalld.service
vim /etc/NetworkManager/system-connections/eth0.connection
nmcli connection reload
nmcli connection up eth0
route -n
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
【arp_ignore和arp_announce是与ARP(地址解析协议)相关的内核参数】ip addr a 192.168.0.200/32 dev lo
nmcli connection reload


webserver1 和 webserver2 解决响应问题:


webserver2:web服务器2
仅主机:ip:192.168.0.20;gateway:192.168.0.100
systemctl disable --now firewalld.service
vim /etc/NetworkManager/system-connections/eth0.connection
nmcli connection reload
nmcli connection up eth0
route -n
##解决响应问题
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
ip addr a 192.168.0.200/32 dev lo ##将IP地址添加到回环接口
nmcli connection reload



lvs:调度器
仅主机:ip:192.168.0.50/24;lo:192.168.0.200/32
systemctl disable --now firewalld.service
vim /etc/sysconfig/network-scripts/ifcfg-eth1 #lvs环境我用的RedHat7版本
nmcli connection reload
nmcli connection up eth1
ip addr a 192.168.0.200/32 dev lo
nmcli connection reload
ipvsadm -A -t 192.168.0.200:80 -s wrr
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2
ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
systemctl restart httpd



client:测试主机
NAT:ip:172.25.254.200/24;gateway:172.25.254.100
systemctl disable --now firewalld.service


测试效果如下:

相关文章:
LVS 负载均衡
目录 LVS 体系结构 LVS 相关概念术语 lvs 集群常见类型 实验一: LVS NAT模式 LVS NAT特性 实验二: LVS DR模式 LVS DR特性 LVS是Linux virtual server的缩写,是一个高性能的、开源的负载均衡器,它运行于Linux操作系统之上…...
在Excel中启用宏 (~ ̄▽ ̄)~
一、启用宏 打开任意Excel,点击屏幕左上角的文件选项,然后选择Excel选项窗口。在Excel选项窗口中,选择信任中心按钮;在信任中心设置窗口中,选择宏设置,启用所有宏(不推荐,潜在风险&a…...
连接投影仪/显示器只能扩展不能复制的解决方案
原文章:https://iknow.lenovo.com.cn/detail/121481 故障现象: 笔记本外接投影仪/显示器后,笔记本屏幕有显示,但投影仪却只有背景或没有显示; 原因分析: 此现象多发生在双显卡机型上,笔记本屏…...
数据库基础知识
数据库基础知识 主流的数据库连接MySQL理解mysql和mysqld和数据库简单对数据库操作MySQL构架SQL分类存储引擎总结 主流的数据库 SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。Oracle: 甲骨文产品,适合大型项目…...
java JVM 锁消除
Java虚拟机 (JVM) 中的锁消除 (Lock Elimination) 是一种编译时优化技术,用于减少或完全去除不必要的同步操作。锁消除可以显著提高程序的性能,尤其是在多线程环境中。下面详细介绍锁消除的工作原理和技术细节。 锁消除的目的 锁消除的目标是在编译阶段…...
基于 Java Supplier与Predicate 封装自动重试机制通用接口
核心逻辑就是把重试的业务与重试中断条件抽象出来函数化,内部重试业务具体化。 关键需要理解Java的函数式接口编程 Supplier 与 Predicate作用。 import lombok.Data; import lombok.extern.slf4j.Slf4j;import java.util.Random; import java.util.function.Predi…...
Java面试题(基础篇)②
目录 一,float f3.4 是否正确? 二,重写和重载的区别是什么 三,this和super的应用场景是什么 四,throw和throws的区别是什么 五,应该使用什么数据类型来计算价格 一,float f3.4 是否正确&am…...
【docker快捷部署系列二】用docker-compose快速配置多个容器,docker部署Springboot+Vue项目和mysql数据库
1、思路 docker部署项目是将项目的不同程序放入不同容器中运行,这样可以方便管理不同程序。我的项目有Springboot、Vue、mysql三部分,Vue用nginx代理,因为nodejs太占空间了。一开始我是用Dockerfile创建镜像再运行容器的,但发现它…...
Java新手指南:从菜鸟到编程大师的趣味之路-类和对象
这里是Themberfue 本章主要介绍的是Java最重要的面向对象(OOP)的基础 面向对象 Java是一门纯面向对象的语言,在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用…...
计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
LeetCode 3131.找出与数组相加的整数 I:最小值之差(多语言一行版)
【LetMeFly】3131.找出与数组相加的整数 I:最小值之差(多语言一行版) 力扣题目链接:https://leetcode.cn/problems/find-the-integer-added-to-array-i/ 给你两个长度相等的数组 nums1 和 nums2。 数组 nums1 中的每个元素都与…...
Win32注册表操作
注册表的概念 注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。 注册表结构 运行Regedi…...
白骑士的PyCharm教学高级篇 3.3 Web开发支持
系列目录 上一篇:白骑士的PyCharm教学高级篇 3.2 多模块项目管理 在现代Web开发中,前端技术的重要性日益增加。PyCharm不仅在后端开发中表现出色,在前端开发方面也提供了丰富的支持。本文将详细介绍PyCharm中对HTML、CSS、JavaScript的编辑支…...
SpringAOP-底层实现源码解析
目录 1. Spring AOP原理流程图 2. 动态代理 3. ProxyFactory 4. Advice的分类 5. Advisor的理解 6. 创建代理对象的方式 ProxyFactoryBean BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator 7. 对Spring AOP的理解 8. AOP中的概念 9. Advice在Spring AOP中…...
【C语言初阶】C语言操作符全攻略:提升编程效率的关键步骤
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C语言 “ 登神长阶 ” 🤡往期回顾🤡:C语言数组 🌹🌹期待您的关注 🌹🌹 ❀操作符 📒1. 算术操作…...
2007-2023年上市公司金融化程度测算数据(含原始数据+计算代码+计算结果)
2007-2023年上市公司金融化程度测算数据(含原始数据计算代码计算结果) 1、时间:2007-2023年 2、指标:行业代码、行业名称、stkcd、year、证券简称、是否发生ST或ST或PT、是否发生暂停上市、股票简称、成立日期、交易性金融资产、…...
【时时三省】(C语言基础)操作符
山不在高,有仙则名。水不在深,有龙则灵。 ——csdn时时三省 算术操作符 这个时候打印出来的是整数 不会打印小数点后面的数字 因为它是int类型 只用把他换成浮点型并且它的两个数里面有一个必须是小数 才可以算出来小数 示例: %操作符的两个操作数必…...
常用API(三)
对于常见API的学习,主要学习了关于时间和日期的传统和新增APi 目录 1.Math 2.System 3.Runtime 4.日期和时间 (1)JDK8前传统时间API [1] Date [2] SimpledateFormat [3]Calendar (2)JDK8后新增时间API [1]代替…...
内存管理问题总结
内存管理 虚拟内存 我们程序所使⽤的内存地址叫做虚拟内存地址(Virtual Memory Address) 实际存在硬件⾥⾯的空间地址叫物理内存地址(Physical Memory Address) 操作系统引⼊了虚拟内存,进程持有的虚拟地址会通过 …...
十七、Intellij IDEA2022.1.1下载、安装、激活
目录 🌻🌻 一、下载二、 安装三、激活 一、下载 官网下载地址 本地直接下载 目前Intellij IDEA的最新版本已经更新到了 2024.1.4,由于最新版本可能存在不稳定的问题,此处选择其他版本进行下载,此处以2022.1.1为例进行下…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...
【版本控制】GitHub Desktop 入门教程与开源协作全流程解析
目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork(创建个人副本)步骤 2: Clone(克隆…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)
做RAG自己打算使用esmilvus自己开发一个,安装时好像网上没有比较新的安装方法,然后找了个旧的方法对应试试: 🚀 本文将手把手教你在 Docker 环境中部署 Elasticsearch 7.10.1 IK分词器 拼音插件 Kibana,适配中文搜索…...

