你必須知道的雲端計算知識(上)
最近訂閱學習了《深入淺出雲端計算》專欄,一口氣學完之後,做了一些總結筆記形成此文,特分享與你,希望對你有所幫助!本文為上半部分,主要總結了IaaS篇的核心要點。
零、開篇詞
1、開發者為何要學習雲端計算?
(1)歷經多年發展已成熟併成為一種潮流,企業數字化轉型的組成部分。
(2)產業的發展必然影響個體:
未來更多的應用都會執行在雲上,架構模式和思維方式也會更多地與雲契合共生!
(3)很多人對雲的特性還不夠熟悉,對雲產品存在誤解甚至偏見。
2、開發者應該如何學習雲端計算?
儘可能多地結合應用場景來解析雲的概念和能力,學習“用雲”而非“做雲”;對於我們程式設計師學習者而言,也是如此,重點放在用雲上即可!
不進行“廠商繫結”而是同時觀察運用多個主流雲廠商的服務,瞭解共性和差異性;對於我們學習者而言,先了解共性和差異,再重點放在企業所選擇的雲服務商提供的產品上重點關注!
一、Iaas篇
IaaS 的本質,是對雲資料中心和各類 IT 基礎設施的抽象,是基於軟體技術對物理硬體進行的封裝和虛擬。
1、區域和可用區
區域對應雲廠商在某個地理位置提供的所有云服務的組合=>對外提供雲服務的基本單位和容器;區域一般以國家或地區命名,也經常輔以城市和序號予以區分,例如:cn-hangzhou,cn-beijing,cn-chengdu等;
區域的設立和分佈體現了雲廠商的業務重點和地區傾向,例如:人口稠密的中心城市如北京、上海;相對偏遠的地區如寧夏;
阿里雲的可選區域列表
如何選擇合適的區域?
(1)區域的地理位置本身:儘量靠近終端使用者保證接入速度更快,混合雲的專線接入一般以同城或短距離接入為主;
(2)區域之間雲服務的差別:同一個雲在不同的區域提供的服務和規模可能是不同的,區域的“開服時間”也與區域內雲服務的可用性有較大關聯;
(3)成本預算:同一種服務的價格在不同區域也存在差異,區域的流量費用也需要關注。
PS:一般來說,入站流量、內部流量=>免費或近乎免費,而出站流量=>單獨收費。
如何實踐多區域架構?
(1)實踐背景:部分關鍵應用,為了追求最佳的使用者體驗和高可用性,需要把多個區域的資源和能力結合起來進行構建。
(2)雲廠商背後做的工作:
-
- 物理上,多區域之間建設骨幹網=>能夠有較高的頻寬和較低的延時;
- 軟體層面上,允許位於不同區域的虛擬網路跨區域進行互聯;
- DNS解析層面上,通常會提供就近解析和智慧路由能力=>以獲得最快的響應速度;
(3)給我們帶來的便利:藉助雲的力量,小廠也能輕鬆擁有巨頭的分散式部署能力。
(4)實踐要點:
-
- 根據實際情況各司其職,讓不同區域擔任不同的角色,聯動起來達到業務目的;
- 切記不要輕率、隨意地拓展區域!因為會相應增加應用架構的複雜性和流量費及增加額外的運維工作負擔;
可用區是區域的下級概念
可用區是一個具備完整而獨立的電力供應、冷卻系統、網路設施的資料中心單元!一般來說,一個區域通常由多個可用區高速互聯組成,區域內的可用區一般位於同一個城市,之間相距往往在一百公里以內。
那麼,為什麼要建多個可用區?
(1)解決區域內高可用性問題:避免單個數據中心故障讓整個區域不可用;
(2)區域本身有擴充套件的需求:通過新建可用區,不斷擴充套件自身容量,補充新鮮血液;
此外,可用區的數量也成為一個衡量區域規模的重要指標!數量越多,意味著這個區域規模越大,在選擇區域的時候,這個指標也可以作為我們的重要參考。
學習小結
(1)區域是雲端計算的頂層概念,雲服務以區域為單位對外開放;
(2)區域選擇需要考慮多種因素,包括但不限於地理位置、服務豐富性、開服時間、資源成本、可用區數量等;
(3)可用區是區域之下的重要層級,代表獨立的資料中心,一個區域內往往有多個可用區;
(4)妥善將資源分佈到不同可用區,可實現故障隔離,提升架構的可用性;
2、雲虛擬機器知多少(一)
雲虛擬機器的核心概念
雲虛擬機器是在雲端虛擬出的伺服器,其核心技術是虛擬化技術,例如Xen、KVM、VMWare、HyperV等;
雲虛擬機器的體系結構:全面解耦的計算儲存分離!如下圖所示:
雲虛擬機器的體系結構
具體包含以下幾個要點:
(1)核心的CPU與內部部分同屬一臺宿主機;
(2)網路、硬碟等其他部分可脫離於宿主機之外;
(3)在可擴充套件性和故障隔離方面,具有很大優勢;
雲端"攢機"實戰要點
(1)選擇和確認虛擬機器所在的區域;
(2)虛擬機器的配置確認:
-
- 型號、核數、記憶體;
- 作業系統映象:流行的成熟Linux發行版 or 雲廠商自有Linux版本:和雲上硬體有更好的適配;
- 系統盤:高效雲盤 or 高速SSD;
- 網路和安全組的配置:網路安全組是虛擬機器之外的網路防火牆,是一個可複用的配置可以同時應用於多個虛擬機器,體現了雲端計算軟體定義網路的特點;
- 系統配置:為例項命名,指定登入的使用者名稱密碼或金鑰對;
學習小結
(1)雲虛擬機器是最重要的IaaS服務之一,它基於計算儲存分離的架構進行構建;
(2)雲虛擬機器的建立過程由地域、機型、作業系統、儲存、網路等共同構成;
(3)雲虛擬機器可使用雲廠商自有作業系統,與雲有較好的適配;
(4)網路安全組是保護雲虛擬機器的網路防火牆,可以同時應用於多個虛擬機器;
3、雲虛擬機器知多少(二)
我們可以從以下三個維度來建立對雲虛擬機器的多維認知,他們分別是型別、代別和例項大小。
雲虛擬機器的型別
這裡主要指具有同一類設計目的或效能特點的虛擬機器類別,常見虛擬機器型別有:
(1)通用均衡性(通常比例1:4,核心與記憶體比例)
(2)計算密集型(通常比例1:2)
(3)記憶體優化型(通常比例1:8以上)
(4)圖形計算型(帶有GPU能力)
主流雲計算平臺常使用字母縮寫來表達虛擬機器系列,如下表所示:
主流雲廠商的虛擬機器型別代號一覽表
雲虛擬機器的“代”
“代”主要用來標識這是該系列下第幾代的機型,但即便是同一系列的機型,不同的代別之間也會有不小的區別。
雲虛擬機器的換代更新可能是底層軟硬體架構的整體更新和提升,而不僅僅是CPU等硬體配置;
對我們而言,“買新不買舊”同樣適用於雲端虛擬機器的選擇!
雲虛擬機器的例項大小
例項大小主要指硬體計算資源的規模,而一般主流雲廠商在描述例項時常常使用以下幾個字眼來命名區分:
(1)medium
(2)large => 標準large對應2vCPU
(3)xlarge => 代表4vCPU
因此,如果更高的配置nxlarge => n * 4vCPU,如8xlarge => 8 * 4vCPU = 32vCPU。
PS:一般來說,這裡傾向於使用vCPU而非核數(Core)來描述,因為超執行緒技術的普遍存在,常常一個核心能夠虛擬出兩個vCPU的能力。
此外,近年來雲廠商開始為追求極致效能要求的客戶提供“裸金屬”(Bare Metal)伺服器產品,這種產品的使用者獨立享有物理資源,保障效能穩定,滿足資料安全和監管的超高要求。比如,金融、證券等行業對於合規性和安全性有苛刻的要求,採用裸金屬伺服器部署,能夠確保資料隔離、可監管、可追溯。又比如,超算中心、基因測序等高效能運算場景,對計算效能、穩定性、實時性等要求很高,裸金屬也是不二的選擇。當然,裸金屬伺服器產品的費用也不低,我們可以理解為它是虛擬機器的外表 + 物理機的心臟。
雲虛擬機器的命名規則
三個要素:型別、代別和例項大小,最具代表性的莫過於AWS的命名規則(阿里雲也很類似),即 [型別名][代別][字尾].[規格],例如:r5.4xlarge => R型別的第5代記憶體型虛擬機器,它有4*4vCPU=16vCPU,記憶體有16*8=128G(按照1:8的比例來算的話)。
學習小結
(1)雲虛擬機器的配置規格主要取決於型別、代別、例項大小三個最重要的維度;
(2)例項所屬的型別體現了相應的硬體資源配比與專項能力,為不同場景設計;
(3)雲虛擬機器的型號名稱一般由型別、代別、例項大小的縮寫組合而成;
4、雲虛擬機器知多少(三)
我們可以通過以下幾種方式來幫助降低我們在雲上的虛擬機器使用成本。
使用包年包月機型
這是最常見的降低成本的方式,但它意味著需要犧牲一些資源安排上的靈活性,也帶來了一個後續維護工作:續費管理。
使用競價例項
這是AWS首創的產品形式,其他的雲廠商也在紛紛跟進。其基本原理是將資料中心上閒置的機器資源拿出來公開拍賣,價高者得。其主要限制是因為其是閒置資源可能隨時會被回收,所以也是犧牲了穩定性。
鑑於此,這種方式比較適合無持久化狀態、可打斷的工作。
使用突發性能型別
這種方式的成本顯著小於類似配置的其他型別機器,因為此型別虛擬機器的CPU效能表現採用了“積分制”:
(1)隨著時間推移累加積分;
(2)隨著算力輸出消耗積分;
(3)當積分不足或耗盡時CPU只能發揮出標稱值的一部分效能,這個比例被稱之為“效能基準”;
一個突發性能虛擬機器例項的積分曲線示例
和突發性能例項相反的則是“無效能約束模式”,這是雲廠商為我們提供的一個付費選項,顧名思義,就是即便突發性能例項的積分耗盡,也仍然能夠發揮CPU的100%效能,不受約束限制。不過,這時超出效能基準的CPU消耗會產生額外的費用。
阿里雲“開啟無效能約束”選項確認提示
使用ARM例項
近年來,使用ARM架構晶片的虛擬機器例項已成為雲端計算IaaS層的新潮流。其主要特點在於ARM的主要特點:低功耗、高性價比,因此成本成為了它的市場法寶!據統計,輸出相同效能的ARM機型可以節省30%~40%的成本。
學習小結
(1)包年包月的付費方式是最常見的降低成本的方法,它通過犧牲採購的靈活性來換取折扣;
(2)競價例項的機制讓雲端的閒置資源對外開放,基於市場競拍的定價方式使使用者獲得折扣;
(3)突發性能例項使用CPU積分制,成本相對較低,適合工作負載存在較大波動的場景;
(4)基於ARM例項的虛擬機器例項陸續走向市場,是低成本機型中具有競爭力的選擇;
5、雲硬碟知多少
和傳統磁碟一樣,雲硬碟也屬於“非易失性儲存”,寫入的資料不會丟失。
與傳統磁碟的差異
絕大多數雲硬碟都不在宿主機上而在專用的磁碟伺服器陣列中,兩者通過資料中心內部特有IO線路進行聯接,這也是計算儲存分離架構的一種體現。
此外,雲廠商對雲盤上的內容會幫你在儲存端同步和保留至少三份副本資料,因此冗餘度和可用性很高。
雲硬碟的效能等級
第一個等級,基於傳統HDD硬碟構建而成的:效能一般,但成本較低;適合不注重效能或個人自用的伺服器場景;
第二個等級,基於混合硬碟(HDD+SSD):綜合發揮SSD的效能優勢和HDD的容量優勢;很多雲上建立硬碟的預設選項;
第三個等級,純SSD硬碟:成本較高,但是IO能力非常穩定及不俗的吞吐量和較低的訪問延時;適合承載生產環境中重要的關鍵業務應用或資料庫等IO密集型應用;
第四個等級,高效能SSD硬碟:最新的企業級快閃記憶體硬體,配合改進後的底層傳輸協議和優化的虛擬化技術;適合承載高效能運算、高併發OLTP資料庫等應用;
主流雲廠商的雲硬碟產品的命名及目標效能(IOPS)
使用雲上的本地磁碟
雲上也可以選擇使用帶有本地磁碟的虛擬機器型,啟動後本地磁碟會自動被掛載。
它主要有兩種適合的應用場景:
(1)需要支援資料本地性的計算框架應用場景;比如,在自建Hadoop叢集中使用MapReduce或Spark等支援本地資料性的計算框架進行分散式計算;
(2)對資料丟失不敏感的臨時性儲存應用場景;比如,作業系統的swap分割槽,又或資料庫的硬碟緩衝區等;
當上層(通常是指應用軟體系統本身)設計了儲存冗餘機制時,本地磁碟的相對高效能和低成本就成為了優勢。但是,其本質缺點還是易失性儲存,不適合的場景還是使用更可靠的遠端雲硬碟。
學習小結
(1)雲硬碟是雲虛擬機器的主要持久化儲存,與宿主機往往是分離的;
(2)雲硬碟支援動態新增和刪除,使用起來靈活方便;
(3)雲硬碟一般提供多種效能等級,最終效能會受儲存介質和容量大小的共同影響;
(4)部分虛擬機器型號會自帶高效能的本地磁碟,在可以容忍資料丟失風險時值得考慮;
6、雲上虛擬網路知多少
計算、儲存 和 網路 是IaaS的核心三要素,這一節是最後一項:網路。
虛擬私有網路VPC
VPC就是一張屬於你自己的內網,內網之間的裝置可以自由通訊。
VPC有以下一些核心概念需要了解:
(1)網段:私有網路內部IP區段,如192.168.0.0/16;
(2)子網:一個私有網路可以劃分多個子網,阿里雲稱之為"交換機";
(3)路由表:定義私有網路內流量的路由規則,決定資料包的"下一跳";
(4)閘道器:對進出私有網路的流量進行把守和分發的重要節點;
(5)安全組:私有網路虛擬機器進出流量的通行或攔截規則;
VPC的實踐建議:
在生產環境中不要讓系統自動建立VPC,而是自行先行建立VPC。這樣可以讓自己有一個明確的網路規劃,對整個VPC的把控和理解也更強!
在阿里雲上自行建立一個VPC
虛擬網路中的交換機
虛擬機器和專有網路的連線點在於虛擬機器的彈性網絡卡:一方面它和虛擬機器本體進行繫結,另一方面則嵌入某個私有網路的子網;
彈性網絡卡具有以下幾個特徵:
(1)一個虛擬機器可以繫結多塊網絡卡,有主網絡卡和輔助網絡卡之分;
(2)一塊網絡卡隸屬於一個子網,可以配置同一子網的多個私有IP;
(3)輔助網絡卡可以動態解綁,還能夠繫結到另一臺虛擬機器上;
對於公有IP的實踐建議:
儘量不要使用和依賴自動生成的公有IP,因為它不是固定的,會變化;儘量自行建立彈性IP並繫結到虛擬機器上!
虛擬網路對外“開口子”
需要訪問外網的虛擬機器數量有限:直接使用彈性IP;
需要訪問外網的虛擬機器數量很多:
(1)推薦使用NAT閘道器,這是一種常用的用來給VPC開口的手段,它允許多臺沒有公網IP的虛擬機器訪問外網;
(2)也可以使用VPN閘道器,這是一種基於網際網路提供私有加密的通訊,適合從任意其他私有設施安全地連線到VPC;
阿里雲NAT閘道器例項
多網連線的幾種方式
公有云上允許同時使用多個VPC,以便於構建更加複雜的網路架構;
對於雲端VPC和VPC互聯的場景:
(1)推薦使用對等連線(VPC Peering),簡單但它不具備傳遞性;
(2)也可使用專有網路設施實現互聯互通,雖強大但更復雜;
對於公有云私有網路和本地資料中心互聯(即所謂的混合雲架構)的場景:
(1)先考慮使用VPN通過公網線路建立連線通道;
(2)要保證延遲和頻寬可以考慮專線連線,現在公有云都提供了很多專線服務;
(3)一般專線還會和VPN結合使用保證高可用性;
7、雲端架構最佳實踐
在雲端的最佳實踐:與故障同舞,與伸縮共生!
面對故障,提升冗餘
(1)宿主機級別(最常見)故障:我們要保證多個虛擬機器不在同一臺宿主機甚至不在同一個機架上,例如可以使用AWS的置放群組、Azure的可用性集,阿里雲的部署集等;
(2)資料中心(可用區層面)級別故障:比如火災、雷擊等意外造成的服務停擺,我們可能需要多可用區的例項部署;
(3)區域級別(非常少見)故障:比如地震等不可抗力因素或人為過失引發,我們有兩種方案:一是多區域架構相關預案,二是多雲策略即同時選用多家雲廠商的公有云;
總之,面對故障的基本思路都是:化單點為多點,形成不同層面、不同粒度的冗餘。故障發生時,迅速地發現和切換,平滑的過渡。
隨機應變,彈性伸縮
產品形態:虛擬機器編組,例如AWS的EC2自動伸縮(Auto Scaling)、Azure的虛擬機器規模集(VM Scale Set)以及阿里雲的彈性伸縮服務;
最佳拍檔:負載均衡器,它可以和提供計算資源的彈性伸縮服務形成配合。
適合場景:無狀態類的計算需求。
阿里雲的彈性伸縮服務
8、雲上運維知多少
對於雲上運維,正確的理解應該是:雲不但沒有消滅運維,反而助推了運維的發展。原因有以下幾點:
(1)雲的引入讓我們在更高的層面去思考和解決問題,運維工作已經從偏硬體伺服器的瑣碎工作轉向基於軟體層面的服務;
(2)基礎的底層機房/架構運維仍然會繼續存在但會偏向頭部雲廠商,雲其實是提高了運維的效率,改變了運維的形態;
雲時代的運維利器
雲上的命令列工具,如AWS CLI/Azure CLI/阿里雲CLI。
資源編排類服務,如AWS CloudFormation/Azure ARM Template/阿里雲ROS。
雲上運維工作的組成
(1)傳統的運維工作:監控、部署、升級 及 備份(得力助手:映象 和 快照);
(2)遷移:傳統業務逐步上雲的過程中一定會面臨的遷移工作,建議先對雲廠商的官方支援調查清楚;
(3)和雲廠商的對接工作:熟讀文件,吃透雲端計算的眾多特性,準確地與客服溝通;
(4)很強的管理屬性:不僅僅是雲上資源的管理,更要深入到流程和制度的管理層面;比如:雲資源的命名、開通、清理等操作規範;各類雲上安全的控制和最佳實踐;所有云資源的負責人、所屬資源組和許可權體系;
(5)成本管理:應當有專人對成本進行監控和分析,建議按月組織資源的使用方進行成本消耗的回顧,杜絕成本浪費;
高明的雲上運維應該是:既要足夠高效地為應用開發賦能,也要有適當的管理和約束。
二、腦圖分享
點此檢視完整腦圖
參考資料
何愷鐸,極客時間《深入淺出雲端計算》專欄(推薦訂閱學習)
作者:周旭龍
出處:https://edisonchou.cnblogs.com
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結。