C05S08-LVS负载均衡
一、LVS
1. LVS概述
LVS(Linux Virtual Server、Linux虚拟服务)是一种基于Linux系统集群的负载均衡方案,属于四层的负载均衡。
- 集群:将相同组件部署在不同的服务器上,提供统一的服务,以及同样的功能,各台服务器的性能大致相同。
- 分布式:把不同组件部署在不同服务器上,组件之间依靠网络通信,实现定制化功能。
2. LVS相关概念
系统性能的扩展方式
- 单节点扩展:
- 垂直扩展,向上扩展,提升计算机的性能(硬件性能),性能提升有限。
- 水平扩展,向外扩展,增加设备的数量提供性能,也就是集群的由来。
集群类型
- 负载均衡
- HA(高可用)主要有两种:负载均衡高可用,主备高可用。
系统的可靠性指标
- MTBF(平均无故障时间)
- MTTR(平均故障恢复时间)
- 指标计算方式:MTBF/(MTBF+MTTR)*100%,指标范围越接近1越好。
- 停机时间通常不会算在故障时间内,计划停机时间不计算在故障范围内,计划外停机时间计算在故障时间内。
LVS常见术语
- VS(Virtual Server):LVS的逻辑名字,外部访问LVS的IP地址和端口。
- DS(Director Server):LVS集群的主服务器、调度器,是集群的核心。接受客户端的请求,然后根据负载均衡的算法转发到后端RS。
- RS(Real Server):LVS集群中的真实服务器,也就是后端服务器,接收调度器转发的请求。
- CIP(Client IP):客户端的IP地址。
- VIP(Virtual IP):虚拟IP地址,对外提供服务的IP地址。
- DIP(Director Server IP):调度器的IP地址。
- RIP(Real Server IP):后端服务器的IP地址。
LVS负载均衡的模式
- NAT模式:地址转换模式,是最为常用的模式。
- DR模式:直连路由模式,性能最佳。
- TUN模式:隧道模式,通过VPN实现。
3. NAT模式
NAT模式也就是地址转换模式。在这种模式下,LVS中的DS类似一个路由。客户端发出的请求先发送给DS,请求数据包中的目标地址VIP会转换为RIP;RS处理完请求,响应数据包中的源地址RIP会转换成VIP。
这种模式性能较差,后端的真实服务器数量通常在10~30台左右。请求和响应都会经过DS,所以DS的性能会成为整个LVS的性能瓶颈。
4. DR模式
DR模式是直连路由模式,调度器只负责请求的转发,后端服务器的响应会直接返回给客户端。DS和RS属于同一个网络。
5. TUN模式
TUN模式是隧道模式,调度器只负责请求的转发,后端服务器和调度器通过VPN实现互相通信。
6. 三种模式比较
| NAT | DR | TUN | |
|---|---|---|---|
| 优点 | 配置简单 | 性能最好 | 使用VPN |
| 缺点 | 性能低 | 不支持跨网段 | 必须使用VPN |
| 真实服务器 | 配置低 | 要屏蔽ARP响应 | 要配置VPN |
| 支持的网络类型 | 内网 | 内网 | 内网或外网 |
| 真实服务器数量 | 10~30 | 100 | 100 |
7. ipvsadm命令 – 管理Linux虚拟服务器
ipvsadm命令来自英文词组“IPVS administration”的缩写,功能是用于管理Linux虚拟服务器。
ipvsadm [选项] IP地址
常见的选项:
| 选项 | 功能 |
|---|---|
| -a | 添加真实服务器 |
| -A | 添加虚拟服务器 |
| -D | 删除虚拟服务器 |
| -g | 设置LVM为DR模式 |
| -i | 设置LVM为TUN模式 |
| -m | 设置LVM为NAT模式 |
| -n | 以数字形式显示IP地址 |
| -r | 设置真实服务器 |
| -s | 设置负载均衡算法 |
| -t | 设置TCP协议的虚拟服务 |
| -w | 设置权重 |
二、LVS具体配置
1. LVS NAT模式
1.1 配置DS服务器
-
加载系统的LVS内核模块。
modprobe ip_vs -
下载ipvsadm软件包。
apt -y install ipvsadm -
设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。
ipvsadm -A -t 12.0.0.10:80 -s rr -
设置RS服务器,指定LVM为NAT模式。
ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.129 -m ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.130 -m -
查看ipvsadm是否成功设置策略。
ipvsadm -ln -
配置服务器的两个网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]ens37:dhcp4: noaddresses: [12.0.0.10/24] -
保存网卡配置后,应用配置使其生效。
netplan apply -
编辑系统内核文件/etc/sysctl.conf,开启路由转发功能。
net.ipv4.ip_forward = 1 -
应用内核配置,使其生效。
sysctl -p -
配置SNAT策略。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 12.0.0.10
1.2 配置RS服务器
-
配置两台RS服务器的网卡,设置网关为DS服务器的内网IP(ens33网卡)。
# 第一台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.128# 第二台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.128 -
保存网卡配置后,应用配置使其生效。
netplan apply -
开启两台RS服务器的Nginx服务。
systemctl start nginx
1.3 客户端访问测试
-
配置客户端网卡。
network:ethernets:ens33:dhcp4: noaddresses: [12.0.0.11/24]gateway4: 12.0.0.10 -
保存网卡配置后,应用配置使其生效。
netplan apply -
访问VIP地址。
curl 12.0.0.10
2. LVS DR模式
2.1 配置DS服务器
-
加载系统的LVS内核模块。
modprobe ip_vs -
下载ipvsadm软件包。
apt -y install ipvsadm -
设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。
ipvsadm -A -t 192.168.1.200:80 -s rr -
设置RS服务器,指定LVM为DR模式。
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.129 -g ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.130 -g -
查看ipvsadm是否成功设置策略。
ipvsadm -ln -
配置服务器的两个网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]gateway4: 192.168.1.254 -
保存网卡配置后,应用配置使其生效。
netplan apply -
编辑系统内核文件/etc/sysctl.conf,关闭路由转发相关功能,也就是不将DS服务器作为路由器。
net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens37.send_redirects = 0 -
应用内核配置,使其生效。
sysctl -p
2.2 配置RS服务器
-
配置两台RS服务器的网卡。
# 第一台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]# 第二台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32] -
保存网卡配置后,应用配置使其生效。
netplan apply -
配置两台RS服务器的静态路由。
route add -host 192.168.1.200 dev ens37 -
编辑系统内核文件/etc/sysctl.conf,配置ARP响应相关参数。
net.ipv4.conf.ens37.arp_ignore = 1 net.ipv4.conf.ens37.arp_announce = 2 -
应用内核配置,使其生效。
sysctl -p -
开启两台RS服务器的Nginx服务。
systemctl start nginx
2.3 客户端访问测试
-
配置客户端网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.5/24]gateway4: 192.168.1.254 -
保存网卡配置后,应用配置使其生效。
netplan apply -
访问VIP地址。
curl 192.168.1.200
相关文章:
C05S08-LVS负载均衡
一、LVS 1. LVS概述 LVS(Linux Virtual Server、Linux虚拟服务)是一种基于Linux系统集群的负载均衡方案,属于四层的负载均衡。 集群:将相同组件部署在不同的服务器上,提供统一的服务,以及同样的功能&…...
C 语言代码诗韵:数字功能的雅集华章
函数基本操作练习 主要内容: 本任务主要练习函数的申请、定义、调用等,主要包含以下功能: 1)编写函数,输入一个整数,求各个数字之和; 2)编写函数,计算1!2&…...
ps案例制作
宣传海报 暖色调海报商品展示图...
【C++】列表初始化、声明、范围for、array容器
列表初始化、声明、范围for、array容器 一、统一的列表初始化1.1 使用{ }初始化1.2 initializer_list容器 二、声明2.1 auto关键字2.2 decltype关键字2.3 nullptr关键字 三、范围for四、array容器和forward_list容器 一、统一的列表初始化 1.1 使用{ }初始化 在C98中…...
C++智能指针详解
一、智能指针简介 智能指针是一个类似于指针的类,将指针交给这个类对象进行管理,我们就可以像使用指针一样使用这个类,并且它会自动释放资源。 智能指针运用了 RAII 的思想(资源获得即初始化)。RAII 是指,用对象的生命周期来管理资…...
基础库正则表达式
我们已经可以用requests 库来获取网页的源代码,得到 HTML 代码。但我们真正想要的数据是包含在 HTML代码之中的,要怎样才能从 HTML,代码中获取想要的信息呢?正则表达式就是其中一个有效的方法。 本篇博客我们将了解一下正则表达式的相关用法。正则表达…...
【spring专题】spring如何解析配置类和扫描包路径
文章目录 目标重要的组件加载配置类启动解析组件定位配置类解析配置类 扫描过程总结 目标 这是我们使用注解方式启动spring容器的核心代码 AnnotationConfigApplicationContext applicationContext new AnnotationConfigApplicationContext(MyConfig.class); User user (Us…...
MyBatis框架的入门
目录 MyBatis第一章:框架的概述1. MyBatis框架的概述 第二章:MyBatis的入门程序1. 创建数据库和表结构2. MyBatis的入门步骤 MyBatis 第一章:框架的概述 1. MyBatis框架的概述 MyBatis是一个优秀的基于Java的持久层框架,内部对…...
代码随想录D22-23 回溯算法01-02 Python
理论回顾 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。 回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝…...
【网络云计算】2024第50周-每日【2024/12/13】小测-理论-写10个Bash Shell脚本-解析
文章目录 1. 计算1到100的和2. 列出当前目录下所有文件和文件夹3. 检查文件是否存在4. 备份文件到指定目录(简单示例)5. 打印系统当前日期和时间6. 统计文件中的行数7. 批量重命名文件(将.txt后缀改为.bak)8. 查找进程并杀死&…...
MATLAB转换C语言--问题(一)FFT 和 IFFT 的缩放因子
1. MATLAB 中的 FFT 和 IFFT 在 MATLAB 中,fft 和 ifft 函数具有以下缩放行为: fft:执行快速傅里叶变换(FFT),不进行缩放。ifft:执行逆快速傅里叶变换(IFFT),…...
轻松上手:使用 Vercel 部署 HTML 页面教程
😀 在学习前端的过程中,部署项目往往是一个令人头疼的问题。然而,Vercel 为我们提供了一个便捷且免费的解决方案。 Vercel 是一个强大的云平台,专门用于前端项目的部署和托管。它不仅支持多种前端框架和静态网站生成器࿰…...
如何运用 HTM?
一、HTM 概述 HTM(Hierarchical Temporal Memory,分层时序记忆)是一种基于神经科学原理构建的计算模型,旨在模拟大脑的学习和记忆机制,以处理复杂的时间序列数据和模式识别任务。它具有独特的架构和算法,能…...
12.16【net】【study】
路由表是路由器或者其他互联网网络设备上存储的一张表,它记录了到达特定网络目的地的路径。路由表中的每一行(即一个路由条目)包含了目的地网络地址、子网掩码、下一跳地址、出接口等信息。 Destinations(目的地)和 R…...
2023和2024历年美赛数学建模赛题,算法模型分析!
文末获取历年优秀论文解析,可交流解答 2023年题目分析 MCM(Mathematical Contest in Modeling) 问题 A:遭受旱灾的植物群落 概述:要求建立预测模型,模拟植物群落在干旱和降水充裕条件下随时间的变化。类…...
Node.js内置模块
1.内置模块 Node.js的中文网参考手册:https://nodejs.cn//api 帮助文档 API文档:查看对应的模块,左边是模块,右边是模块的成员 源码:https://github.com/nodejs/node/tree/main/lib 查看 例如: http.js 创建web服务器的模块 -->进入源码中,搜索…...
测评|携程集团25年社招在线测评北森题库、真题分析、考试攻略
携程集团社招入职测评北森题库主要考察以下几个方面: 1. **言语理解**:这部分主要测试应聘者运用语言文字进行思考和交流、迅速准确地理解和把握文段要旨的能力。 2. **资料分析**:包括文字题和图表题,考察应聘者快速找出关键信息…...
快速启动Go-Admin(Gin + Vue3 + Element UI)脚手架管理系统
Go-Admin 是一个基于 Gin Vue Element UI & Arco Design & Ant Design 的前后端分离权限管理系统脚手架。它包含了多租户支持、基础用户管理功能、JWT 鉴权、代码生成器、RBAC 资源控制、表单构建、定时任务等功能。该项目的主要编程语言是 Go 和 JavaScript。 ps&a…...
数据分流:优化数据处理流程的关键策略
引言 在大数据时代,企业面临着数据量的激增和数据类型的多样化。为了有效地管理和分析这些数据,数据分流成为了一个重要的策略。数据分流指的是将数据按照特定的规则和流程分配到不同的处理路径,以优化数据处理效率和准确性。本文将探讨数据…...
RabbitMQ如何构建集群?
大家好,我是锋哥。今天分享关于【RabbitMQ如何构建集群?】面试题。希望对大家有帮助; RabbitMQ如何构建集群? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中,集群(Cluster&#x…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
