最近訂閱學習了《深入淺出雲計算》專欄,一口氣學完之後,做了一些總結筆記形成此文,特分享與你,希望對你有所幫助!本文為上半部分,主要總結了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資料庫等應用;
使用雲上的本地磁盤
雲上也可以選擇使用帶有本地磁盤的虛拟機型,啟動後本地磁盤會自動被挂載。
它主要有兩種适合的應用場景:
(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的把控和了解也更強!
虛拟網絡中的交換機
虛拟機和專有網絡的連接配接點在于虛拟機的彈性網卡:一方面它和虛拟機本體進行綁定,另一方面則嵌入某個私有網絡的子網;
彈性網卡具有以下幾個特征:
(1)一個虛拟機可以綁定多塊網卡,有主網卡和輔助網卡之分;
(2)一塊網卡隸屬于一個子網,可以配置同一子網的多個私有IP;
(3)輔助網卡可以動态解綁,還能夠綁定到另一台虛拟機上;
對于公有IP的實踐建議:
盡量不要使用和依賴自動生成的公有IP,因為它不是固定的,會變化;盡量自行建立彈性IP并綁定到虛拟機上!
虛拟網絡對外“開口子”
需要通路外網的虛拟機數量有限:直接使用彈性IP;
需要通路外網的虛拟機數量很多:
(1)推薦使用NAT網關,這是一種常用的用來給VPC開口的手段,它允許多台沒有公網IP的虛拟機通路外網;
(2)也可以使用VPN網關,這是一種基于網際網路提供私有加密的通信,适合從任意其他私有設施安全地連接配接到VPC;
多網連接配接的幾種方式
公有雲上允許同時使用多個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)成本管理:應當有專人對成本進行監控和分析,建議按月組織資源的使用方進行成本消耗的回顧,杜絕成本浪費;
高明的雲上運維應該是:既要足夠高效地為應用開發賦能,也要有适當的管理和限制。
二、腦圖分享
參考資料
何恺铎,極客時間《
深入淺出雲計算》專欄(推薦訂閱學習)