跳至內容

使用者: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)

[編輯]
Auto-scaling
Auto-scaling

亞馬遜雲計算服務在 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]

Facebook

[編輯]

在2014年8月的博客文章中,一位Facebook工程師透露,該公司已開始使用自動縮放功能以降低能源成本。 博客文章報道了在低流量時間(午夜左右)能耗下降了27%,在典型的24小時周期內能耗下降了10-15%。[3][33]

Kubernetes 水平 Pod 伸縮器

[編輯]

Kubernetes Horizontal Pod Autoscaler 自動的調整 podsreplication controller, deploymentreplicaset 中的數量。 調整主要基於對 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]

其他

[編輯]

參考鏈接

[編輯]
  1. ^ Above the Clouds: A Berkeley View of Cloud Computing (PDF). Berkeley EECS. February 10, 2009 [March 21, 2015]. 
  2. ^ 2.0 2.1 Auto Scaling. Amazon Web Services. [March 21, 2015]. 
  3. ^ 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. ^ 4.0 4.1 Laderman, Zev. The 10 Biggest Mistakes Made With Amazon Web Services. TechCrunch. April 22, 2012 [March 21, 2015]. 
  5. ^ Park, Andrew; Denlinger, Darrell; Watson, Coburn. Creating Your Own EC2 Spot Market. Netflix. September 18, 2015 [December 16, 2016]. 
  6. ^ 6.0 6.1 Wittig, Michael. 5 AWS mistakes you should avoid. cloudonaut. December 26, 2015 [December 16, 2016]. 
  7. ^ 7.0 7.1 Orzell, Greg; Becker, Justin. Auto Scaling in the Amazon Cloud. Netflix Tech Blog. January 18, 2012 [March 21, 2012]. 
  8. ^ 8.0 8.1 What Is Auto Scaling?. Amazon Web Services. [December 16, 2016]. 
  9. ^ 9.0 9.1 Autoscaler. Google Cloud Platform. [March 21, 2015]. 
  10. ^ 10.0 10.1 Autoscaling Guidance. Microsoft Developer Network. 
  11. ^ Cubrilovic, Nik. Almost Exclusive: Amazon Readies Utility Computing Service. TechCrunch. August 24, 2006 [December 4, 2016]. 
  12. ^ Barr, Jeff. Amazon EC2 Beta. Amazon Web Services Blog. August 25, 2006 [May 31, 2013]. 
  13. ^ Work, Henry. Scalr: The Auto-Scaling Open-Source Amazon EC2 Effort. TechCrunch. April 3, 2008 [March 21, 2015]. 
  14. ^ 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]. 
  15. ^ von Eicken, Thorsten. Animoto's Facebook Scale-Up. April 23, 2008 [December 16, 2016]. 
  16. ^ Barr, Jeff. New Features for Amazon EC2: Elastic Load Balancing, Auto Scaling, and Amazon CloudWatch. Amazon Web Services. May 18, 2009 [June 15, 2016]. 
  17. ^ What is autoscaling?. TechTarget. [March 21, 2015]. 
  18. ^ Barr, Jeff. Auto Scaling Update – Lifecycle Management, Standby State, and DetachInstances. Amazon Web Services (official blog). July 30, 2014 [March 21, 2015]. 
  19. ^ Auto Scaling Command Line Tool. Amazon Web Services (community-edited page). [March 21, 2015]. 
  20. ^ https://aws.amazon.com/blogs/compute/automatic-scaling-with-amazon-ecs/
  21. ^ 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]. 
  22. ^ How to Use Amazon EC2 Spot Instances. wikiHow. [December 16, 2016]. 
  23. ^ The Netflix Simian Army. Netflix. July 19, 2011 [December 5, 2016]. 
  24. ^ Lardinois, Frederic. Microsoft Adds Auto Scaling To Windows Azure. TechCrunch. June 27, 2013 [March 21, 2015]. 
  25. ^ Microsoft to add autoscaling, alerts to Windows Azure. ZDNet. June 27, 2013 [March 21, 2015]. 
  26. ^ 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]. 
  27. ^ The Autoscaling Application Block. Microsoft Developer Network. [March 21, 2015]. 
  28. ^ Administering PaaS Services. Oracle Help Center. [2018-05-16] (美國英語). 
  29. ^ Balejko, Filip. Autoscaling, welcome to Google Compute Engine. Google Cloud Platform blog. November 17, 2014 [March 21, 2015]. 
  30. ^ Protalinski, Emil. Google Compute Engine gets Autoscaler to adjust app resources based on varying traffic and workloads. VentureBeat. November 17, 2014 [March 21, 2015]. 
  31. ^ Lardinois, Frederic. Google Brings Autoscaling To Compute Engine. TechCrunch. November 17, 2014 [March 21, 2015]. 
  32. ^ Verge, Jason. Google Launches Autoscaling Beta on Compute Engine. Data Center Knowledge. November 17, 2014 [March 21, 2015]. 
  33. ^ 33.0 33.1 Autoscaling: How the Cloud Provides a Tremendous Boost. Morpheus. November 2, 2016 [December 16, 2016]. 
  34. ^ Horizontal Pod Autoscaler Walkthrough. [June 21, 2018] (美國英語). 
  35. ^ Scheduled Scaling. Amazon Web Services. [December 16, 2016]. 
  36. ^ Jacobson, Daniel; Yuan, Danny; Joshi, Neeraj. Scryer: Netflix’s Predictive Auto Scaling Engine. The Netflix Tech Blog. Netflix. [28 May 2015]. 
  37. ^ Barr, Jeff. New – Predictive Scaling for EC2, Powered by Machine Learning. Amazon Web Services. November 20, 2018 [November 23, 2018].