User:Fingerliu/弹性伸缩
弹性伸缩, 是云计算中的一种常用方法,通过该方法,服务器池中的计算资源量(通常根据有效的服务器数量来衡量)会根据服务器池中的负载进行动态伸缩。 它与负载均衡紧密相关,并以此为基础。[1][2]
优势
[编辑]弹性伸缩具有如下优点:
- 对于服务运行在自建机房的公司,弹性伸缩通常意味着允许一些服务器在低负载时进入睡眠状态,从而节省电费(以及用于冷却机器的水费和水费)。[3]
- 对于使用在托管在云上的机房的公司而言,自动扩展可能意味着更低的费用,因为大多数云提供商都基于总使用量而不是最大容量进行收费。[4]
- 即使对于不能在任何给定时间减少运行或支付的总计算能力的公司,它们也可以在低流量时降低服务器的负载。[5]
- 弹性伸缩解决方案(例如Amazon Web Services提供的解决方案)还可以用来替换异常状态的实例,从而在一定程度上防止硬件,网络和应用程序故障。[6]
- 在生产工作负载经常变化且不可预测的情况下,弹性伸缩可以提供更长的正常运行时间和更高的可用性。
弹性伸缩与每天,每周或每年固定的服务器使用周期不同,它可以响应实际的使用模式,从而减少了因流量负载而配置的服务器太少或太多的潜在弊端。例如,如果流量通常在午夜时分较低,则静态伸缩方案可能会将某些服务器安排在夜间休眠,但这可能会导致在用户碰巧在夜间需要使用服务时(例如由于病毒性传播的新闻)出现宕机。与之相度的,弹性伸缩可以更好地应对预期外的流量高峰。[3][7]
术语
[编辑]在下面的列表中,我们使用 亚马逊云计算服务 (AWS)提供的术语.[8] 但是我们会标注出术语的别名,并且不会使用特定于Amazon服务名称的术语。
名称 (除特殊说明外,使用 AWS 的名称[8]) | 含义 | 别名 (使用在 Google Cloud Platform,[9] Microsoft Azure,[10] 或其他平台中) |
---|---|---|
实例 | 属于服务器组的一部分的,用于弹性伸缩的单个服务器或计算机 | |
弹性伸缩组 | 具有自动伸缩功能的实例的集合以及所有相关的策略和状态信息 | 托管实例组 (Google Cloud Platform) |
尺寸 | 当前属于弹性伸缩组的实例数 | |
所需容量(或所需大小) | 弹性伸缩组在任何给定时间点应具有的实例数。 如果尺寸小于所需大小,则弹性伸缩组将尝试启动(设置和追加)新实例。 如果尺寸大于所需大小,则弹性伸缩组将尝试删除(分离并终止)实例 | |
最小尺寸 | 系统允许的实例数的最小值 | |
最大尺寸 | 系统允许伸缩的实例数最大值 | |
测量指标 | 与弹性伸缩组关联的度量(例如CPU利用率,内存使用,网络使用),会定期生成时间序列的数据点。可用于设置伸缩策略的指标阈值。指标可以是弹性伸缩组实例指标的汇总,也可以是和伸缩组关联的负载均衡的指标。 | |
伸缩策略 | 用于指定弹性伸缩组的所需容量(或其最小和最大值)的更改,以响应超过特定阈值的指标的策略。 扩容策略可以具有关联的冷却时间,这可以防止在特定扩容操作之后立即发生其他扩容操作。 对所需容量的更改可以是增量的(增加或减少一个特定的值),也可以指定所需容量的新值。 增加所需容量的策略称为“向外扩展”或“扩大”策略,而减少所需容量的策略称为“向外扩展”或“缩小”策略。 | |
健康检查 | 自动伸缩组确定与其连接的实例是否正常运行的一种方法。 运行状况检查可以基于实例是否仍然存在并且可访问,也可以基于实例是否仍在注册并在关联的负载均衡器中使用。 | |
启动配置 | 启动新实例时使用的参数和脚本的描述。 这包括实例类型,购买选项(例如,在AWS中为现货或按需购买),可能的启动可用区域,机器映像以及在启动时运行的脚本。 | 实例模板 (Google Cloud Platform) |
手工伸缩 | 手动执行的伸缩操作。 | |
按计划扩展 | 在特定时间执行伸缩操作的策略。比如,每天执行,每月执行,没年执行。更多请查看 #Scheduled scaling |
实践
[编辑]亚马逊云服务 (AWS)
[编辑]亚马逊云计算服务在 2006 年 8 月启动了 亚马逊弹性计算云 (EC2), 来允许开发人员编程启动和结束实例(机器)。[11][12] 在最初启动时,AWS不提供自动缩放功能,但是通过编程方式创建和终止实例的能力使开发人员可以灵活地编写自己的代码以进行自动伸缩。
从 2008 年 4 月开始,AWS 的第三方弹性伸缩软件开始出现。 这其中包括 Scalr[13] 和 RightScale。RightScale 被 Animoto 使用,从而能应对 Facebook 的流量伸缩。[14][15]
2009年5月18日,作为Amazon Elastic Compute Cloud的一部分,Amazon 推出了自己的弹性伸缩功能以及 Elastic Load Balancing。[16] 现在,自动缩放是Amazon EC2产品不可或缺的组成部分。[2][17][18] Amazon Web Services 上的自动缩放是通过Web浏览器或命令行工具完成的。[19] 2016年5月,AWS ECS服务中也提供了自动伸缩功能。[20]
视频点播提供商Netflix记录了他们在Amazon Web Services中使用自动缩放功能来满足其高度可变的消费者需求的情况。 他们发现积极地扩大规模,延迟和谨慎地缩小规模最能实现其正常运行时间和响应能力的目标。[7]
在描述 TechCrunch 的文章中, Zev Laderman, Newvem(一个用来优化 AWS 云基础设施的服务) 的联合创始人, CEO 推荐说在项目起步阶段使用弹性伸缩是他们的花费保持在较低的水平。[4]
各种适用于AWS的最佳实践指南都建议即使在负载不变的情况下也要使用其自动缩放功能。 这是因为自动缩放具有另外两个优点:自动替换由于任何原因(例如硬件故障,网络故障或应用程序错误)而变得不正常的任何实例。 并且自动替换因价格或容量原因而中断的竞价型实例,这使得将竞价型实例用于生产目的更加可行。[6][21][22] Netflix的内部最佳实践要求每个实例都在一个弹性伸缩组中,并且其一致性猴子(Netflix 内部的测试工具)会终止不在自动伸缩组中的所有实例,以实施此最佳做法。[23]
微软的 Windows Azure
[编辑]2013年6月27日, 微软 公布其 Windows Azure 云计算平台支持弹性伸缩功能。[24][25][26] 文档可参考 微软开发者网络.[10][27]
甲骨文云
[编辑]甲骨文云 允许服务器实例通过定义自动扩展规则自动收缩或扩展集群。[28] These rules are based on CPU and/or memory utilization and determine when to add or remove nodes.
谷歌云平台
[编辑]2014年11月17日,Google Compute Engine 发布了贪生伸缩的 beta 版本试用功能。[29][30][31][32] As of March 2015, the autoscaling tool is still in Beta.[9]
在2014年8月的博客文章中,一位Facebook工程师透露,该公司已开始使用自动缩放功能以降低能源成本。 博客文章报道了在低流量时间(午夜左右)能耗下降了27%,在典型的24小时周期内能耗下降了10-15%。[3][33]
Kubernetes 水平 Pod 伸缩器
[编辑]Kubernetes Horizontal Pod Autoscaler 自动的调整 pods 在 replication controller, deployment 或 replicaset 中的数量。 调整主要基于对 CPU 的监控(其 beta 版也可以监控其他一些指标 application-provided metrics)[34]
可选的弹性伸缩决策方案
[编辑]Autoscaling by default uses reactive decision approach for dealing with traffic scaling: scaling only happens in response to real-time changes in metrics. In some cases, particularly when the changes occur very quickly, this reactive approach to scaling is insufficient. Two other kinds of autoscaling decision approaches are described below.
按计划扩展方案
[编辑]This is an approach to autoscaling where changes are made to the minimum size, maximum size, or desired capacity of the autoscaling group at specific times of day. Scheduled scaling is useful, for instance, if there is a known traffic load increase or decrease at specific times of the day, but the change is too sudden for reactive approach based autoscaling to respond fast enough. AWS autoscaling groups support scheduled scaling.[35]
预测性弹性伸缩
[编辑]This approach to autoscaling uses predictive analytics. The idea is to combine recent usage trends with historical usage data as well as other kinds of data to predict usage in the future, and autoscale based on these predictions.
For parts of their infrastructure and specific workloads, Netflix found that Scryer, their predictive analytics engine, gave better results than Amazon's reactive autoscaling approach. In particular, it was better for:[36][33]
- Identifying huge spikes in demand in the near future and getting capacity ready a little in advance
- Dealing with large-scale outages, such as failure of entire availability zones and regions
- Dealing with variable traffic patterns, providing more flexibility on the rate of scaling out or in based on the typical level and rate of change in demand at various times of day
On November 20, 2018, AWS announced that predictive scaling would be available as part of its autoscaling offering.[37]
其他
[编辑]参考链接
[编辑]- ^ Above the Clouds: A Berkeley View of Cloud Computing (PDF). Berkeley EECS. February 10, 2009 [March 21, 2015].
- ^ 2.0 2.1 Auto Scaling. Amazon Web Services. [March 21, 2015].
- ^ 3.0 3.1 3.2 Wu, Qiang. Making Facebook’s software infrastructure more energy efficient with Autoscale. Facebook Code Blog. August 8, 2014 [March 21, 2015].
- ^ 4.0 4.1 Laderman, Zev. The 10 Biggest Mistakes Made With Amazon Web Services. TechCrunch. April 22, 2012 [March 21, 2015].
- ^ Park, Andrew; Denlinger, Darrell; Watson, Coburn. Creating Your Own EC2 Spot Market. Netflix. September 18, 2015 [December 16, 2016].
- ^ 6.0 6.1 Wittig, Michael. 5 AWS mistakes you should avoid. cloudonaut. December 26, 2015 [December 16, 2016].
- ^ 7.0 7.1 Orzell, Greg; Becker, Justin. Auto Scaling in the Amazon Cloud. Netflix Tech Blog. January 18, 2012 [March 21, 2012].
- ^ 8.0 8.1 What Is Auto Scaling?. Amazon Web Services. [December 16, 2016].
- ^ 9.0 9.1 Autoscaler. Google Cloud Platform. [March 21, 2015].
- ^ 10.0 10.1 Autoscaling Guidance. Microsoft Developer Network.
- ^ Cubrilovic, Nik. Almost Exclusive: Amazon Readies Utility Computing Service. TechCrunch. August 24, 2006 [December 4, 2016].
- ^ Barr, Jeff. Amazon EC2 Beta. Amazon Web Services Blog. August 25, 2006 [May 31, 2013].
- ^ Work, Henry. Scalr: The Auto-Scaling Open-Source Amazon EC2 Effort. TechCrunch. April 3, 2008 [March 21, 2015].
- ^ Howlett, Dennis. RightScale cloud management extends to MySQL. RightScale, which specializes in cloud computing management for the Amazon Web Services platform today announced support for MySQL Enterprise. The service, which goes live July 1, provides automated deployment, management and scaling, coupled with MySQL Enterprise premium-level support for large database applications.. ZDNet. June 25, 2008 [December 16, 2016].
- ^ von Eicken, Thorsten. Animoto's Facebook Scale-Up. April 23, 2008 [December 16, 2016].
- ^ Barr, Jeff. New Features for Amazon EC2: Elastic Load Balancing, Auto Scaling, and Amazon CloudWatch. Amazon Web Services. May 18, 2009 [June 15, 2016].
- ^ What is autoscaling?. TechTarget. [March 21, 2015].
- ^ Barr, Jeff. Auto Scaling Update – Lifecycle Management, Standby State, and DetachInstances. Amazon Web Services (official blog). July 30, 2014 [March 21, 2015].
- ^ Auto Scaling Command Line Tool. Amazon Web Services (community-edited page). [March 21, 2015].
- ^ https://aws.amazon.com/blogs/compute/automatic-scaling-with-amazon-ecs/
- ^ Adams, Rich. AWS Tips I Wish I'd Known Before I Started. A collection of random tips for Amazon Web Services (AWS) that I wish I'd been told a few years ago, based on what I've learned by building and deploying various applications on AWS.. February 3, 2014 [December 16, 2016].
- ^ How to Use Amazon EC2 Spot Instances. wikiHow. [December 16, 2016].
- ^ The Netflix Simian Army. Netflix. July 19, 2011 [December 5, 2016].
- ^ Lardinois, Frederic. Microsoft Adds Auto Scaling To Windows Azure. TechCrunch. June 27, 2013 [March 21, 2015].
- ^ Microsoft to add autoscaling, alerts to Windows Azure. ZDNet. June 27, 2013 [March 21, 2015].
- ^ Butler, Brandon. Google, Microsoft play catch up to Amazon, add load balancing, auto-scaling to their clouds. Network World. August 7, 2013 [March 21, 2015].
- ^ The Autoscaling Application Block. Microsoft Developer Network. [March 21, 2015].
- ^ Administering PaaS Services. Oracle Help Center. [2018-05-16] (美国英语).
- ^ Balejko, Filip. Autoscaling, welcome to Google Compute Engine. Google Cloud Platform blog. November 17, 2014 [March 21, 2015].
- ^ Protalinski, Emil. Google Compute Engine gets Autoscaler to adjust app resources based on varying traffic and workloads. VentureBeat. November 17, 2014 [March 21, 2015].
- ^ Lardinois, Frederic. Google Brings Autoscaling To Compute Engine. TechCrunch. November 17, 2014 [March 21, 2015].
- ^ Verge, Jason. Google Launches Autoscaling Beta on Compute Engine. Data Center Knowledge. November 17, 2014 [March 21, 2015].
- ^ 33.0 33.1 Autoscaling: How the Cloud Provides a Tremendous Boost. Morpheus. November 2, 2016 [December 16, 2016].
- ^ Horizontal Pod Autoscaler Walkthrough. [June 21, 2018] (美国英语).
- ^ Scheduled Scaling. Amazon Web Services. [December 16, 2016].
- ^ Jacobson, Daniel; Yuan, Danny; Joshi, Neeraj. Scryer: Netflix’s Predictive Auto Scaling Engine. The Netflix Tech Blog. Netflix. [28 May 2015].
- ^ Barr, Jeff. New – Predictive Scaling for EC2, Powered by Machine Learning. Amazon Web Services. November 20, 2018 [November 23, 2018].