不懂“接入层”原理好意思说懂架构吗?
应用的接入层通常需要承载大量的网络请求,有些互联网企业几十万PV请求,在软件负载均衡无法支撑的情况下会考虑采用硬件负载均衡的技术帮助控制流量,然后再转发给软件负载均衡进行进一步的分发。
要点:
- 什么是硬件负载均衡?
- 硬件负载均衡的优缺点是什么?
- 使用的注意事项以及应用的场景?
- 硬件负载均衡器实现哪些功能?
什么是硬件负载均衡?
网络结构图
硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完成网络请求转发的任务,独立于操作系统,整体性能高,负载均衡策略多样化,流量管理智能化。
硬件负载均衡的优缺点是什么?
优点:直接连接交换机,处理网络请求能力强,与系统无关,负载性可以强。可以应用于大量设施、适应大访问量、使用简单。
缺点:成本高,配置冗余.即使网络请求分发到服务器集群,负载均衡设施却是单点配置;无法有效掌握服务器及应使用状态.
使用的注意事项以及应用的场景?
注意事项,需要注意的是硬件负载均衡技术只专注网络判断,不考虑业务系统与应用使用的情况。有时候系统处理能力已经达到了瓶颈,但是此时网络并没有异常,由于硬件负载均衡并没有察觉到应用服务器的异常,还是让流量继续进入到应用服务器。
使用场景,一般应用与PV 几十万甚至百万的互联网应用,一般的软件负载均衡器例如Nignx 处理并发一般在1-2w,不足以支撑如此大的网络请求,所以在其之前通常会防止类似F5这样的硬件负载均衡器帮助控制网络请求。如果一般的互联网企业网络请求数在1w左右的可以考虑使用Nignx(软件负载均衡器)就足以满足当前的业务了。
硬件负载均衡器实现哪些功能?
目前市面上有NetScaler, F5, Radware, Array 等产品,基本实现原理大致相同,我们这里把使用的比较多的 F5做为例子给大家做简单解释,算是窥豹一斑。
多链路负载均衡
关键业务都需要安排和配置多条ISP(网络服务供应商)接入链路以保证网络服务的质量。如果某个ISP停止服务或者服务异常了,那么可以利用另一个ISP替代服务,提高了网络的可用性。不同的ISP有不同自治域,因此需要考虑两种情况:INBOUND 和 OUTBOUND。
- INBOUND,来自网络的请求信息。F5 分别绑定两个ISP 服务商的公网地址,解析来自两个ISP服务商的DNS解析请求。F5可以根据服务器状况和响应情况对DNS进行发送,也可以通过多条链路分别建立DNS连接。
- OUTBOUND,返回给请求者的应答信息。F5可以将流量分配到不同的网络接口,并做源地址的NAT(网络地址转换),即通过IP地址转换为源请求地址。也可以用接口地址自动映射,保证数据包返回时能够被源头正确接收。
防火墙负载均衡
针对大量网络请求的情况单一防火墙的能力就有限了,而且防火墙本身要求数据同进同出,为了解决多防火墙负载均衡的问题,F5提出了防火墙负载均衡的“防火墙三明治"方案
防火墙会对用户会话的双向数据流进行监控,从而确定数据的合法性。如果采取多台防火墙进行负载均衡,有可能会造成同一个用户会话的双向数据在多台防火墙上都进行处理,而单个防火墙上看不到完成用户会话的信息,就会认为数据非法因此抛弃数据。所以在每个防火墙的两端要架设四层交换机,可以在作流量分发的同时,维持用户会话的完整性,使同一用户的会话由一个防火墙来处理。而F5 会协调上述方案的配置和实现,把“交换机”,“防火墙”,“交换机”夹在了一起好像三明治一样。
防火墙“三明治”
服务器负载均衡
- 对于应用服务器服务器可以在F5上配置并且实现负载均衡,F5可以检查服务器的健康状态如果发现故障,将其从负载均衡组中移除。
- F5 对于外网而言有一个真实的IP,对于内网的每个服务器都生成一个虚拟IP,进行负载均衡和管理工作。因此,它能够为大量的基于TCP/IP的网络应用提供服务器负载均衡服务。
- 根据服务类型不同定义不同的服务器群组。
- 根据不同服务端口将流量导向对应的服务器。甚至可以对VIP用户的请求进行特殊的处理,把这类请求导入到高性能的服务器使VIP客户得到最好的服务响应。
- 根据用户访问内容的不同将流量导向指定服务器。
可用性
- 自身高可用性,在双机冗余模式下工作时实现毫秒级切换。
- 设备冗余电源模块可选。
- 每台设备通过心跳线监控其他设备的电频,发现故障的时候可以完成自动切换。
- 链路冗余:对链路故障进行实时检测,一旦发现故障进行自动流量切换,过程透明。
- 服务器冗余:对服务器进行心跳检测,一旦发现故障立即从服务器列表中移除,如果恢复工作又重新加入到服务器列表中。
安全性
- 站点安全防护
- 拆除空闲连接防止拒绝服务攻击
- 能够执行源路由跟踪防止IP欺骗
- 拒绝没有ACK缓冲确认的SYN防止SYN攻击
- 拒绝teartop和land攻击;保护自己和服务器免受ICMP攻击