云計算基礎技術概覽
- 計算類產品主要提供算力,支持業務運行,例如網站、辦公軟件、數據分析等計算能力,目前典型的產品主要是虛擬化和容器,在公有云上的云主機本質也是虛擬機。
- 網絡類產品主要滿足資源的網絡連通性和隔離,傳統數據中心的網絡,園區網絡等場景,在云上的虛擬機也同樣需要虛擬網絡,例如虛擬私有云VPC,該邏輯拓撲與傳統網絡類似。
存儲類產品一般分為三大類:
- 塊存儲:具備高性能和低時延的特點,用各種高IO需求的場景。
- 文件存儲:能滿足多服務器間的文件共享,或者企業團隊部門的文件共享。
- 對象存儲:扁平化架構,橫向擴展方便,適合做云存儲池,用于海量數據存儲、冷數據備份、軟件倉庫等場景。
虛擬化技術
虛擬化技術可將單臺物理服務器虛擬為多臺虛擬機使用,多臺虛擬機共享該物理服務器的硬件資源。
- 虛擬化本質上是由磁盤文件和描述文件組成,封裝在同一個文件中。
- 服務器上運行多個虛擬機,各自封裝,互相隔離,即存在多個文件夾。
- 這些文件夾又可以存放在底層存儲提供的文件系統上,因此實現同一介質可以存放或運行多個虛擬機。
虛擬化的本質就是將原先的物理設備進行邏輯化,轉化成一個文件夾或文件,實現軟硬件解耦。
- 在計算機技術中,虛擬化(技術)一種資源管理技術,是將計算機的各種實體資源(CPU、內存、磁盤空間、網絡適配器等),予以抽象、轉換后呈現出來并可供分割組合為一個或多個電腦配置環境。由此,打破實體結構間的不可切割的障礙,使用戶可以比原本的配置更好的方式來應用這些電腦硬件資源。
- 從圖中我們可以了解到,通過虛擬化,原本的硬件服務器被分割成一個個文件,而這一個個文件也代表著一個個虛擬機。
虛擬化與云計算
虛擬化是實現云計算的核心技術,但不等同于云計算。云計算的內容維度要比虛擬化大得多。
- 虛擬化是云計算的關鍵技術,旨在將物理資源抽象為邏輯資源,進而能夠二次分配,特點是支撐資源池的彈性敏捷,靈活調度,同時也具備的分布式調度、資源高可用的能力。
- 云計算是一種服務,突出其按需的商業模式,使得用戶能像用水用電一樣地使用云資源。其敏捷的特點有依賴虛擬化技術實現。
虛擬化的特點
虛擬機的特點:
- 分區:用一臺物理服務器上可以運行多臺虛擬機,也意味著虛擬化層擁有為虛擬機劃分底層服務器資源的能力。我們把這個能力叫做分區。
- 隔離:同一服務器上的虛擬機若有一臺故障或者中病毒,不會影響到其他虛擬機的使用。這就要求虛擬機具備最基本的隔離能力。
- 封裝:虛擬機的本質是以文件的形式存在于虛擬化系統中,可以通過移動文件或者復制粘貼的形式對虛擬機進行遷移。
- 獨立:在遷移虛擬機后無需對服務器做任何修改即可運行虛擬機(相當于上層操作系統與硬件解耦合),所以這里的獨立主要指的是獨立于硬件。
計算虛擬化中的重要概念
- Hypervisor:我們經常把它稱為虛擬化軟件層或者虛擬機監視器,通過Hypervisor,我們可以實現按需使用物理機硬件資源的目的。目前主流的幾個開源的虛擬化技術有:Xen、KVM等。
計算資源種類
計算的本質是獲得信息的一種過程。在ICT行業中,我們需要很多計算資源,來將數據做運算處理,從而得到對應的信息。
- 計算機程序運行時所需的CPU資源、內存資源、硬盤資源和網絡資源,指計算中所需的各種資源。一般地,計算資源包括CPU,GPU,內存。
- CPU(Central Processing Unit,中央處理器)作為計算機系統的運算和控制核心,是信息處理、程序運行的最終執行單元。
- 內存(Memory)是計算機的重要部件之一,也稱內存儲器和主存儲器,它用于暫時存放CPU中的運算數據,與硬盤等外部存儲器交換的數據。
- GPU(Graphics Processing Unit,圖形處理器),又稱顯示核心、視覺處理器、顯示芯片,是一種專門在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上做圖像和圖形相關運算工作的微處理器。
計算在云計算中的服務形態
- 彈性云服務器(Elastic Cloud Server,ECS)是由CPU、內存、操作系統、云硬盤組成的基礎的計算組件。彈性云服務器創建成功后,用戶就可以像使用自己的本地PC或物理服務器一樣,在云上使用彈性云服務器。
- 彈性伸縮(Auto Scaling)可根據用戶的業務需求和預設策略,自動調整計算資源使云服務器數量自動隨業務負載增長而增加,隨業務負載降低而減少,保證業務平穩健康運行。
- 鏡像(lmage Service)是用于創建服務器或磁盤的模板。鏡像服務提供鏡像生命周期管理能力。可以通過服務器或外部文件創建系統盤鏡像或數據盤鏡像,也可以使用彈性云服務器或云服務器備份創建帶數據盤的整機鏡像。
容器的概述
容器是一個標準化的單元,是一個輕量級、可移植的軟件打包技術。它將軟件代碼及其相關依賴打包,使應用程序可以在任何計算介質中運行。簡單來講,容器就像一個標準化的盒子,能夠裝很多不同類型的東西,并且裝完后能夠塞進不同類型的柜子里。
?容器的特性:
- 打包:將軟件打包成標準化單元進行開發、遷移和部署。
- 隔離性:計算、存儲、網絡等資源彼此隔離。
- 高效性:輕量、快速啟停、快速部署與遷移。
- 職責分工明確:開發專心寫代碼,運維專注基礎環境配置。
容器技術發展歷史
容器發展全景圖,容器虛擬化在推廣應用中面臨兩大難題逐漸被攻破:
- 統一平臺
- 易用性
- 容器技術最早可以追溯到1979年UNIX系統中的chroot,最初是為了方便切換root日錄,為每個進程提供了文件系統資源的隔離,這也是OS虛擬化思想的起源。
- 2000年,BSD吸收并改進了chroot技術,發布了FreeBsD Jails。FreeBsD Jails除文件系統隔離外,還添加了用戶和網絡資源等的隔離,每個Jail還能分配一個獨立IP,進行一些相對獨立的軟件安裝和配置。
- 2005年SWsoft公司發布了OpenVz,OpenVz和Solaris Containers非常類似,通過打了補丁的Linux內核來提供虛擬化、隔離、資源管理和檢查點。OpenVz 標志著內核級別的虛擬化真正成為主流,之后不斷有相關的技術被加入。
- 2006年Google發布了Process Containers,Process Containers記錄和隔離每個進程的資源使用(包括CPU、內存、硬盤I/0、網絡等),后改名為Cgroups(Control Groups),并在2007年被加入Linux內核2.6.24版本中。
- 2008年出現了第一個比較完善的LXC容器技術,基于已經被加入內核的Cgroups和Linux namespaces實現。不需要打補丁,LXC就能運行在任意vanila內核的Linux上。
- 2013年Docker誕生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)內部的項目,和Warden類似,Docker最初也用了LXC,后來才自己寫了libcontainer替換了LXC。和其它容器技術不同的是,Docker圍繞容器構建了一套完整的生態,包括容器鏡像標準、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等。
- 2014年Core0s創建了rkt,為了改進Docker在安全方面的缺陷,重寫的一個容器引擎,相關容器工具產品包括:服務發現工具etcd和網絡工具flannel等。
- 2016年微軟公司發布基于Windows的容器技術Hyper-V Container,Hyper-V Container原理和Linux下的容器技術類似,可以保證在某個容器里運行的進程與外界是隔離的,兼顧虛擬機的安全性和容器的輕量級。
容器和虛擬化的架構對比
- 容器和虛擬機具有相似的資源隔離和分配優勢,但功能不同,因為容器虛擬的是操作系統而不是硬件,容器更便攜,更高效。
- 從容器和虛擬化的架構圖可以看出,容器是沒有虛擬化層的,這也是為什么我們通常把容器稱為輕量級虛擬化技術的原因。也正因為沒有虛擬化層,使得運行在容器中的應用比運行在虛擬機中的應用性能更強。
- 容器因具有許多優勢而變得流行起來。下面列出的是容器的一些好處:
- 敏捷應用程序的創建和部署:與使用 VM 鏡像相比,提高了容器鏡像創建的簡便性和效率。
- 持續開發、集成和部署:通過快速簡單的回滾(由于鏡像不可變性),支持可靠且頻繁的容器鏡像構建和部署
- 跨云和操作系統發行版本的可移植性:可在 Ubuntu、RHEL、CoreOs、本地、Google Kubernetes Engine和其他任何地方運行。
- 以應用程序為中心的管理:提高抽象級別,從在虛擬硬件上運行 OS 到使用邏輯資源在 OS 上運行應用程序。
- 松散耦合、分布式、彈性、解放的微服務:應用程序被分解成較小的獨立部分并且可以動態部署和管理,而不是在一臺大型單機上整體運行
- 資源隔離:可預測的應用程序性能
- 資源利用:高效率和高密度
容器和虛擬機的區別
- 容器是應用層的抽象,將代碼和依賴項打包在一起。多個容器可以在同一臺機器上運行,并與其他容器共享操作系統內核,每個容器作為用戶空間中的獨立進程運行。容器占用的空間比虛擬機少,可以處理更多應用程序,并且需要更少的CPU和內存資源
- 虛擬機(VM)是將一臺服務器變成多臺服務器的物理硬件的抽象。管理程序允許多個VM在一臺機器上運行。每個VM都包含操作系統、應用程序、必要的二進制文件和庫的完整副本,占用幾十GB。VM的啟動速度也可能很慢。
- 容器鏡像:專用于運行特定服務,通常只包含運行該服務所需的上下文內容,許多廣泛使用的鏡像都只有幾十MB,甚至幾MB大小。
- 虛擬機鏡像:需要提供包括內核在內的通用進程運行環境,它的鏡像偏向于大而完整的全功能集合,即使一個最小的精鏡像的體積也有幾百MB。
容器在云計算的服務形態
- 云容器引擎(Cloud Container Engine)提供高可靠高性能的企業級容器應用管理服務,支持Kubernetes社區原生應用和工具,簡化云上自動化容器運行環境搭建,面向云原生2.0打造CCE Turbo容器集群,計算、網絡、調度全面加速。
- 云容器實例(Cloud Container Instance,CCl)服務提供 Serverless Container(無服務器容器)引擎,讓用戶無需創建和管理服務器集群即可直接運行容器。
- 容器鏡像服務(Software Repository for Container,簡稱SWR)是一種支持鏡像全生命周期管理的服務,提供簡單易用、安全可靠的鏡像管理功能,幫助用戶快速部署容器化服務。用戶可以通過界面、社區CLI和原生API上傳、下載和管理容器鏡像。
- 容器鏡像服務可配合云容器引擎CCE、云容器實例CCI使用,也可單獨作為容器鏡像倉庫使用。?