前言

云服务器的特性主要就是体现在横向、纵向的弹性扩容上,纵向的话其实很好理解就是我们单台 ECS 配置不够用了马上升级一下配置,不过这种场景比较适合于一个网站稳健的发展状态,而且波动不大。或者说服务器有较长时间的资源占用而非短时间的,比如说台风网肯定是 5~10 月这段时间访问量较高,那么我们就可以在春末的时候升一段配置,夏天再升级一段配置,初秋稍微降一点,秋末降至平稳状态。

但是如果我们是一个电商网站突然运营想搞一个秒杀活动,一个游戏公司要组织一场在线PK大赛。 这种情况下呢,都是瞬时遭遇的流量高峰和应用高占用,过了这段时间突然就回到了平稳的状态。如果我们一直以能处理瞬时高峰的配置长时间运行势必会造成大量的资源浪费,这时候就需要一个按量的横向扩容了。

介绍

横向扩容也就是增加服务器数量而非升级配置,但是我们需要将数个服务器整合成一个服务器集群,通过均衡负载 SLB 让服务器集群看起来就像还是“一台”服务器在进行操作,当然了均衡负载也不一定需要使用 SLB,也可以自建或者采购其他的均衡负载产品。然后每一台服务器都应该做到无状态服务,不可以保存应用的状态信息(如 session)和相关数据(如数据库、日志等)。如果应用中有保存状态信息需求,可以考虑把状态信息保存到伸缩组之外的独立的状态服务器、数据库(如 云数据库)和集中日志存储(如 日志服务)中去。

要求 & 收获

需要使用到的产品:

  1. 均衡负载(SLB)服务
  2. 弹性伸缩(ESS)服务

通过本文你将讲学到:

  1. 学习使用均衡负载服务
  2. 学习使用弹性伸缩服务
  3. 配置同城双中心服务灾备
  4. 应对瞬时流量高峰

教程

设置 SLB

一、 开通 SLB 服务https://common-buy.aliyun.com/?&commodityCode=slb#/buy,一般来说前期使用,只需要选择 性能共享实例按使用流量计费 这样的基础规格就行。

二、添加监听 一般来说如果我们是 HTTP 的话走 TCP 监听更方便可以直接反馈到访客信息。 如果需要实现 HTTPS 的话,后端依旧只应该走 HTTP 80 而不能也是 HTTPS,再开通 会话保持 保持用户的 session。 调度算法 用 加权最小连接数(WLC)我觉得更科学一点,当然了具体因场景而异。

三、配置健康检查 选择健康检查方式,一般来说 HTTP 检查更直观点

四、添加后端服务器,然后我们添加我们后端的服务器集群即可,后端服务器保持配置和环境一致并且无状态,例如只安装 Nginx、PHP 7.2,数据库用 RDS,文件储存用 OSS。

权重方面的话,配置越高性能越好的 ECS 权重分配越高,如果配置相同权重设置为一致。

同城双中心服务灾备

阿里云同地域(Region)下不同可用区(Zone)的网络、电力、设备等都是物理隔离的,但是通过内网连接。由于单一 ECS 默认是在一个可用区下的,如果这台 ECS 出现了问题那么整个网络服务都将不可用。如果我们的服务在可用区A和可用区B都有部署那么如果 A 出现了问题,B 依旧可以提供服务。

在阿里云实现同城双中心,就非常方便只需要通过 SLB 就行,我们购买在同一地域不同可用区的 ECS 在 SLB 添加后端服务器就可以了,同样 RDS 也要选择主库和备库分布在不同可用区。

设置 ESS

SLB 的横向扩展其实还是需要手动进行操作,而且也只适合计划中的配置升级,例如运营人员策划的秒杀活动是可以预见的有计划的,但是像之前鹿晗的恋情曝光引起的微博宕机事件,是毫无预见性的,这时候就需要自动检测CPU使用率然后自动添加新服务器并在 SLB 中添加后端服务器和设置 RDS 白名单。

弹性伸缩就是这样一款帮助自动完成高峰期服务器添加和平稳期服务器释放的服务。

一、创建伸缩组 ,其实里面的介绍都还挺清晰的,为了防止收到恶意攻击而盲目的服务器数量增长,我们可以设置服务器数量的上限,我们在专有网络是可以设置多个可用区的路由器的,同城双中心不是问题。 然后我们再添加对应的 SLB 和 RDS,以后增加的云服务器都会自动添加到后端服务器监听和 RDS 的白名单。

二、创建伸缩配置 ,也就是自动添加的云服务器的配置,这个过程和购买 ECS 的流程一致。 注意镜像要选择自定义的无状态的服务镜像。

三、添加已有实例 ,把已经创建好的服务器加入进去,一般来说平稳期的云服务器走包年包月的购买,瞬时的添加走按量的购买。

四、手动配置策略 , 如果觉得自动配置策略有一定不合理的地方,我们还可以手动配置相关策略,例如增加、减少和调整数量。