简单高效的云服务器单元化扩容方案

自从ECS这类云服务器出现以来,越来越多的公司把自己的网站、应用和IT系统放到了云上。究其原因,IDC等基础设施的巨大成本节省和部署门槛降低是很重要的一个原因。除此以外,云服务按需获取的特性也带来了更多的运维创新的可能性。

比如应用的扩容。传统IDC托管环境下,我们总是要为未来可能的扩容需求而预留足够的服务器资源,既不能有太多资源浪费,还需要考虑未来扩容的需要,容量规划就成了一个很重要又困难的工作。而ECS这类云服务器,我们基本认为是可以随时按需获取的,既方便快捷,又节约人力、物理成本。

虽然云服务器提供了按需获取资源的能力,但是如何把这种能力应用到我们自己的业务上并不是那么直观和简单的事情。还是以应用扩容这个需求来说,一种可能的做法是,当需要扩容时,运维人员手动的通过WEB管理界面去下单购买新的云服务器,然后对系统进行配置,安装软件,最后上线。另一种做法可以是通过自动化运维程序,自动创建服务器,自动配置,自动安装软件,自动上线。两种做法在人力成本和可靠性上有巨大的差别。第一种方式需要运维人员大量的重复性劳动,而且容易出错,第二种方式需要运维人员有很强的代码能力,把云服务和自己的应用进行集成。总结下来,就扩容这个需求,如何才能既简单又高效的完成呢,我们先梳理一下要求,大概如下:

  1. 服务器按需获取,不使用不付费
  2. 全部自动化,运维人员只需要简单的操作即可达到扩容目的,包括服务器获取、系统配置
  3. 不需要复杂的集成开发工作,所使用的工具有专业团队支持,开箱即用
  4. 响应快速,整个扩容过程,能够在分钟级别完成
  5. 每次扩容的容量可以任意定义,即支持批量扩容
  6. 支持逆向操作,即当业务流量发生减少,可以取消之前的扩容

这么看起来,扩容这件事并不是那么简单。即使开发能力很强的运维团队,如果想做到以上全部,依然需要做大量的开发工作去处理扩容逻辑和可靠性。同时,还要去处理云产品的OpenAPI调用过程的各种细节,像重试、幂等调用、边界条件处理等等。

阿里云的资源编排服务(ROS)是一款简化自动化运维的服务,支持用户通过模板描述基础设施。所以,ROS已经提供了资源的创建和配置功能,而且帮我们屏蔽了底层资源操作的复杂性,我们只需要编写模板文件即可。在应用扩容这个场景下,ROS依然可以帮我们满足上面所列的七点要求。

下面我们就来介绍一下,如何通过ROS来做应用的扩容。关于ROS的介绍和使用入门请参考:

  • 阿里云资源编排服务产品介绍
  • 使用ROS构建自己的弹性应用
  • 阿里云资源编排服务Python SDK使用入门

首先,假设我们运维的是一个B2C的电子商务网站,日常情况下,平均日访问量200万PV。考虑到电商网站的特性,有大量耗时较长的事务需要处理,日常需要3台云服务器来支撑整个网站的运行。每年双十一前后,网站会配合各大电商平台进行促销活动,促销期间,日均访问量最高会达到日常的5到10倍。

为了应对临时性的扩容需求,网站从架构和部署方面已经做了针对性设计。整个网站的应用可以部署到一台独立的云服务器上,并且做了无状态设计,支持水平扩展。前端通过SLB做流量负载均衡。所有的数据存储在一个高规格的RDS实例中。整个架构如下:

为了应对促销季5到10倍的流量增长,我们的扩容思路如下:

  • 将整个网站应用制作成一个服务器镜像,方便通过镜像进行应用部署
  • 通过ROS的编排模板定义扩容服务器的配置,包括数量、使用的镜像、规格、SLB/RDS的依赖关系等
  • 把5台机器定义为一个扩容单元,扩容单元通过ROS创建,随着流量增加,每次扩容增加一个扩容单元
  • 当流量回落后,以扩容单元为单位缩小容量,直至日常状态

扩容过程如下图所示:

通过ROS完成扩容只需要把对应的扩容单元的模板提交到ROS服务即可。详细的模板如下:

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Description": "根据指定的ECS实例ID,克隆出指定数量的相同配置的机器,并挂载到指定SLB。使用本模板创建的资源栈为一个扩容单元。",
    "Parameters": {
        "SourceInstanceId": {
            "Description": "指定来源ECS实例ID,所克隆机器会完全复制次实例。",
            "Type": "String"
        },
        "ImageId": {
            "Description": "指定创建机器使用的ImageId。",
            "Type": "String"
        },
        "SLBId": {
            "Description": "机器创建成功后被自动挂载到指定的SLB。",
            "Type": "String"
        },
        "InstanceName": {
            "Description": "[2, 128] 中英文字符, '_' or '.', '-' ",
            "Type": "String",
            "MaxLength": 128,
            "MinLength": 2,
            "ConstraintDescription": "8-30个字符,可以包含大、小写字母和特殊字符",
            "Default": "ecsInstance"
        },
        "MaxAmount": {
            "Description": "创建ECS实例数量的上限,并且要大于MinAmount。",
            "MaxValue": 100,
            "MinValue": 1,
            "ConstraintDescription": "[1, 100]之间的整数",
            "Type": "Number"
        },
        "MinAmount": {
            "Default": 1,
            "Description": "创建ECS实例个数的下限,并且要小于MaxAmount",
            "MaxValue": 100,
            "MinValue": 1,
            "ConstraintDescription": "[1, 100]之间的整数",
            "Type": "Number"
        },
        "Password": {
            "Description": "ECS登录密码.",
            "MaxLength": 30,
            "MinLength": 8,
            "NoEcho": true,
            "ConstraintDescription": "8-30个字符,可以包含大、小写字母和特殊字符",
            "Type": "String"
        }
    },
    "Resources": {
        "ecsInstanceGroup": {
            "Type": "ALIYUN::ECS::InstanceGroupClone",
            "Properties": {
                "SourceInstanceId": {
                    "Ref": "SourceInstanceId"
                },
                "ImageId": {
                    "Ref": "ImageId"
                },
                "LoadBalancerIdToAttach": {
                    "Ref": "SLBId"
                },
                "InstanceName": {
                    "Ref": "InstanceName"
                },
                "MaxAmount": {
                    "Ref": "MaxAmount"
                },
                "MinAmount": {
                    "Ref": "MinAmount"
                },
                "Password": {
                    "Ref": "Password"
                }
            }
        }
    },
    "Outputs": {
        "InstanceIds": {
            "Description": "输出新创建的ECS实例的ID列表",
            "Value": {
                "Fn::GetAtt": ["ecsInstanceGroup", "InstanceIds"]
            }
        },
        "PublicIps": {
            "Description": "输出新创建的ECS实例的IP地址列表",
            "Value": {
                "Fn::GetAtt": ["ecsInstanceGroup", "PublicIps"]
            }
        }
    }
}

ROS控制台已经提供了一个可以快速使用的样例模板,您只要根据自己的需要简单修改、配置即可。扩容样例

时间: 2024-10-21 15:24:01

简单高效的云服务器单元化扩容方案的相关文章

阿里云服务器ECS怎么样?阿里云服务器ECS选择方案建议

如果我们的网站追求速度.且正规的站点,老蒋个人建议还是选择国内的主机商,以前我们都会选择虚拟主机,如今我们都会选择云主机.VPS等,一来稳定性高,二来具有独立IP等特点,利于网站的扩展.在目前国内的云主机服务商中,竞争还是很激烈的,小的IDC商家可能以后会区域终结,取而代之的是门户网站的云主机项目,比如阿里云.腾讯云.景安快云.百度云等等. 在这篇文章中,老蒋来分享对于新用户来说可能比较有用的,关于如何选择阿里云服务器ECS产品,因为在众多的配置方案和数据中心机房中,无从下手,所以这一篇还是比较

云服务器的价值与IT部署可行性分析

2017年4月10日,国家工信部正式印发<云计算发展三年行动计划(2017-2019年)>,为国内云计算发展和应用开发予以高度的肯定和支持.近年来,阿里.腾讯.百度.华为等巨头纷纷投入云计算等相关产品的研发和推广,大大加速了我国互联网的发展进程.作为云计算落地的基础设施服务,云服务器在帮助企业IT架构转型,缩减IT运营成本的过程广获认可.在此,我们将对云服务器的价值与IT部署可行性作简单分析,以飨读者. 一.云服务器是否能够降低应用的长期成本? 随着云计算应用走向多元化和个性化,许多企业开始评

怎么选择云服务器,云服务器哪家好?

怎么选择云服务器,云服务器哪家好? 现在国内外云服务器厂商有很多,实力参差不齐,但大家挑选云服务器不外乎稳定性.性价比.配套服务等因素,在这里,我们略微对比一下几个云服务器服务商,亚马逊AWS.微软Azure和阿里云,这几家企业可以说是云计算行业的领导者了,他们之间又有什么不同呢,希望通过分析大家能找到适合自己的云服务器. 在价格方面呢,由于项目或公司初期刚起步,大把烧钱,还见不到收益,所以尽可能降低成本.相比国外的微软Azure和亚马逊AWS,阿里云相对便宜点,最近阿里云又进行了一次重大调价,

一个完整和全面的云服务器安全方案是什么样子的?

对于很多企业用户来来说,由于云服务器替代传统服务器承载了与企业生存发展息息相关的互联网业务,使得用户对云安全的疑问很大程度上聚焦在云服务器的安全上. 云服务器安全吗?这个问题不仅仅限定在看不到摸不着的虚拟化层面,让用户感触更为深刻的是--突然发现,之前很多常见和常用的安全防护系统,特别是"硬件盒子",都从采购名单上消失了.云计算环境对于安全防护的改变可见一斑. 这样一来,云服务器的安全该如何实现呢?   云服务器安全面临的威胁 正像云计算对于互联网业务革命性的改变一样,对安全的改变也是

阿里云服务器是什么

什么是云服务器 ECS 云服务器 ECS (Elastic Compute Service) 是处理能力可弹性伸缩的计算服务,它的管理方式比物理服务器更简单高效.无需提前采购投入,您可以根据业务的需要,随时创建实例.扩容磁盘.或释放任意多台云服务器实例. 云服务器 ECS 实例(以下简称 ECS 实例)是一个虚拟的计算环境,包含 CPU.内存等最基础的计算组件,是云服务器呈献给每个用户的实际操作实体.ECS 实例是云服务器最为核心的概念,其他的资源,比如磁盘.IP.镜像.快照等,只有与 ECS

云服务器的SLB产品特点

  SLB服务针对阿里云弹性计算平台而设计,无论在系统架构.系统安全及性能,扩展,兼容性设计上都充分考虑了弹性计算平台云服务器使用特点和特定的业务场景,用户的云服务器无需特殊设置即可以透明接入. 阿里云SLB服务会检查服务池中云服务器的健康状态,自动隔离异常状态云服务器,从而解决了单台云服务器的单点问题,同时提高了应用的整体服务能力.在标准的负载均衡功能之外,SLB服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务器的防护能力. 阿里云SLB服务是云服务器面向多机方案的一个配套服务,

云服务器ECS,你真的懂吗?

云服务器ECS是阿里云最基础的弹性计算服务,总计规划了十余种规格族,几十种规格.用户在面对阿里云众多的产品种类,颇有种挑花了眼不知如何入手的感觉,本文就对阿里云最基础的云服务器ECS进行一下详细的介绍. 立即购买>>  了解详情>> 服务器ECS(Elastic Compute Service:弹性计算服务,对应亚马逊AWS的产品叫EC2,Elastic Compute Cloud)本质上是向用户提供的虚拟机资源,背后核心技术采用KVM.虽然,不少企业客户依然在用桌面虚拟化方面依然

《玩转ECS云服务器》第一期:走进块存储产品

11月23日,阿里云弹性计算产品经理崆闻在培训上为大家做了<玩转ECS云服务器>系列培训第一期<走进块存储>的分享.在本次分享中,他首先分析了数据类型和业务场景,接着介绍块存储产品的基本特性和选型,最后重点分享了块存储的数据保护技术.多副本技术和快照.下面是本次分享的内容整理,如下.   直播回顾视频   玩转ECS云服务器系列课程,会带您深入了解实例.块存储.镜像等相关ECS子产品的产品特点和基本使用方法,帮助您在上云旅途中迈出坚实的第一步.   云服务器ECS是阿里云提供的一种

云服务器 ECS 数据恢复:使用快照策略和镜像备份数据

使用快照策略和镜像备份数据 很多客户在使用ECS,将应用部署到云端后,并不重视对数据的保护,几乎不采取任何有效的备份措施,因此我们经常遇到数据丢失无法找回的案例. 数据的丢失往往并不是云平台本身的问题,ECS提供的是底层硬件.虚拟化层面的可用性,并从物理层保证数据99.9999999%的可靠性,确保数据不会因为物理硬件的损坏而丢失,然而还有很多其他途径导致数据的丢失,例如误删除.勒索病毒.逻辑错误等等. 数据是最重要的资产之一,一旦发生数据的丢失,造成的损失难以预估和补救. 本文档介绍如何使用快