Amazon最近宣布將為自家的ECS服務(wù)提供自動(dòng)縮放能力。借此Amazon ECS服務(wù)將能自動(dòng)擴(kuò)展或收縮。當(dāng)閾值度量指標(biāo)超過或低于預(yù)期值時(shí),將由Amazon CloudWatch警報(bào)觸發(fā)縮放事件。
Amazon ECS又名EC2容器服務(wù),是一種針對(duì)Amazon EC2集群上運(yùn)行的Docker容器提供的管理服務(wù)。Amazon已可支持EC2集群的自動(dòng)縮放,但原本并不支持對(duì)EC2集群中運(yùn)行的容器服務(wù)進(jìn)行自動(dòng)縮放。
自動(dòng)縮放事件由Amazon Cloud Watch度量指標(biāo)驅(qū)動(dòng)。Amazon Cloud Watch度量指標(biāo)包括CPU使用率、數(shù)據(jù)傳輸率,或磁盤使用量。開發(fā)者還可以通過put-metric-data這一AWS命令或PutMetricData Query API將自己的度量指標(biāo)發(fā)布至CloudWatch。
例如用戶可以對(duì)已部署并面臨CPU壓力的Web服務(wù)啟用自動(dòng)縮放。在該場(chǎng)景中,可以對(duì)容器進(jìn)行擴(kuò)展,隨后一旦CPU壓力恢復(fù)正常水平,開發(fā)者還可以配置縮放事件以減少容器數(shù)量,進(jìn)而降低計(jì)算成本。
下圖演示了在AWS管理控制臺(tái)為容器和集群層面配置擴(kuò)展和收縮的方法。在擴(kuò)展和收縮時(shí),縮放事件是通過CPU使用率級(jí)別觸發(fā)的。
圖片來源:https://aws.amazon.com/blogs/compute/automatic-scaling-with-amazon-ecs/
通過使用Multi-AZ (Availability Zone) EC2集群和Elastic Load Balancers,客戶可以跨越多個(gè)Availability Zones對(duì)EC2集群和EC2容器服務(wù)進(jìn)行縮放,這樣可以實(shí)現(xiàn)進(jìn)一步容錯(cuò)。Amazon Web Services企業(yè)解決方案架構(gòu)師Mayank Thakkar介紹了設(shè)置自動(dòng)縮放的過程:“可以使用ECS控制臺(tái)、CLI,以及SDK創(chuàng)建可自動(dòng)縮放的服務(wù)。用戶只需要選擇任務(wù)數(shù)量的所需值、最小值和最大值,并創(chuàng)建一個(gè)或多個(gè)縮放策略,其余工作就可以由Service Auto Scaling完成。服務(wù)調(diào)度器也可感知Availability Zone,因此無(wú)需擔(dān)心ECS任務(wù)跨越多個(gè)區(qū)域的情況。”
Thakkar同時(shí)還提醒用戶,EC2集群的縮放需要比容器縮放更長(zhǎng)的時(shí)間,同時(shí)建議采取下列措施以便將延遲降到最低:“在設(shè)置集群縮放策略時(shí),可以通過一定的方式確保額外預(yù)留一定的集群容量,這樣ECS服務(wù)就可以實(shí)現(xiàn)更快速的擴(kuò)展,但取決于具體需求,與此同時(shí)某些EC2實(shí)例可能面臨使用率不足的情況。”
Amazon并非唯一能為容器服務(wù)提供自動(dòng)縮放能力的公有云供應(yīng)商。Microsoft Azure也通過Azure Virtual Machine Scale Sets (VMSS)的形式提供了類似的功能。Microsoft會(huì)通過Azure Insights Autoscale在無(wú)需預(yù)先供應(yīng)虛擬機(jī)的情況下提供自動(dòng)縮放能力。Azure VMSS不僅可用于容器,而且可以用于“大計(jì)算”和大數(shù)據(jù)工作負(fù)載。Azure VMSS通??墒褂肁RM模板部署,亦可使用REST API、Powershell 或 Azure CLI創(chuàng)建。
查看英文原文:Amazon Brings Auto Scaling to EC2 Container Service