01 LVS负载均衡群集
集群
在互联网应用中,随着站点对硬件的性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器越来越力不从心
集群的含义
- Cluster,集群也叫群集
- 由多台主机构成,但对外只表现为一个整体
集群分类
类型
- 负载均衡集群(高并发)
- 高可用集群(避免单点故障)
- 高性能运算集群
负载均衡集群(Load Balance Cluster)
- 提高应用系统的响应能力,因可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能
- LB的负载均衡依赖于主节点的分流算法
高可用集群(High Availability Cluster)
- 以提高系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用的容错效果
- HA的工作方式包括双工和主从两种模式
高性能运算集群(High Performance Computer Cluster)
- 以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力
- 高性能依赖于"分布式运算"、"并行计算",通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力
负载均衡集群架构
第一层,负载调度器(Load Balancer或Director)
- 当用户向服务器发送一个访问请求时,不让用户直接访问服务器,而是访问一个独立的调度器服务器,它的任务是接收用户的访问请求,把请求按照调度策略分配给后端的服务器
- 调度器不负责数据的解析,只是一个中转站,因此调度器的并发能力很强
第二层,服务器池(Server Pool)
- 调度器分配请求的目的地就是服务器池,负责向用户提供服务
- 在集群中,服务器池内的任意一个单台服务器,都可以单独运行业务产品,只是压力比负载均衡的环境更大而已
第三层,共享存储(Share Storage)
- 让服务器池中的每个Web服务器都挂载同一个存储池,假如网站内容更新,不需要在每个Web服务器上都更新一遍
结构
LVS集群的工作模式
本次只演示地址转换的示例步骤
- 负载均衡集群是目前企业用的最多的集群类型
- 集群的负载调度技术有三种工作模式
- 地址转换
- IP隧道
- 直接路由
NAT模式
- Network Address Translation,简称NAT模式
- 类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,作为外网的访问入口,内网的应答出口
- 服务器节点使用私有IP地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式
- 外网的请求和内网的响应都需要经过调度器,所以内网服务器的网关地址应该是调度器
- 针对中小型的集群环境
源地址和目标地址转换的过程
- 当外网客户端访问业务而发送请求时,调度器根据策略选择一个可用的后端服务器来处理请求
- 然后调度器通过DNAT把目标地址转换为后端服务器的地址,并传递给该服务器
- 后端服务器收到请求后,生成响应,然后返回给调度器,此时响应的源地址是后端服务器的IP地址
- 调度器收到响应后,通过SNAT把源地址修改为自己与外网通信的公有IP地址
- 然后返回给客户端
DR模式(直接路由)
- Direct Routing,简称DR模式
- 采用半开放式的网络结构,与TUN模式的结构类似,但内网服务器并不是分散在各地,而是与调度器位于同一个物理网络
- 负载调度器与内网服务器通过本地网络连接,不需要建立专用的IP隧道
- 因为调度器只接收外网的请求,内网服务器的响应则是直接由网关路由出去,所以减轻了调度器的压力
- 针对大规模集群
源地址和目标地址转换的过程
- 当外网客户端需要访问业务而发送请求时
- 通过DNAT修改目标地址为调度器的地址,然后传递给内网调度器
- 调度器收到请求后,根据调度策略选择一个可用的后端服务器,再通过DNAT把目标地址转换为内网服务器的地址,然后把请求传递给内网服务器
- 内网服务器收到请求后,生成响应直接返回给网关,此时的源地址是内网服务器的IP地址
- 网关收到后端服务器的响应后,进行SNAT地址转换,把源地址转换为网关的公有IP地址,然后返回给客户端
TUN模式(IP隧道)
- IP Tunnel,简称TUN模式
- 采用开放式的网络结构,调度器和内网设备不在同一物理网络
- 负载调度器仅作为外网的访问入口,内网服务器通过各自的Internet连接直接回应外网请求,而不再经过调度器
- 服务器节点分散在互联网中的不同位置,具有独立的公网IP地址,通过专用IP隧道与负载调度器相互通信
- 由于调度器和服务器都部署在公网,所以它们之间的通信都通过ip-ip的加密算法来加密通信
源地址和目标地址转换的过程
- 外网请求首先到达调度器的外网接口
- 调度器收到这些请求后,根据预设的路由规则将请求打包封装进IP隧道中,然后发送到内网
- 数据在IP隧道中传输时,隧道设备会将原始数据包头部封装,这个头部包含的是隧道设备的公共IP地址和内网目标服务器的私有IP地址
- 当内网服务器收到请求后,生成响应,响应首先到达隧道设备。
- 隧道设备会解析响应,去除隧道头部,然后根据记录的信息将响应返回到发起请求的外网客户端
- 外网客户端最终接收到的响应来自调度器,因为调度器会将来自内网服务器的响应经过隧道的IP地址转换,使得外网客户端看到的是调度器的公共IP地址作为源地址。
调度算法
-
轮询(Round Robin)
- 将受到的访问请求按照顺序轮流分配给群集中的各节点,(真实服务器),均等的对待每一台服务器,而不管服务器实际的连接数和系统负载
-
加权轮询(Weighted Round Robin)
- 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求书越多
- 保证性能强的服务器承担更多的请求数量
LVS常用选项
选项 | 说明 |
-s | 指定调度算法 rr:轮询 wrr:加权轮询 lc:最小链接数 wlc:加权最小连接数 |
-A | 添加一个新的集群服务 |
-E | 修改一个己有的集群服务 |
-D | 删除指定的集群服务 |
-S | 保存ipvsadm设定的规则策略,默认保存在/etc/sysconfig/ipvsadm中 |
-R | 载入己保存的规则策略,默认加载/etc/sysconfig/ipvsadm |
-C | 清除所有集群服务 |
-Z | 清除所有记数器 |
-L | 显示当前己有集群服务,能通过相应的options查看不同状态信息 |
-a | 向指定的集群服务中添加RS及属性 |
-e | 修改RS属性 |
-t | 指定为tcp协议 |
-u | 指定为udp协议 |
-s | 调度方法,默认为wlc |
-w | 指定权重,默认为1 |
-g | Gateway, DR模型 |
-i | ipip, TUN模型 |
-m | masquerade, NAT模型 |
-r | 指定后端服务器的地址 |
相关文章:

01 LVS负载均衡群集
集群 在互联网应用中,随着站点对硬件的性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器越来越力不从心 集群的含义 Cluster,集群也叫群集由多台主机构成,但对外只表现为一个整体 集群分类 类型 负载均衡集…...

Redis结合Lua脚本的简单使用
我们就拿购物车举例子 现在有5个东西免费送,我们只能选择1个 例如 可乐 美年达 香蕉 苹果 薯片 我们选择后就放进redis里面 然后我们不能选重复,只能选不同 Lua脚本 我们redis使用lua脚本的时候,会传两个参数进去 一个是List<Strin…...
Java使用zip4j加密压缩和解压文件与文件夹
最近项目中有个需求需要对文件夹进行压缩后传输,考虑数据泄露安全性问题,需要对压缩包进行加密,特地查找了下开源压缩加密类库,找到了Java语言开发的zip4j库,觉得挺好用的,在这分享给大家! Jav…...

一款好用的开源网站内容管理系统
今天给大家介绍的是一款开源网站内容管理系统(灵活、易用,性能良好、运行稳定,轻松管理建设网站) 官网:https://www.ujcms.com/ 介绍 客户端兼容Edge(Chromium版)、谷歌浏览器(Chro…...

Qt Modbus 寄存器读写实例
一.线圈状态寄存器读写 项目效果如下 1. 写单个寄存器 MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); int addrui->spinBoxwirte_addr->value();int dataui->spinBoxwirte_data->value();int ret modbus_write_bit(mb,addr,d…...

centos安装es、kibana、ik
这里es使用的是7.10.2版本的es,物料包下载地址如下 #注意安装的插件需和es版本保持一致 #es https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz #kibana https://artifacts.elastic.co/downloads/kibana/kibana-7.10…...

调试工具之GDB的基本使用
GDB基本使用 GDB是Linux下一款非常强大的调试软件,其实就是GNU Debugger的缩写。接下来我们学习一下他的基本使用。 例子函数,其中只有一个ds18b20的采集温度函数和一个主函数: #include <stdio.h> #include <errno.h> #includ…...
C++ //练习 16.14 编写Screen类模板,用非类型参数定义Screen的高和宽。
C Primer(第5版) 练习 16.14 练习 16.14 编写Screen类模板,用非类型参数定义Screen的高和宽。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块 template <int H, int W> class Screen{…...
【Java】深度解析监视器的组成原理
目录 一、什么是监视器(Monitor)二、监视器的组成部分三、线程的状态转换四、总结 一、什么是监视器(Monitor) 在Java中,监视器(Monitor)是用来实现线程同步的一种机制。每个Java对象都有一个与…...

Day14-Servlet后端验证码的实现
图片验证码的生成采用的是Kaptcha; Kaptcha是一个高度可配置的验证码生成工具,由Google开源。它通过一系列配置文件和插件,实现了将验证码字符串自动转换成图片流,并可以与session进行关联,从而在验证过程中使用&#…...

MySQL:数据库权限与角色
权限 MySQL 的权限管理系统是保障数据库安全性的关键组件之一。它允许数据库管理员精确控制哪些用户可以对哪些数据库对象执行哪些操作。 自主存取控制 DAC(DiscretionaryAccess Control):用户对于不同的数据库对象有不同的存取权限,不同的…...

等保测评练习卷25
等级保护初级测评师试题25 姓名: 成绩: 一、判断题(10110分) 1.安全区域边界对象主要根据系统中网络访问控制设备的部署情况来确定()不是网络访问控制设备而…...

《python语言程序设计》2018第6章第28题 掷骰子 两个色子,分别是1到6
2、3、12 玩家输 7、11玩家赢 4、5、6、8、9、10算1点,之后出7玩家输或者和上一次相同。def rolled(num_t):count 0still_win 0second_win 0still_lose 0second_lose 0while count < num_t:a_1 random.randint(1, 6)b_1 random.randint(1, 6)tTen a_1 b…...

Java方法递归
目录 1.方法递归调用 基本介绍 递归能解决什么问题? 八皇后问题 递归举例 递归重要规则 练习 2.递归调用应用实例-迷宫问题 3.递归调用实例-汉诺塔 4.递归调用实例-八皇后问题 1.方法递归调用 基本介绍 简单来说,递归就是自己调用自己。 …...

目标跟踪那些事
目标跟踪那些事 跟踪与检测的区别 目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。 目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。 目标跟踪(object Tracking)&…...

【Git】 如何将一个分支的某个提交合并到另一个分支
【Git】 如何将一个分支的某个提交合并到另一个分支 在使用 Git 进行版本控制时,常常会遇到这样的需求:将某个分支的特定提交合并到另一个分支中。这种情况下,我们可以使用 cherry-pick 命令来实现。本文将详细介绍 cherry-pick 命令的使用方…...

【嵌入式之RTOS】什么是消息队列
目录 一、FreeRTOS消息队列的基本概念 二、FreeRTOS消息队列的工作原理 三、FreeRTOS消息队列的特点 四、FreeRTOS消息队列的应用 五、示例 消息队列是一种用于任务间通信的机制,它允许一个任务(生产者)向消息队列发送消息,而…...

9-springCloud集成nacos config
本文介绍spring cloud集成nacos config的过程。 0、环境 jdk 1.8maven 3.8.1Idea 2021.1nacos 2.0.3 1、项目结构 根项目nacos-config-sample下有两个module,这两个module分别是两个springboot项目,都从nacos中获取连接mysql的连接参数。我们开工。 …...

市场主流 AI 视频生成技术的迭代路径
AI视频生成技术的迭代路径经历了从GANVAE、Transformer、Diffusion Model到Sora采用的DiT架构(TransformerDiffusion)等多个阶段,每个阶段的技术升级都在视频处理质量上带来了飞跃性的提升。这些技术进步不仅推动了AI视频生成领域的快速发展&…...

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——1.c++入门(2)
1. 函数重载 C⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。 #include<iostream> u…...

剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...