LVS 概念介绍

1、集群简介
集群概述

集群称呼来自于英文单词 cluster,表示一群、一串的意思,用在服务器领域则表示大量服务器的集合体,协同起来向用户提供系统资源,系统服务。通过网络连接组合成一个计算机组,来共同完一个任务。

根据实际企业环境的不同,集群所提供的功能也各不相同,采用的技术细节也可能各有千秋,但无论哪种集群,都至少包括两台节点服务器。而对外表现为一个整体,只提供一个访问入口(域名或 IP 地址),为用户提供服务,组成集群的服务器称之为集群的节点。

集群特性

① 高性能(performance)

一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台计算机能够搞定的。这需要上千台一起来完成这个工作的,可以获得很高的整体性能。

② 价格有效性(性价比)

通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级计算机相比具有更高的性价比。

③ 可伸缩性

集群系统中的节点数目可以增长到几千个,乃至上万个,当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量。

④ 高可用性

在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活节点提供服务,可实现高可用性。确保整个系统的服务必须是 7*24 小时运行的。

应用场景

高并发、高可用性、高性能场景

例如:一台 web 服务器,如果能够响应 10000 个并发,如果现在有 20000 个并发,一台服务器就无法响应。说明,web 服务已经达到瓶颈 。

解决这个问题的办法:

  • 加配置: 加 CPU, 加内存, 加带宽, 加 SSD 这种解决方法称为“向上扩展”或“纵向扩展”, 能够解决一时, 却不能彻底解决。
  • 加服务器: 一台==>两台, 两台==>四台 四台==>8 台。使用多台服务器同时为用户提供服务,而这一种解决方法则称为“横向扩展”,就是搭建集群。
集群的种类

根据集群所针对的目标差异,可分为以下三种类型:

① 负载均衡集群(laod balance cluster,简称 LB):以提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载的整体性能。 LB 的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。

② 高可用集群(high availability cluster,简称 HA):以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。HA 的工作方式包括双工、主从两种模式------双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主点。

高性能运算集群(high performance computer cluster 简称 HPC):这类集群致力于提供单个计算机所不能提供的强大的计算能力,以提高应用系统的 CPU 运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力.通过专用硬件和软件将多个服务器的 CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。

实现手段

负载均衡集群(LB)实现手段

  • 硬件的实现: F5 负载均衡器 深信服 A10
  • 软件的实现: LVS(4 层,传输层) ,Nginx(7 层,应用层)
2、LVS 集群
LVS 介绍

官网:http://www.linuxvirtualserver.org/

中文站点: http://zh.linuxvirtualserver.org/

LVS 是 Linux Virtual Server 的简写,意即 Linux 虚拟服务器,是一个虚拟的服务器集群系统,本项目在 1998 年 5 月由阿里巴巴的著名工程师章文嵩博士开发的一款开源软件,是中国国内最早出现的自由软件项目之一。

LVS 工作在一台 server 上提供 Director(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的 real server(真正提供服务的主机),从而实现集群环境中的负载均衡。

LVS 工作在 ISO 模型中的第四层,由于其工作在第四层,因此与 iptables 类似,必须工作在内核空间上。因此 lvs 与 iptables 一样,是直接工作在内核中的,叫 ipvs,主流的 linux 发行版默认都已经集成了 ipvs,因此用户只需安装一个管理工具ipvsadm 即可。

LVS 的专用名词

解释

DS:Director Server

指的是前端负载均衡器节点。

RS:Real Server

后端真实的工作服务器。

VIP

向外部直接面向用户请求,作为用户请求的目标的 IP 地址

DIP:Director Server IP

主要用于和内部主机通讯的 IP 地址。

RIP:Real Server IP

后端服务器的 IP 地址。

CIP:Client IP

访问客户端的 IP 地址。

LVS 组成

LVS 由 2 部分程序组成,包括 ipvs 和 ipvsadm。

LVS 的核心组件 ipvs 工作在 kernel 中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的 real server。而另一个组件 ipvsadm 是工作在用户空间的一个让用户定义 ipvs 规则的工具。

故我们只要在 server 上装了 ipvsadm 软件包就可以定义 ipvs 规则,而在 linux kernel 的 2.6 版本之后 kernel 是直接支持 ipvs 的。

LVS 工作图

① 负载调度器

调度器(Director): 整个集群对外的最前端主机, 负责接收用户请求, 并且根据相关的调度算法, 将请求转发到后端真实服务器上,而客户端认为服务是来自一个 IP 地址(我们可称之为 VIP 虚拟 IP 地址)上的。

② 服务器池: Server Pool

真正为用户提供服务的服务器, 每一台服务器就是一台 RS[RealServer],执行的服务有 WEB、MAIL、FTP 和 DNS 等。

③ 共享存储: Shared Storaged

为 RS 保持相同内容, 提供数据的一致性,也就是说,它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

LVS 负载均衡算法

针对不同的网络服务和配置需要,LVS 调度器提供多种不同的负载调度算法,其中最常用的算法包括轮询、加权轮询、最少连接、权最少连接和 source hashing 源地址 hash。

负载均衡方式

说明

轮询(rr, RoundRobin)

将收到的访问请求按照顺序轮流分配给集群中的各节点(真实服务器)。

加权轮询(wrr, Weighted RoundRobin)

根据真实服务器的处理能力轮流分配收到的访问请求,它将依据不同 RS 的权重分配任务。权重较高的 RS 将优先获得任务,并且分配到的连接数将比权重较低的 RS 更多。这样可以保证处理能力强的服务器承担更多的访问流量。相同权重的 RS 得到相同数目的连数。

最少连接(lc, Least Connections)

IPVS 表存储了所有的活动的连接。把新的连接请求发送到当前连接数最小的 RS。


加权最少连接(wlc,WeightedLeastConnections)

在服务器节点的性能差异较大的情况下,可以为真实服务器设置权重,权重较高的节点将承担更大比例的活动连接负载。假设各台RS的权重依次为 Wi(i = 1..n),当前的 TCP 连接数依次为 Ti(i=1..n)依次选取 Ti/Wi 为最小的 RS 作为下一个分配RS。

source hashing 源地址 hash(sh)

将来自同一个 ip 的请求始终调度至同一 RS

LVS 优点

① 抗负载能力强:因为 lvs 工作方式的逻辑是非常简单的,而且工作在网络第 4 层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。lvs 一般很少出现故障,即使出现故障一般也是其他地方(如网卡或内核的承载能力已到上限)出现问题导致 lvs 出现问题,内存和 cpu 方面基本无消耗。

② 配置性低:这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。

③ 工作稳定:因为其本身抗负载能力很强,所以稳定性高,另外各种 lvs 都有完整的双机热备方案,所以一点不用担心负载衡器本身会出什么问题。

④ 无流量:lvs 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了负载均衡器的 IO 性能不会受到大流量的影响。

⑤ lvs 基本上能支持所有应用:因为 lvs 工作在第 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库等。

LVS 工作模式

LVS 有三种工作模式:NAT,DR,TUN。DR 是三种工作模式中性能最高的,TUN 次之。

  • NAT(Network Address Translation) 即网络地址映射模式
  • DR(Direct Routing) 即直接路由模式
  • TUN(IP Tunneling) 即 IP 隧道模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/246164.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub 开启 2FA 双重身份验证的方法

为什么要开启 2FA 自2023年3月13日起,我们登录 GitHub 都会看到一个要求 Enable 2FA 的重要提示,具体如下: GitHub users are now required to enable two-factor authentication as an additional security measure. Your activity on GitHub includes you in this requi…

【C++】模板进阶

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.非类型模板参数 …

华为ensp--NAT实验

实验拓扑图及实验要求 实验相关配置 为保证可以登录防火墙web界面,需要对FW1、FW2以及Cloud1进行相关配置 Cloud1配置 需绑定网卡(建议新建虚拟网卡),并且与防火墙管理口(默认g0/0/0)属于同一网段 FW1 F…

自动驾驶的决策层逻辑

作者 / 阿宝 编辑 / 阿宝 出品 / 阿宝1990 自动驾驶意味着决策责任方的转移 我国2020至2025年将会是向高级自动驾驶跨越的关键5年。自动驾驶等级提高意味着对驾驶员参与度的需求降低,以L3级别为界,低级别自动驾驶环境监测主体和决策责任方仍保留于驾驶…

【思路合集】talking head generation+stable diffusion

1 以DiffusionVideoEditing为baseline: 改进方向 针对于自回归训练方式可能导致的漂移问题: 训练时,在前一帧上引入小量的面部扭曲,模拟在生成过程中自然发生的扭曲。促使模型查看身份帧以进行修正。在像VoxCeleb或LRS这样的具…

ubuntu1604安装及问题解决

虚拟机安装vmbox7 虚拟机操作: 安装增强功能 sudo mkdir /mnt/share sudo mount -t vboxsf sharefolder /mnt/share第一次使用sudo提示is not in the sudoers file. This incident will be reported 你的root需要设置好密码 sudo passwd root 输入如下指令&#x…

机器学习整理

绪论 什么是机器学习? 机器学习研究能够从经验中自动提升自身性能的计算机算法。 机器学习经历了哪几个阶段? 推理期:赋予机器逻辑推理能力 知识期:使机器拥有知识 学习期:让机器自己学习 什么是有监督学习和无监…

【Java面试】Mysql

目录 sql的执行顺序索引的优点和缺点怎么避免索引失效(也属于sql优化的一种)一条sql查询非常慢,我们怎么去排查和优化?存储引擎 MylSAM和InnoDB、Memory的区别事务的四大特性(ACID)脏读、不可重复读、幻读事务的隔离级别?怎么优化数据库SQL优…

多个SSH-Key下,配置Github SSH-Key

首先,检查 github 的连接性,因为DNS污染的原因,很多机器ping不通github,就像博主的机器: 怎么解决DNS污染的问题,博主查了很多教程,测试出一个有效的方法,那就是修改hosts文件。host…

DAY11_(简易版)VUEElement综合案例

目录 1 VUE1.1 概述1.1.1 Vue js文件下载 1.2 快速入门1.3 Vue 指令1.3.1 v-bind & v-model 指令1.3.2 v-on 指令1.3.3 条件判断指令1.3.4 v-for 指令 1.4 生命周期1.5 案例1.5.1 需求1.5.2 查询所有功能1.5.3 添加功能 2 Element2.0 element-ui js和css和字体图标下载2.1 …

go语言(十九)---- channel

channel的使用 //1. 发送value到channelchannel <- value //2. 接收并将其丢弃<- channel //3. 从channel中接收数据&#xff0c;并将其赋值给x x : <- channel 例子 package mainimport "fmt"func main() {//定义一个channelc : make(chan int)go func…

山海鲸智慧医疗解决方案:让医疗数据说话

在医疗领域&#xff0c;数据可视化对于提高诊疗效率、辅助医学研究和提升患者就医体验具有重要意义。作为山海鲸可视化软件的开发者&#xff0c;我们致力于利用先进的数据可视化技术&#xff0c;为医疗行业提供高效、智能的解决方案&#xff0c;本篇文章就带大家一起了解一下这…

【Python】01快速上手爬虫案例一:搞定豆瓣读书

文章目录 前言一、VSCodePython环境搭建二、爬虫案例一1、爬取第一页数据2、爬取所有页数据3、格式化html数据4、导出excel文件 前言 实战是最好的老师&#xff0c;直接案例操作&#xff0c;快速上手。 案例一&#xff0c;爬取数据&#xff0c;最终效果图&#xff1a; 一、VS…

用Visual Studio Code创建JavaScript运行环境【2024版】

用Visual Studio Code创建JavaScript运行环境 JavaScript 的历史 JavaScript 最初被称为 LiveScript&#xff0c;由 Netscape&#xff08;Netscape Communications Corporation&#xff0c;网景通信公司&#xff09;公司的布兰登艾奇&#xff08;Brendan Eich&#xff09;在 …

SpringBoot 自定义Filter 提前返回 CORS 错误 处理前后端分离跨域配置无效问题解析

前言 浏览器有跨域限制&#xff0c;非同源策略 (协议、主机名或端口不同) 被视为跨域请求&#xff0c;解决跨域有跨域资源共享(CORS)、反向代理和 JSONP的方式。本篇通过 SpringBoot 的资源共享配置 (CORS) 来解决前后端分离项目的跨域&#xff0c;以及从原理上去解决跨域配置…

JVM简介

一、什么是JVM JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;JVM是一种用于计算设备的规范&#xff0c;它是一个虚构出来的计算机&#xff0c;是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

qt 坦克大战游戏 GUI绘制

关于本章节中使用的图形绘制类&#xff0c;如QGraphicsView、QGraphicsScene等的详细使用说明请参见我的另一篇文章&#xff1a; 《图形绘制QGraphicsView、QGraphicsScene、QGraphicsItem、Qt GUI-CSDN博客》 本文将模仿坦克大战游戏&#xff0c;目前只绘制出一辆坦克&#…

编译PCL Qt程序

使用PCL的qt程序时&#xff0c;提示不是用QVTK编译的&#xff0c;所以需要在编译VTK时打开Qt的编译选项&#xff08;由于CMakeList比较复杂&#xff0c;使用CMakeGui进行配置&#xff0c;PCL同理&#xff09;&#xff0c;编译VTK完成后&#xff0c;编译PCL也需要配置Qt支持&…

公司内网虚拟机中穿透服务器Coturn的搭建

1. 写在前面 coturn服务器的搭建文章已经非常多&#xff0c;但是对于对linux不熟悉的人来说排查错误的文章不多&#xff0c;此篇文章把我这次搭建过程以及如何排查问题做一个梳理我这里是在oracle vm虚拟机中搭建安装的ubuntu&#xff0c;通过H3C路由器映射到外网以下介绍我只…

再谈Android View绘制流程

一&#xff0c;先思考何时开始绘制 笔者在这里提醒读者&#xff0c;Android的View是UI的高级抽象&#xff0c;我们平时使用的XML文件也好&#xff0c;本质是设计模式中的一种策略模式&#xff0c;其View可以理解为一种底层UI显示的Request。各种VIew的排布&#xff0c;来自于开…