高可用接入层技术演化及集群概述

news2024/11/25 20:29:24

集群概述

集群的介绍及优势

  • 集群:将多台服务器通过硬件或软件的方式组合起来,完成特定的任务,而这些服务器对外表现为一个整体。
  • 集群的优势
    • 高可靠性:利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现不间断服务。
    • 高性能:即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域。
    • 负载均衡:即把负载压力根据算法合理分配到集群中的每一台计算机上,以减轻单台服务器的压力,降低对单台服务器的硬件和软件要求。
    • 可伸缩性:当服务器负载压力增长的时候,集群能够灵活扩展来满足需求,不降低服务质量。

集群分类及特点

计算机集群架构按照功能和结构一般分成以下几类:

  • 负载均衡集群

    负载均衡集群(Load balancing clusters)简称 LBC,负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。

    负载均衡集群是一种将很多客户集中访问的请求负载压力尽可能平均的分摊到计算机集群中的各个节点处理,以降低单台服务器压力,更好的向客户端提供服务的一种方式。

    负载均衡集群的作用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增加吞吐量,加强网络数据处理能力、提高网络的灵活性和可用性。简单来说,也就是:

    • 把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。
    • 7*24 小时的服务保证,任意一个或多个设备节点设备宕机,不影响到业务。在负载均衡集群中,所有计算机节点都提供相同的服务,集群负载均衡获取所有对该服务的入站请求。
  • 高可用集群

    高可用性集群(High availability clusters)简称 HAC,当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。

  • 高性能集群

    高性能计算集群(High perfomance clusters)简称 HPC,高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。


接入层技术演进

常用名词释义

  • 可用性:任何一台机器挂了,服务受不受影响
  • 扩展性:能否通过增加机器,扩充系统的性能
  • 反向代理+负载均衡:请求是否均匀分摊到后端的操作单元执行
  • nginx:一个高性能的 web-server 和实施反向代理的软件
  • lvs:Linux Virtual Server,使用集群技术,实现在 linux 操作系统层面的一个高性能、高可用、负载均衡服务器
  • keepalived:一款用来检测服务状态存活性的软件,常用来做高可用
  • f5:一个高性能、高可用、负载均衡的硬件设备
  • DNS轮询:通过在 DNS-server 上对一个域名设置多个 ip 解析,来扩充 web-server 性能及实施负载均衡的技术

裸奔时代(0)单机架构

在这里插入图片描述

裸奔时代的架构图如上:

1)浏览器通过 DNS-server,域名解析到 ip

2)浏览器通过 ip 访问 web-server

缺点:

1)非高可用,web-server 挂了整个系统就挂了

2)扩展性差,当吞吐量达到 web-server 上限时,无法扩容

注:单机不涉及负载均衡的问题


简易扩容方案(1)DNS轮询

在这里插入图片描述

假设 tomcat 的吞吐量是 1000 次每秒,当系统总吞吐量达到 3000 时,如何扩容是首先要解决的问题,DNS 轮询是一个很容易想到的方案:

  • 多部署几份 web-server,1个 tomcat 抗 1000,部署 3 个 tomcat 就能抗 3000
  • 在 DNS-server 层面,域名每次解析到不同的 ip

优点:

  • 零成本:在 DNS-server 上多配几个 ip 即可,功能也不收费
  • 部署简单:多部署几个 web-server 即可,原系统架构不需要做任何改造
  • 负载均衡:变成了多机,但负载基本是均衡的

缺点:

  • 非高可用:DNS-server 只负责域名解析 ip,这个 ip 对应的服务是否可用,DNS-server 是不保证的,假设有一个 web-server 挂了,部分服务会受到影响
  • 扩容非实时:DNS 解析有一个生效周期
  • 暴露了太多的外网 ip

简易扩容方案(2)nginx

在这里插入图片描述

tomcat 的性能较差,但 nginx 作为反向代理的性能就强多了,假设线上跑到 1w,就比 tomcat 高了10倍,可以利用这个特性来做扩容:

  • 站点层与浏览器层之间加入了一个反向代理层,利用高性能的 nginx 来做反向代理
  • nginx 将 http 请求分发给后端多个 web-server

优点:

  • DNS-server 不需要动
  • 负载均衡:通过 nginx 来保证
  • 只暴露一个外网 ip,nginx -> tomcat 之间使用内网访问
  • 扩容实时:nginx 内部可控,随时增加 web-server 随时实时扩容
  • 能够保证站点层的可用性:任何一台 tomcat 挂了,nginx 可以将流量迁移到其他 tomcat

缺点:

  • 时延增加 + 架构更复杂了:中间多加了一个反向代理层
  • 反向代理层成了单点,非高可用:tomcat 挂了不影响服务,nginx 挂了则整个系统瘫痪

高可用方案(3)keepalived

在这里插入图片描述

在这里插入图片描述

  • 做两台 nginx 组成一个集群,分别部署上 keepalived,设置成相同的虚 IP,保证 nginx 的高可用
  • 当一台 nginx 挂了,keepalived 能够探测到,并将流量自动迁移到另一台 nginx 上,整个过程对调用方透明

优点:

  • 解决了高可用的问题

缺点:

  • 资源利用率只有 50%
  • nginx 仍然是接入单点,如果接入吞吐量超过的 nginx 的性能上限,例如 qps 达到了50000,高并发会存在问题

scale up 扩容方案(4)lvs / f5

nginx 毕竟是软件,性能比 tomcat 好,但总有个上限,超出了上限,还是扛不住。

lvs 则是实施在操作系统层面;f5 的性能又更好了,它实施在硬件层面;它们性能比 nginx 好很多,例如每秒可以抗 10w,这样可以利用他们来扩容,常见的架构图如下:

在这里插入图片描述

  • 如同 nginx 可以扩展多个 tomcat 一样,可以通过 lvs 来扩展多个 nginx
  • 通过 keepalived + VIP 的方案可以保证可用性
  • 99.9999% 的公司到这一步基本就能解决接入层高可用、扩展性、负载均衡的问题。

但是不管是使用 lvs 还是 f5,这些都是 scale up 的方案,根本上,lvs/f5 还是会有性能上限,假设每秒能处理 10w 的请求,一天也只能处理 80 亿的请求(10w 秒吞吐量 * 8w秒),那万一系统的日 PV 超过 80 亿怎么办呢?(当然没几个公司要考虑这个问题)


scale out 扩容方案(5)DNS 轮询

如上所述,水平扩展,才是解决性能问题的根本方案,能够通过加机器扩充性能的方案才具备最好的扩展性。

facebook,google,baidu 的 PV 是不是超过 80 亿呢,它们的域名对应不止一个 ip,终点又是起点,还是得通过 DNS 轮询来进行扩容:

在这里插入图片描述

  • 通过 DNS 轮询来线性扩展入口 lvs 层的性能
  • 通过 keepalived 来保证高可用
  • 通过 lvs 来扩展多个 nginx
  • 通过 nginx 来做负载均衡,业务七层路由

总结

  • 接入层架构要考虑的问题域为:高可用、扩展性、反向代理+扩展均衡
  • nginx、keepalived、lvs、f5 可以很好的解决高可用、扩展性、反向代理 + 扩展均衡的问题
  • 水平扩展 scale out 是解决扩展性问题的根本方案,DNS 轮询是不能完全被 nginx/lvs/f5 所替代的

参考

  • nginx、lvs、keepalived、f5、DNS轮询(lvs为何不能完全替代DNS轮询)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么MCU在ADC采样时IO口有毛刺?

大家在使用MCU内部ADC进行信号采样一个静态电压时,可能在IO口上看到这样的波形。这个时候大家一般会认识是信号源有问题,但仔细观察会发现这个毛刺的频率是和ADC触发频率一样的。 那么为什么MCU在ADC采样时IO口会出现毛刺呢?这个毛刺对结果有…

APT80DQ60BG-ASEMI大电流二极管APT80DQ60BG

编辑:ll APT80DQ60BG-ASEMI大电流二极管APT80DQ60BG 型号:APT80DQ60BG 品牌:ASEMI 封装:TO-247 特性:插件、快恢复二极管 最大平均正向电流:80A 最大重复峰值反向电压:600V 恢复时间&am…

使用VBA快速统计词组词频(多单词组合)(2/2)

实例需求:产品清单如A列所示,现在如下统计多单词组合词组词频。 在上一篇博客中《使用VBA快速统计词组词频(多单词组合)(1/2)》讲解了如何实现双词的词频统计。 本文将讲解如何实现3词的词频统计,掌握实现方法之后&a…

从人的安全价值观看企业的安全发展

文章目录 每日一句正能量前言感受之一,安全价值观是体现个人人生价值的最高境界,是人与企业和谐发展的基本保障,也是企业安全发展的理论导向。感受之二,安全价值观是企业承担社会责任的主要表现,是体现企业价值的根基&…

容器技术:从虚拟机到轻量级容器的革命

一、引言 首先,什么是容器? 容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。通过名称空间(Namespace&a…

Axure RP - 交互设计的强大引擎

目录 前言 1. 交互设计:连接用户与产品的纽带 2. 情景设计:预测用户行为的未来 3. 演示和共享:让设计活起来 我的其他博客 前言 在数字化时代,用户体验的重要性日益突显,而交互设计成为塑造产品与用户互动的关键。…

php-使用wangeditor实现富文本-遇见问题

一、在 PowerShell 中使用 npm install 命令时,命令行解析器可能会将 符号解释为特殊字符,导致出现错误。 报错 解决 方法一:使用反引号()将包名括起来,以避免特殊字符的解析。修改命令为: …

对管理的一些思考

记得21年的时候,学习过《初探技术管理》,现在看来仍然是很有价值。 怎么判断自己是否有基础走上管理岗,我觉得最最基础的一点,是判断自己是否成为团队的主程。主程一般意味着对目前的系统有广泛、深入的了解,能够担任中…

VMWare Tools 共享目录设置

vmware tools安装完成后,进入到工项目录设置 点击虚拟机设置->硬件->CD/DVD(SATA) ,勾选使用物理驱动器,勾选自动检测 1、windows 操作系统设置 设置共享文件夹时,需要勾选 “ 在windows客户机中映射为网络驱动器”。 设置…

From Human Attention to Computational Attention (1)

”is the taking possession by the mind, in clear and vivid form, of one out of what seem several simultaneously possible objects or trains of thought. It implies withdrawal from some things in order to deal effectively with others“,William Jame…

Python自动化测试之线上流量回放:分析、存储与本地化支持!

在自动化测试中,线上流量回放是一项关键技术,它可以模拟真实用户请求并重现线上场景,验证系统的性能和稳定性。本文将介绍Python自动化测试中的线上流量回放技术,并提供实战代码,帮助你了解日志分割解析、存储至本地My…

C# URL参数编码

代码 string s "lw123abc测试信息!#¥%……&*()——";Console.WriteLine("原数据:\t\t" s);String s2 Uri.EscapeDataString(s);//Uri.EscapeDataString() 编码Console.WriteLine("Hexdata:\t&qu…

colmap三维重建核心逻辑梳理

colmap三维重建核心逻辑梳理 1. 算法流程束流2. 初始化3. 重建主流程 1. 算法流程束流 重建核心逻辑见 incremental_mapper.cc 中 IncrementMapperController 中 Reconstruct 初始化变量和对象判断是否有初始重建模型,若有,则获取初始重建模型数量&am…

Python Pandas 如何增加/插入一列数据(第5讲)

Python Pandas 如何增加/插入一列数据(第5讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

Python PIP安装pycorrector、kemln报错

本来想装个pycorrector用一下,结果在安装其依赖包kemln的时候疯狂报错,报错关键词包括但不限于Bash、Cmake,C啥的,搜了很多文章,终于摸索到了安装的办法。 1、安装bash 去官网https://gitforwindows.org/下载bash&am…

如何用idm下载迅雷 2024最新详细解析

有许多小伙伴日常习惯用迅雷处理或者下载文件,对于普通用户,由于迅雷平台的限速,下载速度仅有几十kb。此外,还有一些小伙伴安装idm后软件界面是英文,那么如何用idm下载迅雷,idm怎么设置中文呢?今…

国产or进口?台阶仪为何要选择国产

在微观轮廓测量领域,选择一款合适的台阶仪对于获得精准的测量结果至关重要。随着科技的不断发展,台阶仪市场上涌现了许多国产和进口产品,消费者在选择时可能会面临一些疑虑。 什么是台阶仪 台阶仪是一种超精密接触式微观轮廓测量仪&#xf…

tomcat错误

Error running Tomcat8: Address localhost:1099 is already in use window环境,打开cmd netstat -ano | findstr :1099发现对应PID为24732 结束PID taskkill /PID 24732 /F

【网络安全】-Linux操作系统—VMWare软件

文章目录 VMWare软件的安装选择VMWare版本下载VMWare安装过程 VMWare的常用操作创建新的虚拟机配置虚拟机启动和关闭虚拟机安装VMWare Tools VMWare的克隆和快照克隆(Clone)快照(Snapshot) 总结 VMWare是一种流行的虚拟化软件&…

【二叉树 OJ题】二叉树基础知识 与 OJ题完成(二叉树构建与遍历问题,子树查找问题)

二叉树 ! 二叉树概念与OJ题完成 二叉树 !1 树1.1 树的概念1.2 树的相关概念1.3 树的表示方式 2 二叉树2.1 二叉树的概念2.2 二叉树的构建2.3 特殊的二叉树 3 二叉树OJ题的解决3.1 二叉树构建与遍历问题3.1.1 二叉树遍历3.1.2 二叉树构建3.1.3 题目完成 3…