想实现高可用?先搞定负载均衡原理

在互联网大行其道的今天,随着业务的迅猛增长,技术上我们常常要面对高并发,大流量 。

想实现高可用?先搞定负载均衡原理

文章插图
 
图片来自 Pexels
为了实现高可用,高性能我们采用了很多的技术手段,负载均衡就是其中之一 。作为外部流量与内部应用的“接引者”,它占据了重要的地位 。
我们是否了解整个负载均衡技术?它的分类?它的原理?它的特点?今天让我们一起来漫谈负载均衡吧 。
负载均衡的分类
谈到负载均衡,大家都会想到 Nginx,通常我们会用它做应用服务的负载均衡 。
一般它的并发量在 5W 左右,如果并发量再高就需要做 Nginx 的集群了 。但 Nginx 之上还有一层负载均衡器,是它把网络请求转发给 Nginx 的,同时还会肩负网络链路,防火墙等工作 。
它就是“硬件负载均衡器”,一般安装在外部网络与内网服务器之间 。比较流行的有 NetScaler,F5,Radware,Array 等产品 。
想实现高可用?先搞定负载均衡原理

文章插图
 
硬件负载均衡器在外网和内网之间
相对于“硬件负载均衡器”来说,对内网服务器进行负载均衡就属于“软件负载均衡器” 。例如:LVS,HAProxy,Nginx 。
硬件负载均衡工作在“接入层”,主要任务是多链路负载均衡,防火墙负载均衡,服务器负载均衡 。
软件负载均衡工作在“代理层”,主要任务是反向代理,缓存,数据验证等等 。
想实现高可用?先搞定负载均衡原理

文章插图
 
硬件负载均衡和软件负载均衡工作在不同的层
硬件负载均衡在接入层获得网络请求,然后转交给软件负载均衡,用同样的方式处理返回的请求 。
想实现高可用?先搞定负载均衡原理

文章插图
 
接入层,代理层,应服务器示意图
我们知道了负载均衡分为“硬件负载均衡”和“软件负载均衡”,那么来逐一看看他们是如何工作的吧 。
硬件负载均衡
既然前面提到了负载均衡器的分类,那么我们就来聊聊他们的特点 。硬件负载均衡技术只专注网络判断,不考虑业务系统与应用使用的情况 。
看上去它对处理网络请求是非常专业的,但有趣的是,如果应用服务出现了流量瓶颈,而“接入层”的硬件负载均衡没有发现异常,还是让流量继续进入到应用服务器,并没有阻止,就会造成应用服务器流量过大 。
所以,为了保证高可用,可以在“接入层”和“代理层”同时考虑限流的问题 。
作为硬件负载均衡器,常在大企业使用 。下面我们以 F5 公司的“F5 BIG-IP”产品为蓝本给大家介绍(下面简称 F5) 。
实际上它是一个集成的解决方案,对于研发的同学来说,主要理解其原理 。
硬件负载均衡器三大功能
上面谈到硬件负载均衡器的作用和特点,它具备哪三大功能?实现原理又是怎样的?
①多链路负载均衡
关键业务都需要安排和配置多条 ISP(网络服务供应商)接入链路来保证网络服务的可靠性 。
如果某个 ISP 停止服务或者服务异常了,那么可以利用另一个 ISP 替代服务,提高了网络的可用性 。
不同的 ISP 有不同自治域,因此需要考虑两种情况:
  • INBOUND
  • OUTBOUND
INBOUND,来自网络的请求信息 。F5 分别绑定两个 ISP 服务商的公网地址,解析来自两个 ISP 服务商的 DNS 解析请求 。
F5 可以根据服务器状况和响应情况对 DNS 进行发送,也可以通过多条链路分别建立 DNS 连接 。
OUTBOUND,返回给请求者的应答信息 。F5 可以将流量分配到不同的网络接口,并做源地址的 NAT(网络地址转换),即通过 IP 地址转换为源请求地址 。
也可以用接口地址自动映射,保证数据包返回时能够被源头正确接收 。
想实现高可用?先搞定负载均衡原理

文章插图
 
多路负载的方式增强了网络接入层的可靠性
②防火墙负载均衡
针对大量网络请求的情况,单一防火墙的能力就有限了,而且防火墙本身要求数据同进同出,为了解决多防火墙负载均衡的问题,F5 提出了防火墙负载均衡的“防火墙三明治"方案 。
防火墙会对用户会话的双向数据流进行监控,从而确定数据的合法性 。如果采取多台防火墙进行负载均衡,有可能会造成同一个用户会话的双向数据在多台防火墙上都进行处理 。


推荐阅读