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

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. 三种模式比较

NATDRTUN
优点配置简单性能最好使用VPN
缺点性能低不支持跨网段必须使用VPN
真实服务器配置低要屏蔽ARP响应要配置VPN
支持的网络类型内网内网内网或外网
真实服务器数量10~30100100

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服务器

  1. 加载系统的LVS内核模块。

    modprobe ip_vs
    
  2. 下载ipvsadm软件包。

    apt -y install ipvsadm
    
  3. 设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。

    ipvsadm -A -t 12.0.0.10:80 -s rr
    
  4. 设置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
    
  5. 查看ipvsadm是否成功设置策略。

    ipvsadm -ln
    
  6. 配置服务器的两个网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]ens37:dhcp4: noaddresses: [12.0.0.10/24]
    
  7. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  8. 编辑系统内核文件/etc/sysctl.conf,开启路由转发功能。

    net.ipv4.ip_forward = 1
    
  9. 应用内核配置,使其生效。

    sysctl -p
    
  10. 配置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服务器

  1. 配置两台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
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 开启两台RS服务器的Nginx服务。

    systemctl start nginx
    

1.3 客户端访问测试

  1. 配置客户端网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [12.0.0.11/24]gateway4: 12.0.0.10
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 访问VIP地址。

    curl 12.0.0.10
    

2. LVS DR模式

2.1 配置DS服务器

  1. 加载系统的LVS内核模块。

    modprobe ip_vs
    
  2. 下载ipvsadm软件包。

    apt -y install ipvsadm
    
  3. 设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。

    ipvsadm -A -t 192.168.1.200:80 -s rr
    
  4. 设置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
    
  5. 查看ipvsadm是否成功设置策略。

    ipvsadm -ln
    
  6. 配置服务器的两个网卡。

    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
    
  7. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  8. 编辑系统内核文件/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
    
  9. 应用内核配置,使其生效。

    sysctl -p
    

2.2 配置RS服务器

  1. 配置两台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]
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 配置两台RS服务器的静态路由。

    route add -host 192.168.1.200 dev ens37
    
  4. 编辑系统内核文件/etc/sysctl.conf,配置ARP响应相关参数。

    net.ipv4.conf.ens37.arp_ignore = 1  
    net.ipv4.conf.ens37.arp_announce = 2
    
  5. 应用内核配置,使其生效。

    sysctl -p
    
  6. 开启两台RS服务器的Nginx服务。

    systemctl start nginx
    

2.3 客户端访问测试

  1. 配置客户端网卡。

    network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.5/24]gateway4: 192.168.1.254
    
  2. 保存网卡配置后,应用配置使其生效。

    netplan apply
    
  3. 访问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中&#xf…...

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 是一个强大的云平台,专门用于前端项目的部署和托管。它不仅支持多种前端框架和静态网站生成器&#xff0…...

如何运用 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...