基础知识科普:7层和4层的区别,负载均衡的意义。
7层和4层是指不同的网络模型,网络传输协议的划分方式不同,具体的划分和内容如下图。
负载均衡有两个方面的意义:
第一:大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;
第二:单个重负载的运单分担到多台节点设备上并行处理,每个节点设备处理结束后汇总返回,提高系统的处理能力。
鉴于这两点,我们的产品在用户使用和体验上有着巨大的良性作用。
四层负载均衡
四层负载均衡的原理是基于IP+端口,通过虚拟的IP+端口的请求,然后再分配到真实的服务器。过程中会对VIP判断决定对哪些流量进行NAT处理,并转发至后台服务器,同时记录下这个TCP/UDP的流量是由那台服务器处理的,后续这个连接的所有流量都转发到同一台服务器处理。也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
七层负载均衡
七层负载均衡的原理则是基于URL等应用层的负载,通过虚拟的URL或主机,然后再分配到真实的服务器。过程中不仅有四层的功效,还能去考虑到应用层的特征,分析应用层的信息,如七层的URL,浏览器特征,语言来决定流量的转发和处理。这也称为“内容交换”,主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
阿里云的SLB
了解原理后,再来看看现今公有云的负载均衡的产品,Azure ALB,AWS的ELB(下分为ALB和NLB),阿里云的SLB等。
这里重点介绍阿里云的SLB。
官方的介绍是SLB提供对多台云服务器进行流量分发的负载均衡服务,通过流量分发扩展应用系统对外的服务能力, 通过消除单点故障提升应用系统的可用性。
这是如何做到的呢?阿里云的负载均衡是通过设置虚拟的服务地址段,将添加的同一地域的ECS实例虚拟成一个高性能,高可用的后端服务池,并根据自定义的转发规则,将来自客户端的请求分发给后端服务器中的ECS实例。除此之外额外的默认提供检查服务器池中的ECS实例健康状态,自动隔离异常的ECS,消除ECS实例单点故障来提高整体的服务能力。由此得出LB的应用场景相对稳定,应用高访问量的业务,适合扩展应用程序,适合消除单点故障,适合同城容灾和跨地域容灾。
文章前段内容提到负载均衡分为四层和七层,在当前阿里云中四层是采用开源软件linux virtual server 和 keepalived的方式实现负载均衡。而七层则是采用Tengine,其在nginx的基础上添加了很多高级功能和特性,尤其是针对大访问量的网站效果极佳。
使用配置方面,SLB控制台可以创建load balance来选择至少一个监听和两台ECS实例等多个目标对象来达到效果。除此功能外,阿里云提供可以在SLB控制台选择“访问控制”,创建访问控制的策略组来设置针对IP地址/地址段的黑白名单。同时也提供日志管理,普通的操作日志会根据事件类型(写类型,读类型)进行划分,而访问日志则需要在此基础上开通SLS日志服务,然后日志阅读和本地存储是有一定的时间和空间,如果需要额外的空间则需要开通OSS存储服务来独立存储这方面的日志。
本文暂时没有评论,来添加一个吧(●'◡'●)