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为例进行下…...

【多线程初阶】内存可见性问题 volatile
文章目录 再谈线程安全问题内存可见性问题可见性问题案例编译器优化 volatileJava内存模型(JMM) 再谈线程安全问题 如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该有的结果,则说这个程序是线程安全的,反之,多线程环境中,并发执行后,产生bug就是线程不安全…...

flutter项目迁移空安全
重中之重 备份好项目文件,甚至连已经加载好的flutter库也可以备份。环境包升级 2.1 不要直接换成flutter:3.0以上的版本,这样做既有基本的库兼容问题,又有空安全下的语法问题(整个项目中需要增加 late、?、!的语法错误,一片报错的…...

MySql(十二)
目录 MySql约束 1.添加主键约束 语法格式 1)创建一个带主键的表 查看表结构 2)创建表的时候指定主键名称 查看表结构 3)创建一个表然后,然后再使用alter为列添加主键 查看表结构 4)为表添加数据 1---正常数据 2---主键…...
[蓝桥杯]交换次数
交换次数 题目描述 IT 产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称 BAT )在某海滩进行招聘活动。 招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:BABTATT,这使…...

黑马k8s(十七)
一:高级存储 1.高级存储-pv和pvc介绍 2.高级存储-pv 3.高级存储-pvc 最后一个改成5gi pvc3是没有来绑定成功的 pv3没有绑定 删除pod、和pvc,观察状态: 4.高级存储-pc和pvc的生命周期 二:配置存储 1.配置存储-ConfigMap 2.配…...

Playwright 测试框架 - Node.js
🚀超全实战:基于 Playwright + Node.js 的自动化测试项目教程【附源码】 📌 本文适合自动化测试入门者 & 前端测试实战者。从零开始手把手教你搭建一个 Playwright + Node.js 项目,涵盖配置、测试用例编写、运行与调试、报告生成以及实用进阶技巧。建议收藏!👍 �…...

Flutter GridView网格组件
目录 常用属性 GridView使用配置 GridView.count使用 GridView.extent使用 GridView.count Container 实现列表 GridView.extent Container 实现列表 GridView.builder使用 GridView网格布局在实际项目中用的也是非常多的,当我们想让可以滚动的元素使用矩阵…...
【SCI论文实现】信息引导的高质量三维重建——系统架构设计 PYTHON
一、多模态数据采集与预处理模块 设计目标:解决动态场景中多源数据的时空对齐与质量优化问题,为后续特征提取提供高精度、强一致性的输入。 1.1 传感器配置逻辑 选择 RGB-D 相机(如 Kinect)与 LiDAR(如 Velodyne VLP-16)的互补组合,原因在于: RGB-D 相机提供高分辨率…...

智能手机上用Termux安装php+Nginx
Termux的官方网站:Termux | The main termux site and help pages. 以下是在 Termux 上安装和配置 PHP Nginx 的完整流程总结,包含关键步骤和命令: 一、安装依赖 pkg update && pkg upgrade # 更新包列表和系统pkg install nginx p…...
【线上故障排查】缓存穿透攻击的识别与布隆过滤器(面试题 + 3 步追问应对 + 案例分析)
一、高频面试题 问题1:什么是缓存穿透?它对系统的核心危害是什么? 参考答案:缓存穿透指的是用户请求的数据在缓存和数据库中都不存在,导致请求直接绕过缓存打到数据库。核心危害是大量无效请求会耗尽数据库资源,比如CPU、内存或连接数,严重时可能引发数据库宕机,进而导…...