大家好呀!我是reload。今天继续带大家学习华为HCCDA云技术认证,涵盖华为云最为核心的计算、存储、网络、数据库、安全、部署等服务。今天学习分布式云架构与资源弹性伸缩相关内容。

一、弹性实现原理

1、问题引入

假设在双十一或其他大促期间的流量波动如下图,需要准备100台服务器应对双十一流量峰值。

一种情况是,如果按理想的规划100台,那么双十一前和双十一后都会多出很多服务器资源而造成浪费(如图造成日常70%以上资源浪费)。

另一种情况,如果资源规划失误没有达到预期的100台,那就不只是简单的资源浪费了,意味着真正到双十一促销活动时没有足够多的资源来支撑业务,而导致网站卡顿、响应慢等问题,影响用户体验。

那么,应对大的流量时该如何解决上述问题呢?

2、Scale Up垂直扩展

该模型下的工作形式不变,只是单节点的硬件配置发生变化。‘垂直’简单理解即纵向提升服务器的配置

优点是简单,不需要协同;但缺点也很明显,很容易碰到天花板

3、Scale Out水平扩展

该模型下服务器节点性能不变,而只是调整节点数量。‘水平’简单理解即横向增加服务器的数量

优点:可使用简单设备,实现几乎无限扩张,提高可用性。
缺点:需要有协调技术,服务器只能无状态

4、常见分布式模型

4.1 概述

常见分布式模型有同步通讯、请求分发、任务轮询,如下图。

请求分发,即负载均衡模型。

任务轮询,即消息队列模型。简单理解,当有任务到来时,把任务‘扔’进存储区,不断来任务就不断‘扔’;而不同的工作节点就负责去不断访问该存储区的任务。如果有任务,处理完后继续问,有继续做,如此轮询反复。

4.2 价值

1)分布式价值

① 调度庞大资源,获得所需的性能
② 分散请求压力,确保稳定的性能
③ 在发生设备异常时有更好生存能力

2)弹性价值

假设刚开始有1,2,3三个节点保持正常工作,突然节点2坏掉了,不能处理上面下发的请求;但该请求由于健康检查的原因,负载均衡器会把它送到其他节点上去,意味着其他节点(1,3)的工作量将会增加;而此时弹性系统会根据新的情况来决定是否增加新的服务器来平衡工作压力,于是增加了节点4。

此时,虽然节点2还是坏的状态,但整个系统已经不存在问题了,因为能够健康工作的节点还是有三个,能正常处理客户的需求,故客户看来该系统能力保持不变。

=> 上述来看,弹性有哪些价值呢?提高可靠性

① 根据业务实际需求分配资源、节省成本。
② 利用自动调整的处理集群,包容组件异常。

二、弹性实现方式

1、ELB弹性负载均衡器

1.1 概述

弹性负载均衡(Elastic Load Balance,ELB)是将访问流量根据分配策略分发到后端多台服务器的流量分发控制服务。弹性负载均衡可以通过流量分发扩展应用系统对外的服务能力,同时通过消除单点故障提升应用系统的可用性。

1.2 主要组件

一个弹性负载均衡器可以安装多个监听器(1:n),同理,一个监听器可以配置若干个后端服务器组。

监听器在工作时主要是监听不同端口,监听器后面可以转发后端服务器组,也可转发到其他监听器做再一次分析,也能送一个URL还给客户端,让客户端去访问新的地址。

2、选择合适的分配策略

加权轮询算法:把请求均匀的分给每个后端服务器,即根据权重轮流给各个服务器分配流量。如图两个权重都为50,则各分到一半的流量。

加权最少连接:该方法会把新请求发给当前连接最少的服务器。

源IP算法:根据客户端的IP地址来分配流量。

连接ID算法:该策略会给每个新请求生成一个唯一的连接ID,并根据此ID分配流量。

那么,该如何选择呢?(以下列举两点,具体还需根据实际业务再做选择)

=> 如果想保证用户连接稳定,不想频繁切换,就选连接ID算法
=> 如果想根据服务器当前的负载智能分配流量,就选加权最少连接算法

3、ELB配置过程

ELB配置的过程如下

4、CES云监控服务

云监控(Cloud Eye)为用户提供一个针对弹性云服务器、带宽等资源的立体化监控平台。方便用户全面了解资源使用情况、业务运行状况,保证业务顺畅运行。

5、CES架构

CES实时采集云资源或自定义监控指标,根据采集到的数据灵活配置告警规则。触发告警后系统通过邮件、短信等多种方式通知用户,也可以根据告警立即对业务系统做出反应,保证业务顺畅运行。

6、AS弹性伸缩

弹性伸缩(Auto Scaling,AS)是根据用户的业务需求,通过设置伸缩规则来自动增加/缩减业务资源

当业务需求增长时,AS自动增加ECS实例或带宽资源,以保证业务能力;当业务需求下降时,AS自动缩减ECS实例或带宽资源,以节约成本。

AS支持自动调整弹性云服务器和带宽资源。

7、搭建弹性系统

结合上述三个服务搭建弹性系统,如下

三、典型网站弹性架构

根据ELB弹性负载均衡CES云监控以及AS弹性伸缩服务搭建得到的一个典型网站架构如下

=> 该架构适用的场景有哪些呢?