弹性计算Clouder认证:高可用应用架构——课时5:什么是负载均衡?

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 弹性计算Clouder认证:高可用应用架构——课时5:什么是负载均衡?

思考:小云如何能够让服务器A、服务器B甚至更多服务器共同响应用户访问的请求?

一般来说小云需要安装配置专门的负载均衡设备,这个设备可以关联多台服务器,并可以接受用户请求,根据用户的请求,自动将用户流量分发至关联的服务器中进行处理。

 

什么是负载均衡?

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

 

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

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

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

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

 

 

对于小云所在的公司来说,需要使用负载均衡的场景通常有如下几种:

  1. 服务器台数多:需要共同对外提供Web服务的服务器多于一台时
  2. 担心单点故障:担心某些服务器故障后,用户依旧访问到这些服务器导致用户体验不佳
  3. 访问量大:用户访问流量太大,需要多台服务器一共承担流量时
  4. 增加扩展性:经常需要添加和移除后端服务器,担心变更时会对用户产生影响

小云的网站由多台云服务器构成,如果不使用负载均衡,每台服务器都需要有公网IP,对用户来说,存在选择上的困难,IP地址记忆和书写也存在困难,而且一旦某台服务器故障,使用此IP的用户直接就无法打开网站,用户体验很差。而如果小云在用户和众多服务器之间加入一个负载均衡,用户就只需要访问负载均衡,负载均衡对后端多个服务器进行健康检查,哪个服务器故障,就从活跃的服务器中剔除此服务器,然后把用户的请求始终引导到正常的服务器上。而且在访问量很大时,负载均衡在分发请求时,还会有一定的流量分发策略兼顾后端多个服务器上现有请求数的情况,确保多个后端均衡的承载流量

image.png


 

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

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

 

在企业中,一个高可用业务,往往会有“两地三中心”的部署方式,也就是说将业务部署到两个城市的三个机房中,规避某个机房失效,带来的业务停滞,但是这就意味着需要购置三台负载均衡设备,相比较使用单个机房来说,价格会翻三倍,具体而言,只使用物理负载均衡设备将面临以下问题:

  1. 单点故障:如果是一台负载均衡设备,一旦故障后,整体业务会陷入瘫痪
  2. 成本高昂:如果是多台设备,成本会特别的高昂,设备成本太高
  3. 技术复杂:负载均衡需要专人学习并配置,技术成本较高
  4. 容灾能力差:通常是在单一的机房中实现,容易受到网络环境干扰,例如电力中断等。

image.png

 

 

什么是阿里云负载均衡SLB?

阿里云负载均衡就是一种典型的软件负载均衡产品,不需要额外占用服务器也不需要用户付出太多技术性投入。

思考:既然小云使用阿里云负载均衡不需要额外投入服务器和技术成本,那小云使用阿里云上的负载均衡是什么体验呢?

  1. 阿里云的负载均衡产品采用软件定义负载均衡技术,不管是部署还是维护,都会更加的灵活;
  2. 阿里云提供了简单易用的Web页面,所有操作都可以通过控制台完成,简单易操作;
  3. SLB可以将网络访问流量智能地分发到多台后端服务器上,以提高应用程序的可用性和可伸缩性;
  4. SLB可以将流量分发到同地域的不同可用区中,提供跨可用区的流量分发,实现同地域下的跨机房容灾;
  5. 当主可用区的机房故障或不可用时,SLB仍然有能力在短时间内切换到另外一个备可用区的机房并恢复业务,规避单一可用区故障带来的业务停滞
  6. SLB支持云服务器健康检查,可以智能的识别和避开后端存在故障的服务器,确保用户体验良好。
  7. SLB提供多种负载均衡类型,包括传统型负载均衡CLB(提供四层和七层负载均衡)、网络型负载均衡NLB(四层)、应用型负载均衡ALB(七层);

提示:本例中使用传统型负载均衡CLB进行演示,如果在确定是四层或七层负载均衡场景中,强烈推荐选用网络型负载均衡NLB和应用型负载均衡ALB,您将获得更好的产品性能。

 

对于小云来说,使用阿里云传统型负载均衡CLB可能会获得以下哪些好处:

  • 高并发:阿里云CLB集群支持亿级并发连接,单实例最大支持100万并发,小云完全不用担心负载均衡服务是否能满足性能要求,实例最大支持100万并发,完全满足大型企业的实际业务情况。
  • 操作简单:小云还可以通过控制台配置SLB实例,包括添加、删除和修改后端服务器等操作,非常方便灵活。
  • 功能丰富:阿里云CLB支持不同的算法进行负载均衡,包括轮询、最少连接数、源IP地址哈希等,可以根据小云的实际需求进行配置。阿里云的CLB还能和弹性伸缩功能配合,当小云的业务量增加或减少时,可以根据实际的负载情况自动扩容或缩容后端服务器,以确保系统稳定性和预算的合理利用。
  • SLA保障:阿里云CLB采用全冗余设计,无单点故障,支持同城容灾,小云可以将业务网站部署在不同的可用区中,用CLB来做流量分发,还可以根据流量负载进行弹性扩容,在流量波动情况下不中断对外服务。
  • 技术成本低:负载均衡服务后端由专门的平台专家团队维护,用户的人工成本较低云平台的负载均衡价格较低,能力较强,性价比更高
  • 容灾能力强:云平台的负载均衡可以跨可用区实现,避开了单一机房电力、网络中断的影响

image.png

 

 

小云可以在阿里云CLB上创建多个监听器在外网监听多个端口,并在每个监听器后端绑定多个服务器,通过一定的流量分发策略将前端的用户访问调度到具体的服务器上,然后服务器承载监听器传递过来的流量,监听器除了可以配置特定的分发策略之外,还可以配置健康检查,如下图中灰色的云服务器代表该云服务器健康检查失败,流量不会转发到该云服务器上:

 

前面提到小云可以在配置监听器时,配置一些调度算法,通过调度算法来将前端用户的访问合理的分布到不同云服务器上,阿里云负载均衡CLB的监听器默认支持的调度算法为:

  1. 轮询(RR):当小云的网站由多台ECS云服务器构成,且所有的ECS云服务器的硬件规格全部相同时,就需要选择轮询调度方法,例如,小云由100台ECS云服务器,硬件规格全部为10G内存,10核心CPU,如果给一部分服务器设置过高或者过低的权重的话,由于所有的ECS云服务器配置都一样,调整权重后,在分发流量时,会由于权重的不同,给某些设置过权重的服务器过多或过少的访问流量,这会造成后端云服务器不能实现负载均衡,只有选择轮询调度方法,才能实现真正的负载均衡,当选择轮询调度的方法后,负载均衡会依次将前端的访问流量分发到不同的服务器上,不会对特定的服务器进行格外关注。

 

  1. 加权轮询(WRR):当小云的网站由多台ECS云服务器构成,且有一部分ECS云服务器的硬件规格和其他的ECS云服务器规格不同时,就需要选择加权轮询调度方法,例如,小云有100台ECS云服务器,硬件规格为10G内存,10核心CPU,但是还有10台ECS云服务器的硬件规格为20G内存,20核心CPU,此时就需要在分发流量时,更多的考虑将流量分发到这10台 ECS云服务器,因为如果是平均分发流量的话,前面这100台云服务器已经在超负荷运转的时候,这10台ECS云服务器还处于50%利用率,这种情况下,访问到前100台服务器的用户由于服务器满载的原因,体验很差,而访问到后10台云服务器的用户,由于服务器轻载的原因体验就很好,非常不均匀。为了解决这个问题,小云就需要在配置监听器时,给这10台轻载的云服务器设置更多的权重,这样负载均衡CLB在分发流量时,就会按照权重,分发更多的流量到这些服务器上,实现真正意义上的负载均衡。

 

  1. 一致性哈希(CH):
  1. 哈希(hash)是一种将任意长度的数据转化为固定长度的数字的方法,通常以十六进制表示。这个固定长度的数字称为哈希值或者散列值。哈希值通常是唯一的,并且不可逆转。例如:小云从互联网上下载了一个很大的文件,担心由于网络传输错误导致下载到的问题和服务器上的文件不一致,就可以计算一下此文件的哈希值是多少,然后再和互联网上公布的哈希值对比,如果一致,即代表此文件在传输过程中没有发生变化。
  2. 阿里云负载均衡一致性哈希是基于源IP地址或基于四元组(源IP、目的IP、源端口和目的端口)的一致性哈希,相同的源地址会调度到相同的后端服务器,例如:某互联网客户的源公网IPv4地址为xxx.xxx.xxx.xxx,当此客户来访问小云的网站时,负载均衡CLB会对此客户的源公网IPv4地址进行哈希,并匹配到后端某一台ECS云服务器,以后此公网IPv4再来访问小云的网站时,由于源公网IPv4地址是一样的,所以哈希值也是一样的,所以还会匹配到后端同样的后端ECS云服务器,只要客户的公网IP没有发生变化,就始终会被匹配到相同的ECS 云服务器。
  3. 有时候我们也把这种访问者与后端某一服务器产生绑定的现象称为会话保持,小云的网站由多台ECS 云服务器构成,用户通过负载均衡在服务器A上登录后,刷新一下页面,由于后端是多台服务器,所以可能会再次访问到服务器B,而服务器B不记得用户登录过,所以会让用户重新登录,这个体验就很差。小云可以在负载均衡上启用会话保持功能,小云可以设置一段时间,例如30分钟,在30分钟内,始终由这台服务器为用户提供服务,在30分钟后,此用户再来访问时,才会重新选择服务器,保证了用户体验的一致性。而一致性哈希的调度算法,却无需小云设置时间,只要用户的公网IP哈希之后的结果一致,就始终由固定的某台服务器为其提供服务。此服务器故障时,原有的用户只需要匹配到下一个服务器即可,减少了整体架构的抖动,例如小云使用加权轮询调度算法,权重为50的机器故障后,会重新分配所有流量,会有较大的冲击和抖动,而一致性哈希就不会。

image.png

 

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

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

 

 

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



练习实验:高可用应用架构

https://developer.aliyun.com/adc/scenario/exp/fcdecc97027443efae06789944a11875

相关文章
|
25天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
3月前
|
负载均衡 应用服务中间件 nginx
Nginx四层负载均衡在秒杀系统中的应用
Nginx四层负载均衡在秒杀系统中的应用
26 0
|
3月前
|
负载均衡 应用服务中间件 nginx
Nginx负载均衡选择在秒杀系统中的应用
Nginx负载均衡选择在秒杀系统中的应用
47 0
|
3月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
207 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
5月前
|
存储 负载均衡 NoSQL
高速读写、负载均衡:基础架构KV存储项目最佳实践
高速读写、负载均衡:基础架构KV存储项目最佳实践
|
6月前
|
负载均衡 Cloud Native 网络协议
负载均衡原理及应用
负载均衡原理及应用
57 0
|
7月前
|
域名解析 弹性计算 负载均衡
|
7月前
|
弹性计算 运维 监控
课时1:微服务架构与混沌工程介绍
课时1:微服务架构与混沌工程介绍
232 0
|
7月前
|
弹性计算 负载均衡 网络协议
|
7月前
|
弹性计算 负载均衡 前端开发

热门文章

最新文章