天天看點

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

第2章 阿裡雲基礎技術

阿裡雲經過12年的發展,以IaaS、PaaS分層為标準的雲計算基礎技術已經非常成熟,同時圍繞這兩層的泛網絡、泛存儲、泛安全等對雲計算攸關的技術也起着關鍵支撐作用。當然,阿裡雲的核心技術有很多,包括但不限于資料庫、大資料、IoT、AI等技術。限于篇幅,本章不會涉及這些内容,後續章節主要是介紹IaaS和PaaS層及相關的泛網絡、泛存儲、泛安全技術原理。

2.1 IaaS

什麼是IaaS(Infrastructure as a Service,基礎設施即服務)?NIST(美國國家标準與技術研究院) 對IaaS的定義如下:

向使用者提供計算、存儲、網絡及其他計算資源的能力,使用者可以基于此部署和運作任意軟體包括作業系統和應用,使用者可以控制作業系統、存儲和部署的應用,也可以對網絡元件(如主機防火牆)進行有限控制,但不能管理和控制底層的雲基礎設施。

阿裡雲作為雲服務商,IaaS 是其傳遞基礎設施服務的一種形式。從廣義上說,IaaS基于網際網路或者内聯網,為使用者提供按需使用的存儲、計算、網絡、安全等資源來部署和運作作業系統及各種應用程式,并産生與之相比對的按量租賃資源費用。靈活、高效的資源彈性伸縮能力,以及按量付費的服務方式,使得IaaS 服務成本相比于一次性IDC 基礎設施和硬體投入具有顯著的優勢。從狹義上說,IaaS 基于虛拟化技術和分布式排程管理實作CPU 計算單元、塊存儲/ 對象存儲、網絡等資源的抽象隔離與內建組成即時服務單元,憑借靈活的彈性伸縮能力和強大的穩定性支撐上層系統(作業系統、中間件和應用等),實作按需管理與永續運作。如圖2-1 所示為IaaS 架構示意圖。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-1 IaaS 架構示意圖

2.1.1 阿裡雲IaaS 産品體系與應用場景

伴随着國内移動網際網路和數字經濟發展的浪潮,新的應用開發模式、體系架構、傳遞和運維模式不斷湧現,業界技術呈現快速疊代和不斷進化的發展态勢。阿裡雲曆時十多年,整個IaaS 産品體系始終保持高速疊代和積極市場響應, 從2009 年推出首款IaaS産品ECS(Elastic Compute Service),到今天涵蓋“計算”“存儲”“網絡”“安全”産品系列;從寥寥數款面向個人使用者的小規格雲主機産品形态,到“通用雲伺服器”“GPU/FPGA 雲伺服器”“神龍裸金屬伺服器”“超級計算叢集SCC”“雲桌面”“彈性伸縮”“彈性容器執行個體”“VPC(Virtual Private Cloud)”“負載均衡”“NAT/VPN/ 智能網關”“高速通道”“對象/ 檔案/ 塊存儲”等累計200 多款IaaS 相關産品,阿裡雲已經進化形成相對完整的IaaS 計算解決方案簇。阿裡雲IaaS 産品簇如圖2-2 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-2 阿裡雲IaaS 産品簇

豐富的雲産品及産品組合覆寫了越來越多的企業應用場景,阿裡雲IaaS産品服務支援的典型應用場景包括:

    • 企業建站與服務 :通過阿裡雲 IaaS 雲資源包,即 ECS/RDS(Relational Database Service)/OSS(Object Storage Service)/SLB(Server Load Balancer) 搭建企業Web 官網,或者基于Web 或移動網際網路應用服務站點,使站點具備負載均衡和雲資源彈性伸縮能力、DDoS(Distributed Denial of Service)防攻擊安全防護能力,通過CDN(Content Delivery Network)加速還可以實作網站在不同地域秒開。
    • 網際網路遊戲:通過阿裡雲 IaaS 産品“ECS+GPU 虛拟化執行個體”“OSS 存儲”“RDS 資料庫和緩存”以及“CDN 加速”等為雲遊戲提供一站式營運維護解決方案。比如面向資源和遊戲的彈性排程與政策,可實作更高的資源使用效率, 低延時串流技術和服務端的渲染能力專門為多媒體雲端運算服務。未來還将開放更多的業務功能及營運管理API(Application Programming Interface),支援使用者的個性化産品定制和營運政策。
    • 大資料分析:利用阿裡雲 IaaS 産品DTS(Data Transmission Service)将資料從多資料源導入雲上MaxComputer(大資料離線計算)和Blink(線上計算),通過Dataworks 開發與治理建構實時離線一體化資料倉庫,滿足企業實時推薦、風控和分析業務需求。
    • 視訊雲與直播:通過阿裡雲視訊直播服務實作移動端的推拉流能力,解決視訊直播中手機端的推拉流問題;同時移動端利用MQTT(Message Queuing Telemetry Transport)消息服務實作發送和接收消息,在轉發消息時利用内容安全服務對消息内容進行稽核。發送的消息可以被存儲在“表格存儲”中。
    • 雲災備:阿裡雲 IaaS 支援企業級雲災備方案,通過遷雲服務可以将業務切換到雲中運作,雲上的業務可以充分利用已有産品的同城容災、異地災備架構來保障業務的安全運作,也支援利用混合雲網關從雲中将資料回流到雲下機房,形成有效的災備閉環。
    • 雲存儲:通過阿裡雲 IaaS 産品“OSS 對象存儲”“SLS(Simple Log Service)日志存儲”“表格存儲”等與多種實時/ 離線計算架構、計算服務的對接方式,滿足結構化、半結構化、非結構化等不同資料類型的海量資料存儲需求,提供海量、高可靠、易擴充、高成本效益、全面支援計算生态的大資料存儲解決方案。

2.1.2 核心技術

阿裡雲IaaS 架構如圖2-3 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-3 阿裡雲IaaS 架構

傳統意義上的IaaS 層一般由IDC 基礎設施、虛拟化、 配套存儲與網絡軟體基礎設施、雲管平台組成,阿裡雲的IaaS 實作将管理功能納入飛天分布式系統層,虛拟化和網絡則被劃分到單獨層。下面主要介紹IDC 基礎設施、虛拟化,配套存儲與網絡軟體基礎設施相關技術。

1. IDC 基礎設施

混合雲IDC(Internet Data Center,網際網路資料中心)标準化建設方案可以參考GB 50174—2008《電子資訊系統機房設計規範》A 級或TIA-942《資料中心通信基礎設施标準》的T3+ 标準,混合雲IDC 機房應滿足安全可靠、節能環保、擴充靈活等條件,提供不間斷的服務,可用性在99.99% 以上。IDC 機房建設主要内容可以概括成“風”(包廂氣流)、“火”(消防)、“水”(水冷管道)、“電”(供配電)、“通信網”(用于資料通信的千兆或萬兆以太網)、“監控網”(弱電網監控),要求包括:機房基礎條件要求、供電設施要求、制冷設施要求、消防設施要求、機櫃及橋架要求、網絡設施要求、其他設施要求等。

IDC 終端機櫃層面布線有兩種方式:ToR(Top of Rack)和EoR(End of Rack),混合雲IDC 布線更多采用ToR 方式。一般情況下10~20 個機櫃背靠背放置一排組成一對機櫃組,再加上一組網絡交換裝置機櫃,組成一個POD(Point of Delivery)。ToR 布線方式簡化了伺服器機櫃與網絡機櫃間的布線,有利于在高密度伺服器布置場景下提升空間使用率,在分布式系統和大資料業務高速發展的今天,顯然ToR 是更适合混合雲業務場景的IDC 終端機櫃布線方式。

IDC 基礎設施最重要的部分是基礎網絡。在混合雲場景下,IDC 基礎網絡架構一般采用三層樹狀結構(核心—彙聚—接入),在基礎網絡傳遞實施中主要考慮以下關鍵點:伺服器接入規模、支援POD 數量、單POD 帶寬、單POD 支援伺服器數量、單POD 接入交換機數量、虛拟機網關ARP 規格、虛拟機遷移域等。為滿足高可用要求,在規劃混合雲IDC 基礎網絡時應該根據業務場景、網絡架構和維護複雜度明确網絡關鍵節點和鍊路備援,以及網絡接入層和網絡彙聚層高可用部署方案。

2. 虛拟化

阿裡雲IaaS 使用KVM(Kernel Virtual Machine)虛拟化技術實作IDC 實體資源(CPU、記憶體、網絡、存儲)的池化與抽象,并提供統一管控入口,實作彈性和可自定義的以ECS 虛拟機為中心的計算資源配置設定和管理服務。KVM虛拟化通過HVM(Hardware Virtual Machine)在主控端硬體資源之上提供定制規格的虛拟機,并通過鏡像和快照技術實作在虛拟機中運作guest OS,比如RedHat、CentOS、Ubuntu、Windows 等系統,使用者的具體業務應用跑在虛拟機的guest OS 之上,如圖2-4 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-4 阿裡雲IaaS KVM 虛拟化平台

阿裡雲通過KVM 虛拟化平台和飛天雲管理系統實作以下功能:

    • 通過提供虛拟機粒度的隔離部署環境及叢集規模的動态負載均衡,提高硬體資源使用率,降低采購成本。
    • 對 CPU、記憶體、存儲、網絡等資源做了更細粒度的靈活劃分,提高資源使用率。
    • 通過提供統一的資源管理、排程、配置,降低使用者的部署、維護成本。
    • 快速傳遞,快速響應使用者的新增機器需求。
    • 提供虛拟 CPU、記憶體、磁盤、網卡熱插拔功能,可以快速響應使用者已部署業務對計算、網絡、存儲服務能力的擴充需求。
    • 基于共享存儲,提供虛拟機 HA(High Availability,高可用)能力,一旦虛拟機所在的實體機出現故障,就可以在其他實體機上秒級恢複上面的虛拟機。
    • 提供虛拟機熱遷移功能,可以提高使用者業務的可服務性,降低使用者業務的停機時間。例如,在進行硬體維護時,并不會中斷該伺服器上的業務,可以把上面的虛拟機遷移到另一台伺服器上。結合阿裡雲飛天分布式存儲系統實作塊共享存儲機制,還可以大大縮短遷移的總時間。如果使用了Overlay 網絡,則可以在IDC 内部,甚至在IDC 之間遷移虛拟機。
    • 提供虛拟機鏡像機制,友善部署到鏡像中的業務或者業務組合,一次部署到處運作,也可以提供公共的基礎鏡像。
    • 提供對業務透明的虛拟存儲備份功能,可以大大提高使用者資料的可靠性。
    • 提供更加靈活的運維手段,提高運維自動化水準。
    • 利用 Overlay 網絡與實體網絡解耦,在進行業務網絡規劃時可以不必考慮實體網絡組網,尤其是網絡拓撲的限制。

KVM 使用的virtio 驅動協定類似于Xen 上使用的PV(Paravirtualization)驅動,都屬于半虛拟化 I/O。半虛拟化I/O 是相對于全虛拟化 I/O 而言的,比如QEMU 模拟的E1000 網卡、IDE 磁盤就屬于全虛拟化I/O,其缺點是性能差,通信效率低,基本原因在于全虛拟化裝置頻繁通路裝置寄存器,導緻過多的虛拟機退出,而虛拟機退出會消耗很多時間,代價很高;雙向通知沒有利用生産者—消費者模型中常用的按需通知,導緻太多虛拟機退出和中斷注入;全虛拟化裝置本身限制可能對一些新特性缺乏支援,比如網卡的解除安裝(offloading)特性,一些老式網卡就不支援。

半虛拟化 I/O 就是專門為虛拟化而生的,在提高資料傳輸效率、降低I/O開銷、新特性(比如網卡的某些進階解除安裝特性,有些新特性也可能是實體世界所沒有的)支援、穩定性方面都做了增強。

virtio 涉及前端部分(guest driver)和後端部分(QEMU),如圖2-5 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-5 virtio 技術架構

阿裡雲标準系統鏡像是能夠與 Hypervisor 協同工作的半虛拟化技術模式。本質上,半虛拟化弱化了對虛拟機特殊指令的被動截獲需求,将其轉化為使用者作業系統的主動通知。但是,半虛拟化需要修改使用者作業系統的源碼來實作主動通知。

下面通過分析virtio 網絡驅動的前後端實作來說明virtio 通信原理,其他virtio 裝置原理類似。

(1)虛拟化 I/O 驅動 virtio

從總體上看,virtio 組成可以分為四層(如圖2-6 所示),包括前端Guest系統中的各種驅動程式子產品,如 virtio-blk、virtio-net 等;後端 Hypervisor(實作在 QEMU上)中的處理程式子產品 virtio 後端 ;中間用于前後端通信的virtio 層和 virtio 環層——virtio 這一層實作的是虛拟隊列接口,是前後端通信的橋梁;virtio 環則實作了兩個環形緩沖區,分别用于儲存前端驅動程式和後端處理程式的執行資訊。嚴格來說,virtio 和 virtio 環可以被看成一層,virtio層屬于控制層,負責前後端之間的通知機制和控制流程;virtio 環層負責具體資料流轉發。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-6 virtio 組成

由于不同前端Guest 裝置(如塊裝置、網絡裝置、PCI 裝置、balloon 驅動等)的工作邏輯大同小異,單獨為每個裝置定義一套接口沒有必要,而且還要考慮跨平台的相容性問題。另外,不同後端 Hypervisor(如 KVM、Xen 等)的實作方式也有很大差異,是以就需要一套通用架構和标準接口(協定)來完成兩者之間的互動過程。virtio 就是這樣一套标準,利用它可以解決上述不通用的問題。

① vHost

vHost 是 virtio 的一種後端實作方案,如圖 2-7 所示。virtio 是一種半虛拟化的實作方案,需要虛拟機端和主控端端都提供驅動才能完成通信。通常,virtio 主控端端的驅動在使用者空間的 QEMU 中實作,而 vHost 在核心中實作,是核心的一個子產品(vHost_net.ko)。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖 2-7  vHost 實作

在virtio 的機制中,guest 與使用者空間的 Hypervisor 通信,會造成多次的資料拷貝和 CPU 特權級的上下文切換。guest 發包給外部網絡時,首先需要切換到 Host Kernel,Host Kernel 再切換到 QEMU 來處理 guest 的請求, Hypervisor在通過系統調用将資料包發送到外部網絡後,會切換回 Host Kernel ,然後再切換回 guest。這樣長的路徑無疑會帶來性能上的損失。

vHost 與 virtio 前端的通信主要采用 eventfd(一種事件驅動的機制)來實作,guest 通知 vHost 這一事件要借助 KVM.ko 子產品來完成。在vHost 初始化期間,會啟動一個工作線程來監聽 eventfd,一旦 guest 發出對 vHost 的 kick 事件,KVM.ko 就會觸發ioeventfd 通知 vHost,vHost 通過 virtqueue 的 avail ring 擷取資料,并将其設定為used ring。同樣,從 vHost 工作線程到 guest 的通信,也采用相同的機制,隻不過發出的是一個回調事件,KVM.ko 觸發 irqfd 通知 guest。

② vhost-user

在 vHost 實作方案中,由于 vHost 在核心中實作,guest 與 vHost 的通信方式,相較于原生的 virtio 方式,在性能上有了一定程度的提高,因為從 guest到 KVM.ko 的互動隻有一次使用者态的切換及資料拷貝。這種方式相對于原有的QEMU virtio 性能有較大的提高,但是vHost 轉發流程有核心線程的參與,是以整個轉發流程伴随着中斷、軟中斷及核心線程的切換,效率仍然較低。

為了避免這種情況,隻能将 vHost 從核心态移到使用者态,即 vhost-user。vhost-user 是 DPDK 中的一個庫。vhost-user 和 vHost 的實作原理是一樣的,都是采用 virtio 環共享記憶體,采用eventfd 機制完成事件通知的。不同于 vHost 在核心中實作,vhost-user 在使用者空間中實作,使用者空間中兩個程序之間的通信采用共享記憶體的方式,如圖 2-8 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖2-8 vhost-user 實作

SR-IOV host-user 基于 C/S 模式,是采用 UNIX 域套接字(UNIX Domain Socket)方式來完成程序間的事件通知和資料互動的,這種方式相比于 vHost中采用 ioctl 的方式大大簡化了。

vhost-user 基于 virtio 環這套通用的共享記憶體通信方案,隻要用戶端和伺服器端按照 virtio 環提供的接口實作所需功能即可。常見的實作方式是在 guest作業系統中實作用戶端,一般內建在 virtio 驅動上;在 QEMU 中實作伺服器端,或者在 OVS Snabbswitch 虛拟交換機等其他資料平面中實作。

(2)SR-IOV

SR-IOV(Single Root I/O Virtualization) 允許在虛拟機之間高效共享 PCIe(Peripheral Component Interconnect eXpress,快速外設元件互連)裝置,在硬體中實作,可允許建立的新裝置與虛拟機直接連接配接,獲得能夠與本機性能媲美的 I/O 性能。使用 SR-IOV 技術,單個 I/O 資源可被許多虛拟機共享。共享的裝置将提供專用 的資源,并且還可使用共享的通用資源。這樣,每台虛拟機都可通路唯一的資源。是以,啟用了 SR-IOV 并且具有适當的硬體和作業系統支援的 PCIe 裝置(如以太網端口)可以顯示為多個單獨的實體裝置,每個裝置都具有自己的 PCIe 配置空間。PCIe 裝置的 SR-IOV 實作如圖2-9 所示。

阿裡雲數字新基建系列——混合雲架構(第2章-1)第2章 阿裡雲基礎技術

圖 2-9 PCIe 裝置的 SR-IOV 實作

每個SR-IOV 裝置都可有一個實體功能,并且每個實體功能最多可有64000個與其關聯的虛拟功能。

① 實體功能

實體功能(Physical Function,PF)用于支援 SR-IOV 功能的 PCI 功能。實體功能包含 SR-IOV 功能結構,用于管理 SR-IOV 功能。實體功能是全功能的PCIe 功能,可以像其他任何 PCIe 裝置一樣發現、管理和處理。實體功能擁有完備配置的資源,可以用于配置或控制 PCIe 裝置。

② 虛拟功能

與實體功能關聯,虛拟功能(Virtual Function,VF)是一種輕量級 PCIe 功能,可以與實體功能以及與同一實體功能關聯的其他虛拟功能共享一個或多個實體資源。虛拟功能僅被允許擁有用于其自身行為的配置資源。

3. 配套存儲與網絡軟體基礎設施

阿裡雲IaaS 網絡主要分為後端網卡I/O 相關虛拟化(virtio-net)和專有網絡VPC 兩部分。上面介紹了virito 架構,對virtio-net 來說,主要是增加了在virito-pci 之上的二層資料包的傳遞,前後端之間解包、組包。對virtio-net 來說,後端通過vhost-net 方式實作,vhost-net 的實作主要包含兩部分:vhost,這部分實作了公用的vHost 機制(vhost-scsi 也會使用vHost 機制);vhost_net,這部分是與網絡相關的處理。vhost_net 甚至可以與SR-IOV 結合,VF 驅動alloc的rx buffer 不使用标準接口,而是直接向vhost_net 申請,vhost_net 從vring 中擷取rx buffer,位址轉換後交給VF 驅動。

總體來說,阿裡雲專有網絡VPC 包含vSwitch、Overlay、vRouter、Controller幾部分。Overlay 網絡将從虛拟機出來的L2 包放在一個虛拟隧道中進行傳輸,在隧道的兩端看起來像是同一個L2,進而使虛拟網絡和實體網絡解耦,組成邏輯大二層網絡。Overlay 和Underlay 是兩個對立的概念,Underlay 網絡是承載Overlay 網絡的實體網絡,Overlay 網絡是通過隧道技術在實體網絡之上建立的虛拟網絡。Overlay 網絡一般通過隧道協定來實作,比如VxLAN、GRE、STT,其中VxLAN 是阿裡雲用于建構Overlay 網絡的協定。阿裡雲Overlay 網絡在以下兩個地方實作:

    • 在 Hypervisor 所在的實體機上通過vSwitch 軟體實作。
    • 在專屬網絡交換裝置網關上實作。

通過後端網卡I/O 虛拟化和專有網絡VPC,阿裡雲IaaS 建構了一個隔離的網絡環境,并可以自定義IP 位址範圍、網段、路由表和網關等。此外,也可以通過專線VPN/GRE 等連接配接方式實作雲上VPC 與傳統IDC 的互聯,建構混合雲業務。有關阿裡雲IaaS 網絡的細節内容,将在第5章中介紹。

阿裡雲IaaS 存儲實作主要分為後端存儲I/O 虛拟化、鏡像/ 鏡像接口和存儲後端幾部分。後端存儲I/O 虛拟化利用virtio-blk 實作塊存儲I/O 通道,ECS虛拟機通過virtio-blk 和ring 的方式将I/O 請求傳遞到主控端的塊存儲資料控制平面,最後通過EBS 服務傳遞到後端分布式存儲系統。阿裡雲IaaS 存儲後端使用自研的飛天分布式存儲系統為IaaS 提供業務所需的塊共享存儲、對象存儲和檔案存儲等服務。“盤古”是飛天中的分布式檔案系統元件,盤古将并不高可靠的PC 伺服器中的磁盤連接配接成一個整體,向外提供安全、穩定、易用的檔案存儲能力。此外,盤古還提供了如下核心價值。

(1)資料安全

盤古通過資料多副本技術來保證資料安全,并不要求磁盤本身的高可用性。是以,盤古可以被架設在PC 伺服器和SATA 盤上,但并不要求磁盤本身通過RAID 來保證資料安全。同時,因為盤古将資料打散到整個叢集,在發生故障時能更快地做出資料的副本,進而保證資料安全。盤古預設有三個資料副本,能夠保證資料具有極高的安全性。

(2)服務高可用

存儲服務本身是任何IT 系統中最基本的服務之一,必須具有高可用性。盤古對外承諾兩個層次的高可用性:資料的高可用性,單機、單機櫃損壞時資料仍然能夠讀/ 寫;服務的高可用性,盤古檔案系統能夠不受大部分硬體故障的影響而繼續提供服務,這裡主要指盤古Master 的高可用性。

盤古通過多Master 機制來保證Master 的可用性。盤古的多Master 機制是主從機制,預設三台Master 中有一台為Primary Master,兩台為Secondary Master(熱備),主從之間通過Paxos 算法來保證記憶體處于一緻的狀态。使用Paxos 算法能夠在兩台Master 達成一緻時就傳回,在保證服務高可用的同時降低了服務的延時。

關于阿裡雲分布式存儲系統,我們将在後面的章節中詳細介紹其架構和實作方式。

繼續閱讀