负载均衡

根据网络的七层模型,可以从二层、三层、四层、七层进行负载。

二层负载:通过MAC地址进行负载,一般使用虚拟MAC地址,服务器提供一个虚拟MAC地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。

三层负载:通过IP地址进行负载,一般使用虚拟IP地址,服务器提供一个虚拟IP地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。

四层负载:通过请求报文中的目标地址和端口进行负载,服务器提供一个请求地址,接收到请求后,将请求转发给后端其他应用服务器进行负载。

七层负载:可以通过应用层HTTP请求中的报文信息来决定请求负载到哪一台服务器上,例如/user/*请求分发到A服务器,/order/*请求分发到B服务器。

DNS负载

原理是当我们通过域名访问时,会通过DNS服务器进行域名解析,进而拿到服务器的IP地址,当解析出多个IP地址时,DNS会随机分配一个IP地址,实现负载均衡的效果,除此之外,还能通过请求来源的地域,分配就近的IP,提高访问速度。

优点:操作简单,实现成本低,可根据地域分配IP实现加速。

缺点:负载规则不够灵活,由于DNS本身多级缓存的机制,当我们修改DNS配置的时候,缓存IP更新可能有延迟。

硬件负载

常见的有F5硬件负载均衡器,类似于一个交换机,可达到每秒百万级的流量,有专业级的防护,例如F5公司的Big-IP设备,支持多种负载规则,这种设备一般用于安全性要求较高的大型银行、政府等性质的业务场景,成本较高。

优点:性能好,能承载大量流量访问,安全性高。

缺点:价格昂贵,对小企业来说不划算。

软件负载

常见的有Nginx,部署于一台服务器上的Nginx负责接收请求,将接收到的请求按照负载均衡规则负载到其他应用服务器上,性能取决于所部署的服务器。

优点:负载规则灵活,免费,适用于中小企业。

缺点:安全性与性能没有硬件负载器好。

负载规则

常见的负载均衡算法有:

1.最快响应时间:

动态算法,根据集群中服务器的响应时间来衡量机器的负载情况,分发较多的请求给负载均衡器获取到的响应更快的服务器,将较少的请求分发给响应延迟更高的服务器。

2.最小连接数:

动态算法,主要根据集群节点当前的连接数来决定分发给哪个节点,当请求到达某个节点还未响应时,此时HTTP连接处于未断开的状态,负载均衡器将新进来的请求,分发较多的请求给当前保持连接数较少的机器,分发较少的请求给当前保持连接数较多的机器,可以根据服务器实际情况来分配请求,可以避免大量耗时请求分发到A服务器,而耗时较少的请求分发到B服务器,造成虽然两个服务器接到的请求数一样,但A服务器压力过大而B服务器压力较小的问题。

3.一致性哈希:

静态算法,根据请求的IP地址或其他信息计算一个哈希值,再用这个哈希值对集群的节点数进行取模,决定该请求分发到哪一台机器上,这种算法可以保证同一台机器每次请求都分发到一台服务器上,对于需要保持session会话的应用来说是一种负载均衡下的解决方案,缺点是一个节点故障时,其他请求哈希后会将请求分发到另外的节点,无法根据集群服务器的实际压力情况来进行分发。

4.轮询:

静态算法,按照集群节点数量轮流依次分发。

5.随机:

静态算法,随机分发到集群节点中。

6.加权轮询或加权随机:

静态算法,对某些节点进行加权,加权轮询时,权重高的节点分发更多的请求,加权随机时,权重高的节点有更高的概率被分发到请求,一般对集群中性能更好的节点加权,使其接收更多的请求。

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐