价值 | 思考 | 共鸣



简评:不想看文字的话,文章里的图片还是挺清晰易懂的。

负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

一个没有负载均衡的 web 架构类似下面这样:

在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。

而通过在后端引入一个负载均衡器和至少一个额外的 web 服务器,可以缓解这个故障。通常情况下,所有的后端服务器会保证提供相同的内容,以便用户无论哪个服务器响应,都能收到一致的内容。

从图里可以看到,用户访问负载均衡器,再由负载均衡器将请求转发给后端服务器。在这种情况下,单点故障现在转移到负载均衡器上了。这里又可以通过引入第二个负载均衡器来缓解,但在讨论之前,我们先探讨下负载均衡器的工作方式。

负载均衡器可以处理什么样的请求?

负载均衡器的管理员能主要为下面四种主要类型的请求设置转发规则:

  • HTTP

  • HTTPS

  • TCP

  • UDP

负载均衡器如何选择要转发的后端服务器?

负载均衡器一般根据两个因素来决定要将请求转发到哪个服务器。首先,确保所选择的服务器能够对请求做出响应,然后根据预先配置的规则从健康服务器池(healthy pool)中进行选择。

因为,负载均衡器应当只选择能正常做出响应的后端服务器,因此就需要有一种判断后端服务器是否「健康」的方法。为了监视后台服务器的运行状况,运行状态检查服务会定期尝试使用转发规则定义的协议和端口去连接后端服务器。如果,服务器无法通过健康检查,就会从池中剔除,保证流量不会被转发到该服务器,直到其再次通过健康检查为止。

负载均衡算法

负载均衡算法决定了后端的哪些健康服务器会被选中。几个常用的算法:

  • Round Robin(轮询):为第一个请求选择列表中的第一个服务器,然后按顺序向下移动列表直到结尾,然后循环。

  • Least Connections(最小连接):优先选择连接数最少的服务器,在普遍会话较长的情况下推荐使用。

  • Source:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。

如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器。可以通过 Source 算法基于客户端的 IP 信息创建关联,或者使用粘性会话(sticky sessions)。

最后,想要解决负载均衡器的单点故障问题,可以将第二个负载均衡器连接到第一个上,从而形成一个集群。

当主负载均衡器发生了故障,就需要将用户请求转到第二个负载均衡器。因为 DNS 更改通常会较长的时间才能生效,因此需要能灵活解决 IP 地址重新映射的方法,比如浮动 IP(floating IP)。这样域名可以保持和相同的 IP 相关联,而 IP 本身则能在服务器之间移动。

一个使用浮动 IP 的负载均衡架构示意图:

以上,大致就是负载均衡的工作原理。更多关于负载均衡技术的信息,可以参阅下面内容:

HAProxy

  • An Introduction to HAProxy and Load Balancing Concepts

  • How To Set Up Highly Available HAProxy Servers with Keepalived and Floating IPs on Ubuntu 14.04

  • Load Balancing WordPress with HAProxy

Nginx

  • Understanding Nginx HTTP Proxying, Load Balancing, Buffering, and Caching

  • How To Set Up Nginx Load Balancing with SSL Termination

英文原文:What is Load Balancing?
推荐阅读:基础教学 | API 是如何工作的


▼点击阅读原文获取文中链接

基础教学 | 什么是负载均衡?相关推荐

  1. Tomcat基础《三》----负载均衡

    Tomcat基础<一>----WEB技术 Tomcat基础<二>----Tomcat基础介绍 1.1 负载均衡 动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一 ...

  2. 负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础

    负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负 ...

  3. 华为19级专家10年心血终成百页负载均衡高并发网关设计实战文档

    负载均衡(LoadBalance)的字面意思是将工作负载分担到多个工作单元上进行执行,它建立在现有网络结构之上,是构建分布式服务.大型网络应用的关键组件. 近十几年来,负载均衡技术层出不穷,令人眼花缭 ...

  4. 华为19级大佬10年心血终成百页负载均衡高并发网关设计实战文档

    说在前面的话 负载均衡(LoadBalance)的字面意思是将工作负载分担到多个工作单元上进行执行,它建立在现有网络结构之上,是构建分布式服务.大型网络应用的关键组件. 近十几年来,负载均衡技术层出不 ...

  5. nginx负载均衡原理

    负载均衡在服务端开发中算是一个比较重要的特性.因为Nginx除了作为常规的Web服务器外,还会被大规模的用于反向代理前端,因为Nginx的异步框架可以处理很大的并发请求,把这些并发请求hold住之后就 ...

  6. 跨园区容灾,升级不停服——高可用负载均衡集群实践

    对于云计算行业来说,云服务的可用性和可扩展性是的检测其服务质量的重要标准,也是最受用户关注的两大难题.各云计算厂商针对容灾.升级等需求的解决方案,最能够体现其底层架构的实力.腾讯云基于基础架构的优势, ...

  7. nginx下TCP负载均衡配置

    负载均衡基础与nginx下TCP负载均衡配置 安装nginx 在服务器快速集群环境搭建中,都迫切需要一个能拿来即用的负载均衡器,nginx在1.9版本之前,只支持http协议web服务器的负载均衡,从 ...

  8. 【RPC Dubbo】dubbo负载均衡策略

    文章目录 前言 1. 什么是负载均衡 1.1:负载均衡简介 1.2:简单解释 2. dubbo负载均衡策略 2.1 Random LoadBalance 2.2 RoundRobin LoadBala ...

  9. 五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法

    前言 今天这篇文章介绍了负载均衡的原理以及对应的四种负载均衡算法,当然还有对应的指令及实战,欢迎品尝.有不同意见的朋友可以评论区留言! 负载均衡 所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游 ...

  10. 阿里云的网站负载均衡解决方案

    2015年5月,国务院印发了<关于进一步做好新形势下就业创业工作的意见>,全国范围内刮起了"大众创业,万众创新"的高潮.于是中关村电子市场悄然改成了创业大街,美食街变成 ...

最新文章

  1. 【整理】Oracle创建/删除表空间
  2. RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayer-RTSP实现支持H265编码格式过程介绍
  3. 通过OpenFoam记录一些c++的trick(持续更新)
  4. (二) :JS 生成随机数字母和数字
  5. 热转印法手工自制单面PCB流程和技巧总结
  6. 聚类、K-Means、例子、细节
  7. 将excel转换为Xml
  8. android支持wifi11ad,不得不知道的WIFI标准:802.11ad、ah、af
  9. json格式转csv格式
  10. C盘中的Users\admin文件夹太大清理方法
  11. LaTeX:大于等于号,小于等于号,大于号,小于号
  12. oracle远程导入数据库
  13. Android 解析Excel (xls格式)
  14. 1112day10:考前复习50题:断言
  15. 我是如何看Vue源码的
  16. c#dataview遍历_C# DataView.Find方法代码示例
  17. python queue 查询是否在队列中_Python queue队列
  18. 塑壳断路器用考虑启动电流么_塑壳断路器和微型断路器的区别
  19. CAD随机孔隙3D插件 孔隙结构 多孔结构模型
  20. 金字塔原理学习笔记1

热门文章

  1. Android开发学习之摇一摇功能的简单实现
  2. 老调新弹,也玩Linq To Sql批操作
  3. 这些配色方案让数据可视化图表更加高大上
  4. 石家庄地铁线路查询系统(补)
  5. 【PTA-乙级】1019 - 数字黑洞(4种解法)(C/C++)
  6. Thinkpad E430c安装Ubuntu14.04第三方驱动的选择
  7. 方维带货直播最新搭建教程《9》-常见问题总结
  8. 前端性能优化方案(图片)
  9. 仿“当当网”首页-Flash图片轮换
  10. python3下操作SVN