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

集群概述

集群的介绍及优势

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

集群分类及特点

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

  • 负载均衡集群

    负载均衡集群(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.hqwc.cn/news/283821.html

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

相关文章

使用Log4j与log4j2配置mybatisplus打印sql日志

环境:项目非完全spring项目,没有spring的配置文件。执行sql时老是不打印sql语句。因此进行修改,过程比较坎坷,记录一下。 我尝试使用log4j和log4j2进行配置 最终把这两种全部配置记录上 Log4j配置 如果项目用的是log4j需要进行配置…

30. 深度学习进阶 - 池化

Hi,你好。我是茶桁。 上一节课,我们详细的学习了卷积的原理,在这个过程中给大家讲了一个比较重要的概念,叫做input channel,和output channel。 当然现在不需要直接去实现, 卷积的原理PyTorch、或者TensorFlow什么的…

基于ssm疫情期间高校师生外出请假管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本疫情期间高校师生外出请假管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完…

【LeetCode刷题笔记】数学

50. Pow(x, n) 解题思路: 1. 绝对值 + 快速幂 + 迭代 ,由于题目 n 可能是 系统最小值 ,因此使用 n 的 绝对值 。 如果 n 是 系统最小值 ,先让

【MySQL性能优化】- 存储引擎及索引与优化

索引与优化 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享学习心得,欢迎指正,…

算法——分治

思想:分而治之,将大问题转化为若干个相同或相似的子问题。快排的题目常见的方法是利用三指针法将数组分三块搭配随机选择基准元素的思想 颜色分类(分治_快排) 颜色分类 题目解析 原地对它们进行排序,使得相同颜色的元…

MES管理系统如何解决企业生产价值链的成本问题

在制造企业中,生产价值链的成本问题一直是企业关注的重点。然而,许多企业发现,尽管他们投入了大量的人力、物力和财力,仍然难以准确掌握生产过程中的成本情况。这主要是因为传统的成本核算方法存在着诸多不足,如数据不…

Proxifier安装与激活

proxifier官网链接 步骤 1:购买 Proxifier 许可证 访问 Proxifier 官方网站:https://www.proxifier.com/ 在网站上查找并选择 “Purchase” 或类似的选项。 选择适合你需求的许可证类型,填写相关信息并完成购买。 如果不想购买&#xff0c…

Web 自动化神器 Playwright:统一 API 操作多种浏览器 | 开源日报 No.113

JJTech0130/pypush Stars: 2.8k License: NOASSERTION pypush 是一个最近作者进行的 iMessage 逆向工程的 POC 演示。它目前可以在 Apple ID 上注册为新设备,设置加密密钥,并发送和接收 iMessages!pypush 完全独立于平台,不需要…

会旋转的树,你见过吗?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

第二证券:激发资本市场数智新动能 实现高质量发展

12月15日至16日,深交所与港交所、广期所联合举行主题为“科技引领数智赋能”的2023年大湾区生意所科技大会。 本次大会深化贯彻落实中心经济作业会议精神和中心金融作业会议精神,聚焦工作数字化转型和科技立异前沿趋势,深化粤港澳大湾区协同…

使用QGIS快速制作三维地形图

使用QGIS快速制作三维地形图 使用QGIS快速构建任意地区三维可视化地形效果图及其他。 使用插件 Qgis2threejs 三维可视化地形图 QuickMapServices 在线DOM影像地图加载及下载 OpenTopography DEM Downloader 地形图下载 QuickOSM 下载OSM数据。 步骤 制作区域矢…