跳至內容

自動規模化

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

自動規模化(Autoscaling),是雲端運算中的一種常用方法,通過該方法,伺服器池中的計算資源量(通常根據有效的伺服器數量來衡量)會根據伺服器池中的負載進行動態伸縮。 它與負載均衡緊密相關,並以此為基礎。[1][2]

優勢[編輯]

自動規模化具有如下優點:

  • 對於服務執行在自建機房的公司,自動規模化通常意味著允許一些伺服器在低負載時進入睡眠狀態,從而節省電費(以及用於冷卻機器的水費和水費)。[3]
  • 對於使用在代管在雲上的機房的公司而言,自動擴充可能意味著更低的費用,因為大多數雲提供商都基於總使用量而不是最大容量進行收費。[4]
  • 即使對於不能在任何給定時間減少執行或支付的總計算能力的公司,它們也可以在低流量時降低伺服器的負載。[5]
  • 自動規模化解決方案(例如Amazon Web Services提供的解決方案)還可以用來替換異常狀態的實例,從而在一定程度上防止硬體,網路和應用程式故障。[6]
  • 在生產工作負載經常變化且不可預測的情況下,自動規模化可以提供更長的正常執行時間和更高的可用性。

自動規模化與每天,每周或每年固定的伺服器使用周期不同,它可以回應實際的使用模式,從而減少了因流量負載而組態的伺服器太少或太多的潛在弊端。例如,如果流量通常在午夜時分較低,則靜態伸縮方案可能會將某些伺服器安排在夜間休眠,但這可能會導致在使用者碰巧在夜間需要使用服務時(例如由於病毒性傳播的新聞)出現宕機。與之相度的,自動規模化可以更好地應對預期外的流量高峰。[3][7]

術語[編輯]

在下面的列表中,我們使用亞馬遜雲端運算服務提供的術語.[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]

甲骨文雲[編輯]

Oracle Cloud Platform 允許伺服器實例通過定義自動擴充規則自動收縮或擴充叢集。[28] 這些顧澤主要利用 CPU 和主記憶體的利用率來決定何時增加和刪除節點。

谷歌雲平台[編輯]

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頁面存檔備份,存於網際網路檔案館), deployment頁面存檔備份,存於網際網路檔案館) 或 replicaset頁面存檔備份,存於網際網路檔案館) 中的數量。 調整主要基於對 CPU 的監視(其 beta 版也可以監視其他一些指標 application-provided metrics頁面存檔備份,存於網際網路檔案館))[34]

可選的自動規模化決策方案[編輯]

預設情況下,自動縮放使用``被動決策方法來處理流量縮放:縮放僅回應於度量標準的即時更改而發生,在某些情況下,特別是當更改發生得很快時,這種被動縮放方法是不夠的。 下面介紹了另外兩種自動縮放決策方法。

按計劃擴充方案[編輯]

這是一種自動縮放的方法,其中在一天的特定時間更改自動縮放組的最小大小,最大大小或所需容量。例如,如果已知流量負載在 一天中的特定時間,但是更改太突然了,以至於基於回應式方法的自動縮放無法足夠快速地回應.AWS自動縮放組支援計劃的縮放。[35]

預測性自動規模化[編輯]

這種自動縮放方法使用predictive Analytics,其想法是將最近的使用趨勢與歷史使用資料以及其他類型的資料結合起來,以預測將來的使用情況,並根據這些預測進行自動縮放。

Netflix發現,對於部分基礎架構和特定的工作負載,其預測分析引擎Scryer比Amazon的反應式自動縮放方法提供了更好的結果。它特別適合以下場景:[36][33]

  • 在不久的將來辨識需求的巨大峰值,並提前一點準備好產能
  • 處理大規模中斷,例如整個可用區和區域的故障
  • 處理可變的流量模式,根據一天中不同時間的典型需求水平和變化率,在橫向擴充或縱向擴充速率上提供更大的靈活性

在2018年11月20日,AWS宣布將在其自動擴充產品中提供預測擴充功能。[37]

其他[編輯]

參考連結[編輯]

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