?轉載
在re:Invent大會上,亞馬遜的CTO沃格納?沃格爾斯(Werner Vogels)詳細介紹了AWS如何通過部署自定義硬件來創建與裸金屬性能相近的實例。
AWS reInvent已經成為每年最值得關注的科技盛會之一,對于技術人員而言,尤其是Amazon CTO Dr. Werner Vogels的keynote值得關注,每年的keynote都會講到一些技術的發展趨勢,那么來看看在剛剛過去的reInvent 2019上Dr. Werner Vogels講了些什么。
1. 虛擬化技術的發展
Vogels表示,虛擬化“從一開始就一直是云環境中計算部分的基礎”。隨著時間的推移,AWS已經“突破”了這項技術的界限。傳統虛擬化的問題是,所有用戶操作系統都在爭奪相同的資源,這通常會導致計算環境出現噪音,有時甚至不可靠。“我們開始思考如何從根本上改變這一點,”Vogels說,因為“舊式虛擬化”確實阻礙了用現代軟件架構構建的應用程序的性能。
AWS希望向其客戶提供云中裸金屬的性能,盡可能減少傳統云構建軟件的資源消耗。解決方案來自于亞馬遜在軟件開發方面取得的創新,然后將其應用于構建新的硬件。“如果我們從微服務、小型模塊中吸取經驗,并將其應用到硬件領域,會怎么樣”,Vogels說,“或許我們可以改變虛擬化的世界。”
于是AWS思考該怎么來改進虛擬化技術,出發點是怎么能讓用戶的虛擬機盡可能獲得和用一臺物理機同樣的性能,在設計這個新的虛擬化系統(代號為Nitro)的時候,AWS想的是軟件從單一的系統演進到微服務帶來的靈活度的優勢,他們希望同樣可以把這個優勢帶入到新的虛擬化系統中,使得這個系統更加模塊化,而不是像以前的虛擬化技術一樣,只能由hypervisor去對接所有的硬件。
按照這個思想,AWS首先在2013年的c3實例上,采用了將網絡模塊從原來的虛擬化技術體系offload到一塊單獨的硬件卡上,AWS用了差不多兩年的時間才讓這個技術得以成熟,有了這個為基礎,在之后的c4實例上,接著講ebs storage也offload到了單獨的硬件卡上,在c5實例上,則把local storage也offload了,也就意味著到了c5所有的io操作都offload到了單獨的硬件卡上,不用再消耗賣給用戶的機器上的cpu了,最后一步是把management的部分也offload了,同時寫了新的更為輕量級的Nitro Hypervisor。
從效果上,也很清楚的可以看到到了c5的版本,相比之前經典的虛擬化,無論在網絡io,storage io上都有明顯的性能提升,在整個機器的性能上,也能看到c5相比c4,已經更為接近物理機的性能。
除了性能以外,開始講到之前的虛擬化體系中最大的一個風險,就是安全,dom0其實就是一個linux,所以是可以登錄進去的,登錄進去后其實就擁有了巨大的權力,例如管理機器上所有的虛擬機,做個內存dump,而Nitro則把dom0去掉了(講到這觀眾席一陣掌聲),其實現的核心機制是只有通過Nitro Controller才能操作Nitro Hypervisor,并且是單向的,其他擴展出來的controller也只能通過Nitro Controller來操作,同樣Nitro Controller也不能反向操作擴展出來的Controller。
WS與以色列的Annapurna實驗室合作,開始研究Nitro,將網絡嵌入到一個單獨的卡中,并在2013年為一類新的C3實例提供動力。Annapurna的下一個任務是將處理過程也轉移到Nitro卡上,從而實現C4架構。這次合作非常成功,Annapurna加入了AWS。
2015年收購以色列芯片設計公司后,“我們開始研究C5,新的目標是將I/O裝載到單獨的卡上。”AWS還著眼于移動其虛擬機監控程序的一部分,并將其放在Nitro上,把硬件組件發展成一個全面的系統。
由于虛擬化系統的許多主要組件現在都在silicon上運行,AWS基礎設施軟件設計師能夠通過剝離hypervisor,使EC2實例更精簡、更可靠、更安全,只需運行最低限度的所需功能。這導致了功能上的下一次飛躍——新一代的EC2實例實現了AWS“幾乎像裸金屬一樣”的目標。
Vogels告訴與會者:“虛擬機監控程序很小,幾乎不影響用戶操作系統。”將功能裝載到硬件上不僅提高了性能,而且大大提高了安全性,限制了組件之間的通信,能夠方便的阻止不需要的功能和不良程序。
“Nitro成為了創新的基礎,”Vogels說,它允許AWS“做很多我們以前做不到的事情。” 由于Nitro平臺支持最新和最好的AWS計算環境,使得提供軟件實時更新、打補丁、虛擬機監控程序,以及創建諸如Outposts本地服務這樣的新系統都成為可能。
Nitro不僅支持虛擬機,還支持容器和無服務器服務。這一努力催生了Firecracker,它被用來提高AWS Fargate服務的效率,該服務為容器工作負載提供動力。AWS的首席軟件工程師Clare Liguori說,這種先進的方法允許Fargate在“虛擬化的框架下”運行由容器組成的應用程序的每個副本,從而更好地隔離客戶。
Ligouri在周四的主題演講中告訴與會者,AWS最初使用EC2實例來隔離Fargate上運行在無服務器模型中的容器化工作負載的空間,但這些實例通常“太重”。Firecracker是一種速度更快、重量更輕的高效容器平臺。Ligouri 說,“隨著我們在Firecracker上運行更多的Fargate,我們的效率越來越高”。
2. 持續演進的架構
亞馬遜目前正在開發一個新的數據平臺,直接在Nitro上運行,核心代碼在GitHub上向開發者開放。這個項目利用了containerd,一個開源項目,它是開放容器計劃的一部分。
Vogels指出,AWS Lambda無服務器系統也運行在Firecracker上,隨著無服務器越來越受歡迎,這將帶來更多的創新。當AWS首次推出Lambda時,它預計無服務器計算將主要吸引年輕的、有預算意識的公司。后來發現并非如此:“企業中正在迅速采用無服務器,”Vogels說。”
EBS講了后,總結了下三種典型架構:
Regional Architecture
這個簡單說就是用一個集群支持所有用戶,壞處就是如果集群出問題,所有用戶就全部受影響了。
Cell-Based Architecture
每個集群支持部分用戶,其中一個集群故障,只會影響其對應服務的用戶。
Shuffle Sharding Architecture
用戶群體復制N份,sharding后組合,每個集群服務組合后的用戶group,這樣就意味著每個用戶其實有多個集群在提供服務,而每個集群服務的又是不同的用戶group,所以組合情況夠多的情況下,每個集群故障影響的面就會大幅減少。
這三種架構確實是比較典型的降低故障影響面的架構體系,但說起來容易做起來其實非常難,尤其是這里面涉及到的數據一致性問題,感興趣的也可以去翻翻網上關于阿里異地多活的技術分享,對于大多數的場景,我認為能夠做到有兩個Region(可以是同一地域)同時服務所有用戶,在任何一個Region出問題都能快速切換,這基本就可以大幅降低blast radius,相對實現難度和代價也不會太大。
接著講到設計一個分布式系統是非常具備挑戰的,Amazon在過去這么多年積累了非常多的經驗,于是Amazon對這些進行了總結,對外提供了一個library,里面有很多Amazon自己實際的經驗的文章,講到這一片掌聲,我也簡單翻了下這網站,還是挺值得看的。
最后一個部分是講工業制造方面,在和云、AI結合后帶來的一些變化,這塊我覺得更偏case一些,不過可以看到的是AWS也越來越強調相應的技術在Amazon的使用。
整個keynote看下來給人的感覺還是很不錯的,可以看到AWS對技術的思考,創新,也會更讓技術人員認可AWS的技術領先性,推薦大家自己也去看看,尤其是技術人員,更尤其的是做基礎技術的,擴充視野是非常重要的,不能坐井觀天,而AWS reInvent現在顯然是擴充視野不可錯過的科技盛會。
編譯:若畫
原文:https://www.crn.com/news/cloud/amazon-s-werner-vogels-on-reinventing-virtualization