資源使用優化
資源使用優化是成本優化的必要手段也是有效手段。云資源利用率不佳往往由于用云經驗和技術債務等原因,比如傳統企業數字化程度不高且經驗不足,在面對云原生架構的引入時,缺乏有效的成本洞察和成本控制的手段;也或者由于云原生技術的一些不當使用而帶來的技術債務,造成了成本增加。再者,云服務除存量穩態運行的資源之外,每年還會有新增機器,一般情況下,隨著業務的增長,資源規模與成本總是逐年增加的。面對如此規模增長,資源管理需要聚焦整體的效率提升,并通過高效的集群管理和資源管理來提升整體資源利用率,節約資源成本。
典型資源優化場景
基礎設施云原生化
云原生化之前,傳統IT架構遷移上云,或者需要對傳統IT架構進行云原生化改造。此階段是對基礎設施的一次重大變更,需要在關鍵時機對成本進行規劃和治理。此階段需要重點關注以下內容。
應用云原生化改造
云原生化進行中,云原生化后的應用可以借助Kubernetes提供的彈性擴縮容、混部等機制,具有高可用的穩定性優勢。同時,在業務流量動態漲跌波動時,使容器按照承載業務的標準部署單元進行擴縮容,從而具備按業務需求量申請資源成本的智能化策略的削峰填谷能力。
穩定運行的云原生業務
云原生化進行后,業務持續運行過程中需要根據業務的動態變化制定相應的成本治理策略,常見于以下場景:
業務呈現較明顯周期性波動,例如出現早九晚五是流量高峰期的現象。此場景推薦使用成本洞察功能觀測規律,并采取合適的彈性能力等成本優化手段。更多信息,請參見成本洞察功能說明。
新老業務交替頻繁是很多新興業務領域的常見現象。在業務新興階段,應用的資源成本面臨容量規劃的挑戰。推薦使用成本洞察功能觀測應用的資源成本使用情況,同時推薦使用資源畫像功能,合理規劃應用的配置規格。具體操作,請參見成本洞察功能說明和資源畫像。
通過資源現狀評估可以獲知資源使用,通過設計資源使用架構,優化資源利用等措施,可以達到資源利用優化的目標,進一步節約成本。
資源現狀評估
在云計算越來越趨于基礎設施化的今天,企業使用云服務時通常會遇到資源通常分散在不用的云服務中,這不便于從應用架構的角度來管理資源的挑戰。通過工具輔助人工方式定期對云上整體資源進行梳理、調整和更新,將資源可視化,高效指導資源的優化方向,從而避免云資源在持續使用過程中由于各種原因產生不必要的浪費。如存在孤島資源、閑置或低利用率資源、未綁定公網IP和網關的對外服務資源、未掛載磁盤的資源、數據庫是否多可用區部署等等。
云上用戶可以免費使用阿里云云速搭CADT工具進行資源現狀的可視化洞察。阿里云云速搭提供自助式云資源管理能力,從資源出發,降低架構管理的難度和時間成本。云速搭提供大量預制的應用架構模板,同時提供資源現狀探查并自動生成可視化架構圖,支持自助拖拽方式定義架構,對云服務可以自動化配置和管理,對云上資源做到從開通到運行到刪除的全生命周期管理。
選擇適合的云產品及資源規格
企業應該選擇適合應用和資源要求的計算實例和存儲類型,并面向新算力需求場景使用最新一代實例和技術。
計算實例選型
如何選擇適合應用和資源要求的實例類型和大?。吭谖⒂^層面,對于采用自建或者開源部署模式使用彈性計算ECS的用戶,基于業務類型的不同,對實例的選擇需要有所側重匹配。在通用計算場景、緩存場景下則需要選擇大內存實例、大數據任務以及在AI深度學習場景下選擇異構計算實例。對于客戶不同的應用類型,阿里云從場景和業務應用等ECS選型最佳實踐出發,針對場景推薦不同的實例規格族,將更細粒度的CPU、內存、IOPS等特性幫助用戶使用到極致性價比的計算服務。
關注最新一代實例
選用最新一代實例可以通過較少的數量或者更低的規格,來獲得當前環境同樣的性能,實現綜合成本的進一步優化。阿里云通過底層基礎設施地不斷加速升級,面向新算力需求場景,實例規格的推陳出新在代際差的選擇上需要被關注。相同規格下,阿里云最新一代的彈性計算實例,往往有著更高的主頻、網絡吞吐能力等性能優勢,使用體驗也會有所升級,技術的紅利在成本上能夠反哺到用戶,從而讓其具備更好的性價比。
存儲選型
為了配合使用場景和云服務進行針對存儲選型,需要回答好業務和技術指標方面的問題,以便于更清楚存儲承載的應用環境。塊存儲是阿里云為云服務器ECS提供的塊設備產品,具有高性能和低時延的特點,支持隨機讀寫,滿足大部分通用業務場景下的數據存儲需求。您可以像使用物理硬盤一樣格式化并建立文件系統來使用塊存儲。阿里云文件存儲NAS是可以提供共享訪問,彈性擴展,高可靠,高性能的分布式文件系統??芍С稚锨_彈性計算ECS、容器服務ACK等計算節點共享訪問,您無需修改應用程序,即可無縫遷移業務系統上云。其他業務指標如用戶量規模,百萬還是千萬級;整體存儲數據量,數據壓縮率,數據量預估和日均增量情況;讀寫偏好,數據是讀多一些還是寫多一些;數據是強事務型還是分析型需求;存儲所支持的數據服務引擎如關系型、非關系型、鍵值存儲、行或列存儲還是圖文存儲等;運行性能要求,業務并發量、高峰和低谷分別的預估情況等。不同指標對選擇存儲類型和規格均有一定影響,需要根據不同場景進行適配。
數據庫選型
不同業務場景對應的數據庫產品以及規格不盡相同,如關系型數據庫典型的在線事務處理業務,面向交易系統,行數據會以增刪改的方式在數據庫中進行數據的更新處理操作,實時性高、穩定性強、確保數據及時更新成功。又如非關系型數據庫解決了當業務數據量增長到幾百億時使用關系型數據庫帶來的性能和成本的問題。云數據庫MongoDB采用No-Schema的方式,非常適用于初創型的業務需求。可以將模式固定的結構化數據存儲在關系型數據庫中,模式靈活的業務存儲在MongoDB中,高熱數據存儲在云數據庫Redis版或云數據庫 Memcache 版中,實現對業務數據高效存取,降低存儲數據的投入成本。數據庫的選型,需要在一致性、可用性和分區容錯性這三個系統指標中平衡,指標三角無法被同時滿足。同時在數據庫產品維度也需要關注到性能、彈性擴縮、易維護、數據安全、容災備份等特性,匹配最合適業務特性和技術指標的數據庫產品,從而使選型具備優秀性價比。
設計資源架構并合理使用
關閉未使用的資源
對于在非工作時間不需要使用或用于臨時性測試資源,可以在非工作時間自動關閉這些虛擬機或在測試任務完成后刪除這些服務器。在判斷閑置資源時,參考阿里云云監控過去30天的資源性能數據,按照CPU使用率和磁盤IO以及網絡利用率為參考指標。當CPU資源峰值利用率< 1%,磁盤IO小于<10,網絡利用率低于1%時,判斷該服務器為閑置資源。由于內存為占用型資源,故不考慮將其納入到判斷指標內。
優化快照使用成本
快照是數據備份和容災方案設計中被頻繁使用的功能,也是成本最低的數據可靠性保障的通用方案。在使用快照時,有時用戶會設置一個通用的運維管理方案,對于所有賬號下云服務器按照標準統一管理??煺盏挠嬞M基礎是快照容量,因此快照數量越多,所占用的快照容量也就越大,隨之產生的快照費用也會增加??煺帐褂玫淖罴褜嵺`是基于實際業務需求,按照場景合理設置快照策略,保留合適數量的快照。如核心應用每天一次而非核心應用每周一次,長期快照定期刪除以及系統盤不建議保存應用數據等。
優化存儲資源使用
在選擇存儲資源時,需要注意通過不同方式創建云存儲時,各存儲產品所支持的計費方式會有所不同;時刻評估你的存儲資源如何根據業務特性配置合理的生命周期并養成定期清理磁盤的良好習慣,刪除不用的內容。在超大數據規模的存儲場景下,可以使用存儲容量包降低整體使用成本。同時也要優化存儲資源的使用架構,比如在使用SLS過程中可以優化存儲結構和優化存儲內容:
優化存儲結構
如果您持續采集某應用的日志,每天的寫入量為100 GB,存儲30天并建立全文索引,此數據量日志服務成本就很高。如果您更關心的是其中某一類POD的日志,例如操作日志與出錯日志。假設這類日志的比例是20%,且希望存儲30天。對其他的日志只需要存儲7天。那么推薦您使用如下加工方案。則可節省近25%的成本:
構建接入源Logstore,存儲3天不建立索引。
構建目標Logstore1,用于存儲操作日志與錯誤日志,存儲30天并建立索引。
構建目標logstore2,用于存儲一般性日志,存儲7天并建立索引。
優化存儲內容
假設您只關心原始日志中的某些字段,則可以通過數據加工將關心的字段存儲30天并建立索引,其他冗余字段僅存儲3天即可。那么推薦您使用如下加工方案:
構建接入源Logstore,存儲3天不建立索引。
構建目標Logstore,用于存儲操作日志與錯誤日志,存儲30天并建立索引。
假設每條日志經過加工后大小約為原來的60%,與加工之前相比大約可以節省30%的成本。
合理規劃網絡
當使用網絡服務時,在架構優化層面可以盡量使用內網進行應用間的通信;在做跨賬號或跨VPC之前的流量互通時規劃好跨地域跨國家之間的網絡產品。重新評估公網出口的規劃設計,推薦使用NAT網關等服務做網絡出入流量的統一管理并持續監控網絡流量的使用,實時監控網絡流量和費用,防止突發的人為或者意外的大規模數據傳輸而導致成本的飆升。
數據庫服務優化分析
用好數據庫服務提供的工具。通過對數據庫實例多維度的分析,關注實例利用率,根據服務實際運行情況謹慎評估實例狀態、動態調整以達到合理的負載使用率。關注CPU峰值利用率、磁盤空間、內存使用率、連接數、QPS、IOPS等多個技術指標水位,在充分保障穩定性的前提下進行技術優化。數據庫自治服務 DAS(Database Autonomy Service)是一種基于機器學習和專家經驗實現數據庫自感知、自修復、自優化、自運維及自安全的云服務,幫助用戶消除數據庫管理的復雜性及人工操作引發的服務故障,有效保障數據庫服務的穩定、安全及高效。并且可以進行自動SQL診斷優化和索引創建,在數據庫實例出現慢SQL問題時,及時進行診斷和優化,幫助數據庫系統運行在最佳狀態。
為應用負載引入彈性機制
為應用的計算資源引入彈性服務,可以減少業務低峰時資源的浪費,也可以減少運維成本。
ECS彈性機制
計算彈性伸縮是云的核心特性之一,根據用戶的業務需求和策略,自動調整其彈性計算資源的管理服務。用戶根據自己的業務需求自動調整其彈性計算資源,在業務需求增長時,無縫地增加彈性計算ECS實例,并在業務需求下降時,自動減少實例以節約成本。 彈性伸縮 ESS(Auto Scaling)是一個免費的服務,但是通過彈性伸縮自動創建的ECS實例,需要按照ECS按量付費類型的實例標準進行付費。使用ESS的能力,無需投入大量人力來調整計算資源,無需提前預備計算資源,也無需擔心不能及時釋放冗余資源。彈性伸縮在適當的時間進行伸縮任務,降低資源擁有成本。
容器化改造,提升資源利用率
容器技術通過隔離運行在主機上不同進程,實現進程之間、進程和宿主操作系統相互隔離、互不影響,它有自己的一套文件系統資源和從屬進程。容器服務沒有管理程序的額外開銷,與底層共享操作系統,性能更加優良,系統負載更低,在同等條件下可以運行更多的應用實例,可以更充分地利用系統資源。同時,容器擁有不錯的資源隔離與限制能力,可以精確地對應用分配CPU、內存等資源,保證了應用間不會相互影響。更小的計算開銷意味著更低的總體成本。容器可以顯著減少您啟動和管理的虛擬機數量。通過消除每個應用程序都需要運行一個虛擬機的需求,可以減少整體計算開銷。這種浪費、重復的操作系統和資源的減少可以轉化為巨大的成本節省。過去多年大量的互聯網企業經歷了應用容器化改造。毋庸置疑,企業應用的容器化改造,不僅可以提升開發運維效率,同時依靠阿里云彈性容器實例相關能力將計算資源的利用率大幅提升,節約大量成本。更多容器彈性策略請參考如下內容。
優化資源利用率
資源利用率提升本質就是用最少的資源最大化滿足算力需求,同時需綜合考慮業務布局、容災和穩定性、機器故障率、預留緩沖空間等因素,這些因素交織在一起共同資源使用效率。概括起來需要被關注到的內容包括:明確資源利用率統計口徑、優化業務布局和集群架構部署、基于分配率和利用率驅動資源運營、統一資源池和節點管控、完善的資源數據監控能力、統一的資源調度和單實例資源的精細化隔離及水位控制。同時,當成本占比最高的生產環境資源的利用率顯著提升,對整體云服務而言,其使用的綜合成本收益將會最大化并保障服務質量。
通過云監控明確資源利用率統計口徑
使用云監控監控各云服務資源的監控指標,探測云服務可用性,并針對指定監控指標設置報警??梢匀媪私獍⒗镌粕腺Y源的使用情況和業務運行狀況,并及時對故障資源進行替換,高負載資源進行升配處理,保證業務正常運行,對低負載資源進行減配,減少資源浪費。
云原生彈性伸縮滿足統一資源節點管控
容器服務彈性伸縮是根據業務需求和策略,經濟地自動調整彈性計算資源的管理服務。彈性伸縮是云容器服務被廣泛采用的功能。為最大化提升資源使用率,在如在線業務彈性、大規模計算訓練、深度學習GPU或共享GPU的訓練與推理、定時周期性負載變化等場景均有較大的適用空間。
彈性伸縮服務支持兩個維度,第一個是調度層的彈性,主要是負責修改負載的調度容量變化。例如水平伸縮HPA是典型的調度層彈性組件,通過HPA可以調整應用的副本數,調整的副本數會改變當前負載占用的調度容量,從而實現調度層的伸縮。第二是資源層彈性,主要是集群的容量規劃不能滿足集群調度容量時,會通過彈出容器資源的方式進行調度容量的補充。
兩層的彈性組件與能力可以分開使用,也可以結合在一起使用,并且兩者之間是通過調度層面的容量狀態進行解耦。
云原生資源調度通過應用負載合理調度資源
為了實現精準、實時的實例伸縮和放置,必須把應用負載的特征作為資源調度依據,使用彈性調度策略,云平臺負責管理應用所需的彈性計算資源。調度平臺可以識別應用特征,在應用負載快速上升時,及時擴容計算資源,保證應用性能穩定。在負載下降時,及時回收計算資源,加快資源在不同租戶間的流轉,提高資源利用率。使用更實時、更主動、更智能的容器服務ACK精細化調度是獲得良好用戶體驗的關鍵。通過計算資源的彈性調度,完成指標收集、在線決策、離線分析、決策優化的閉環。
管理存儲生命周期
隨著應用與業務系統的長期運行,企業將積累大量數據。同時伴隨著業務團隊承接的業務體量越來越大,所需要的數據源的類型會變的越來越多。
通常情況下,最近寫入的數據訪問頻率會比很久之前寫入的數據高很多,此時我們可以認為這些數據為“熱”的。隨著時間的推移,初始寫入的,被認為是“熱”的數據,訪問頻次逐漸下降,當每周只被訪問幾次的時候,就會轉換為“溫”的數據。在此后,3~6個月里面,當數據一次都未被訪問,或者訪問頻率降低到一個月幾次或者幾個月一次,它就可能被定義為“冷”數據。最終,當數據一年之中極少用到,僅有一兩次使用頻率的時候,它在生命周期內的溫度可能就是“冰凍”的了。
不斷增長的冷數據或冰凍數據對現有集群的存儲空間壓力越來越大,成本也越來越高。冷數據存儲空間帶來的成本不可控影響不容忽視外,在存儲生命周期管理的架構設計上也需要為訪問頻繁的熱數據留出性能優化空間。
通過不同組合,冷數據的長期存儲成本需要低于熱數據存儲成本,并且冷數據要能便于讀取分析被訪問的文件資源創建時間分布情況,進行全生命周期的管理,通過不同存儲介質的不同成本情況進行保存,從而達到降低數據存儲成本的目的。在云上,可以通過數據的訪問頻次進行區分不同存儲類型,全面覆蓋從熱到冷的各種數據存儲場景,從而達到數據在生命周期內達到存儲成本最優,且能滿足日常業務需要。
阿里云的多種云原生存儲提供冷熱存儲技術:
對象存儲OSS 提供標準、低頻訪問、歸檔、冷歸檔、深度冷歸檔多種存儲類型,全面覆蓋從熱到冷的各種數據存儲場景。
PolarDB-X提供了冷數據歸檔的技術,若集群中某些庫表的數據幾乎沒有更新、插入和修改操作,且讀取頻率非常低,如果您有降本需求,可以使用PolarDB MySQL版提供的冷數據歸檔功能,將這部分數據轉存至低成本的OSS上存儲,以降低數據存儲成本。 AnalyticsDB MySQL通過對統計信息進行智能分析,為用戶提供冷熱數據優化、索引優化和分布鍵優化三種類型的調優建議,幫助用戶降低集群使用成本,提高集群使用效率。
云原生場景下的資源治理
云原生技術提供了共享、隔離、彈性等資源管理能力,能夠非常簡單高效地提升資源使用效率并降低企業資源使用成本。然而現實情況可能是大部分企業在使用云原生容器化彈性計算資源的成本有所增加。
造成這一現象的原因可能有兩方面。第一,由于云原生技術的一些不當使用而帶來的技術債務,造成了成本增加。第二,傳統企業主要還是以線下業務開展為主,數字化程度不高且經驗不足,在面對云原生架構的引入時,往往缺乏有效的成本洞察和成本控制的手段,難以分析成本增加的原因。引入先進技術的同時成本管理的復雜度也對應被引入,如何在容器層做好資源的管理,是擺在每個企業面前的現實問題。
通過云原生場景的成本治理實踐,將成本優化能力融入容器管理平臺,并從物理和邏輯兩個維度進行聚合分析,物理維度包括集群的Node、節點池和資源組,邏輯維度包括Pod、應用負載和命名空間,并將物理維度的費用和邏輯維度的費用進行打通,建立完整的資源成本畫像,從而更準確合理地進行一系列治理工作。
通過自動化來達到資源的合理使用
線上資源含通過自動彈性自動化工具來管理,達到資源的合理使用,可以減少人工運維成本和誤操作成本。