什么是负载均衡?

负载均衡(Load balancing)是指在计算机网络领域中,将客户端请求分配到多台服务器上以实现带宽资源共享优化资源利用率提高系统性能的技术。负载均衡可以帮助小云有效解决单个服务器容量不足或性能瓶颈的问题,小云通过平衡流量负载,使得多台服务器能够共同完成请求处理,并且实现高可用性和高可靠性的服务。

 

负载均衡通常采用硬件设备或是软件来实现,硬件负载均衡器通过专用硬件设备分发流量,而软件负载均衡器则通过对流量进行转发和控制来实现负载均衡。不管小云使用硬件负载还是软件负载均衡都可以根据不同的调度算法来选择服务器,例如轮询、最少连接数、加权轮询等方式来平衡负载。

  • 企业中的负载均衡通常工作在OSI七层模型的四层(传输层)和七层(应用层)

提示:OSI七层网络模型从第一层到第七层分别为物理层,数据链路,网络层,传输层,会话层,表示层和应用层,是用于计算机或通信系统间互联的标准体系。

  • 四层负载均衡通常用于TCP/UDP协议,例如小云有一个业务集群工作在TCP的2000端口号上,需要通过负载均衡将其发布出去,此时小云的需求就是基于端口号的负载均衡,小云只需要在负载均衡上开通TCP的2000即可。
  • 七层负载均衡通常用于HTTP/HTTPS的Web服务,如果小云有一个网站需要被外部所访问到,网站是一种典型的七层服务,此时小云就需要在负载均衡上开通HTTP协议的80端口。

负载均衡(Load balancing)SLB_调度算法

思考:既然硬件和软件都能实现负载均衡,那使用硬件或软件负载均衡的区别是什么?

如果通过专用硬件实现负载均衡,那么整体成本会较高,而且设备容易出现单点故障,一旦设备故障,所有通过此设备分发流量的业务都会瘫痪,用户就无法访问到这些业务,而且因为成本高昂,小型企业往往很难接受这些价格,所以中小企业会选择软件负载均衡,但是使用软件负载均衡也有一些缺点,软件负载均衡需要额外占用服务器,安装配置管理、监控相对复杂,需要比较专业的运维工程师,技术投入较大

高可用业务,往往会有“两地三中心”的部署方式,也就是说将业务部署到两个城市的三个机房中,规避某个机房失效,带来的业务停滞

负载均衡(Load balancing)SLB_SLB_02

负载均衡(Load balancing)SLB_SLB_03


负载均衡器SBL:

  • 当多个并发请求同时发起访问时,负载均衡根据一定的算法(轮询、加权轮询、一致性哈希),将流量合理的分配到后端多个主机上,进行流量分摊,从而解决了特定的一台主机承接所有流量导致用户体验不佳的问题,
  • 在负载均衡上启用了健康检查功能之后,可以在后台服务器出现故障无法提供服务时,确保不会再有流量进入此服务器,保障了用户访问的连续性,提升了用户体验,
  • 开启了会话保持之后,可以在一定的时间内,始终由一台机器为某用户完全后续请求,通过把特定的用户在一定时间内留在同一个机器上的方法,确保了用户体验的一致性

负载均衡(Load balancing)SLB_最少连接数_04

思考:应该在什么情况下选择哪一种流量调度方法呢?

  • 轮询调度:当小云所有的ECS云服务器硬件规格和带宽全部相同时,小云应采用轮询调度算法,避免流量分发不均匀造成服务器压力不均衡的情况发生。
  • 加权轮询调度:当小云的ECS云服务器以及带宽并不完全相同时,小云应采用加权轮询调度算法,给不同配置的ECS云服务器不同的权重值,配置高的机器权重值高,配置低的机器权重指低,以实现整体压力的均衡。
  • 一致性哈希调度:当小云希望将请求均匀地分配到不同的服务器节点上,避免某一台服务器过于忙碌导致用户体验下降、希望通过将用户的公网IP哈希后对服务器匹配时或服务器故障时减少整体架构抖动时,小云应采用一致性哈希调度算法

负载均衡(Load balancing)SLB_调度算法_05

CBL测试curl(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,本例中我们可以利用这个命令来测试网站是否能够访问,且多次访问,能够切换为不同的后端服务器。

负载均衡(Load balancing)SLB_最少连接数_06