一、虛擬化
1.什么是虛擬化
虛擬化,是指通過虛擬化技術將一台計算機虛擬為多台邏輯計算機。在一台計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
2.什么是虛擬化技術
虛擬化技術是一套解決方案。完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,例如VMM軟件或者某些操作系統本身。即使只是CPU支持虛擬化技術,在配合VMM的軟件情況下,也會比完全不支持虛擬化技術的系統有更好的性能。
3.虛擬化的類型
-
全虛擬化(Full Virtualization)
全虛擬化也成為原始虛擬化技術,該模型使用虛擬機協調guest操作系統和原始硬件,VMM在guest操作系統和裸硬件之間用於工作協調,一些受保護指令必須由Hypervisor(虛擬機管理程序)來捕獲處理。全虛擬化的運行速度要快於硬件模擬,但是性能方面不如裸機。
-
半虛擬化(Para Virtualization)
半虛擬化是另一種類似於全虛擬化的技術,它使用Hypervisor分享存取底層的硬件,但是它的guest操作系統集成了虛擬化方面的代碼。該方法無需重新編譯或引起陷阱,因為操作系統自身能夠與虛擬進程進行很好的協作。半虛擬化需要guest操作系統做一些修改,使guest操作系統意識到自己是處於虛擬化環境的,但是半虛擬化提供了與原操作系統相近的性能。
二、OpenStack與KVM、VMWare
1.OpenStack:開源管理項目
OpenStack是一個旨在為公共及私有雲的建設與管理提供軟件的開源項目。它不是一個軟件,而是由幾個主要的組件組合起來完成一些具體的工作。OpenStack由以下五個相對獨立的組件構成:
- OpenStack Compute(Nova)是一套控制器,用於虛擬機計算或使用群組啟動虛擬機實例;
- OpenStack鏡像服務(Glance)是一套虛擬機鏡像查找及檢索系統,實現虛擬機鏡像管理;
- OpenStack對象存儲(Swift)是一套用於在大規模可擴展系統中通過內置冗余及容錯機制,以對象為單位的存儲系統,類似於Amazon S3;
- OpenStack Keystone,用於用戶身份服務與資源管理以及
- OpenStack Horizon,基於Django的儀表板接口,是個圖形化管理前端。
這個起初由美國國家航空航天局和Rackspace在2010年末合作研發的開源項目,旨在打造易於部署、功能豐富且易於擴展的雲計算平台。OpenStack項目的首要任務是簡化雲的部署過程並為其帶來良好的可擴展性,企圖成為數據中心的操作系統,即雲操作系統。
2.KVM(Kernel-based Virtual Machine)基於內核的虛擬機
KVM是集成到Linux內核的Hypervisor,是X86架構且硬件支持虛擬化技術(Intel VT或AMD-V)的Linux的全虛擬化解決方案。它是Linux的一個很小的模塊,利用Linux做大量的事,如任務調度、內存管理與硬件設備交互等。
KVM最大的好處就在於它是與Linux內核集成的,所以速度很快。
3.VMWare (Virtual Machine ware)
VMWare (Virtual Machine ware)是一個“虛擬PC”虛擬機管理管理軟件。它的產品可以使你在一台機器上同時運行二個或更多Windows、DOS、LINUX系統。與“多啟動”系統相比,VMWare采用了完全不同的概念。多啟動系統在一個時刻只能運行一個系統,在系統切換時需要重新啟動機器。VMWare是真正“同時”運行,多個操作系統在主系統的平台上,就象標准Windows應用程序那樣切換。而且每個操作系統你都可以進行虛擬的分區、配置而不影響真實硬盤的數據,你甚至可以通過網卡將幾台虛擬機用網卡連接為一個局域網,極其方便。安裝在VMware操作系統性能上比直接安裝在硬盤上的系統低不少,因此,比較適合學習和測試。
三、OpenStack與VMWare
1.設計
VMware軟件套件是自底向上的架構,下端邊界為虛擬機管理器。像VMware的vSphere和vCloud director產品都是依賴於免費的ESX(i) 虛擬機管理器, ESX(i)虛擬機管理器為他們提供了非常優秀的部署架構。
VMware的軟件系統是封閉的,並且軟件的發展路線是完全遵循VMware自己的發展目標,用戶或消費者在此方面沒有任何控制權。
OpenStack作為一個開源系統,沒有任何一家單獨的公司在控制OpenStack的發展路線。
2.功能
(1)VMware vMotion
vMotion是vSphere DRS、DPM和主機維護三大功能的合集。其中虛擬機動態遷移允許將一台虛擬機在零關機的情況下由一台宿主機遷移到另一台上,這原本是需要共享存儲的支持的,但在vSphere 5.1中,VMware已經不需要通過共享存儲實現動態遷移了。當一台虛擬機由一個宿主機遷移到另一個上時,虛擬機的內存狀態和數據都要同步遷移過去。如果是共享存儲的情況,實際上數據是不需要進行遷移的,只需要變化指向數據存儲的鏈接而已。這在加速了遷移速度的同時也減少了在復制過程中網絡的負載。
(2)OpenStack 動態遷移
KVM動態遷移允許一個虛擬機由一個虛擬機管理器遷移到另一個,說的詳細一點,你可以來來回回將一台虛擬機在AMD架構主機與Intel架構主機上進行遷移,但是需要注意的是,64位的虛擬主機只能被遷移到64位的宿主機上,但是32位的則有32位和64位兩種選擇。在動態遷移過程中,不能再對虛擬機進行操作,但是虛擬機內的用戶還是可以在虛擬機內部繼續進行工作的。KVM主要還是依賴於共享存儲,某種程度上,這相對來說是需要一些資金投入的。
(3)OpenStack塊存儲遷移
在OpenStack當中,KVM支持塊存儲遷移,這也就是說虛擬機遷移不是必須需要共享存儲的支持的。在塊遷移的場景下,虛擬機的內存狀態與數據都將被遷移,但是遷移操作也需要消耗兩端的CPU資源並且操作花費時間較比共享存儲來說要長一些。在某些用戶場景當中,如果我們比較關注於主機的可維護性,並且不想花費過多經費,那么應用塊存儲遷移將是好的解決方案。同時,如果在沒有共享存儲的環境中,我們想對計算節點進行內核維護、安全升級,那么保證虛擬機服務不被打斷,塊存儲遷移也是理想選擇。
(4)VMware DRS 和 DPM
基於vMotion,DRS可以動態監控虛機機及宿主機的當前使用狀況,並且為宿主機的負載均衡提供支持。
基於vMotion, DPM將虛擬機從低負載宿主機遷移掉,並且關閉以達到減少電能損耗。當負載增長,DPM將宿主機重啟,並且部署新的虛擬機以滿足負載需要。
(5)OpenStack調度器
OpenStack包含了對於compute和volume的調度器,通過一系列的管理員設定的規則參數和過濾器,OpenStack調度器將虛擬機部署到合適的宿主機上。在過濾器方面,調度器是非常靈活的,用戶可以自己完成JSON格式的過濾器,並且過濾器還包含很多預定義的過濾器。雖然OpenStack調度器非常靈活,但是還是不能完全替代DRS,原因如下:
- 調度器用於選擇哪個宿主機進行虛擬機部署的靜態參考數據來源於Nova的數據庫。換句話說,就是發現宿主機已經有了4台虛擬機了,那么我們需要選擇一個新的宿主機去部署下一台虛擬機。
- 調度器只能在虛擬機部署階段影響部署的位置,一旦部署完成,虛擬機運行后則無法挪動虛擬機了。如果需要基於動態數據進行調度,那么調度器需要與外部監控解決方案如Nagios合作。總而言之,目前OpenStack調度器將只會對部署虛擬機環節有影響。
(6)High Availability(高可用)
在vSphere中,虛擬機級別的高可用性是允許在虛擬機或者ESX(i)主機出錯時,在不同宿主機部署相同的虛擬機。這里不要和容錯(FT)機制混淆,高可用的意義在於當有一些東西出錯了,可以在一定時間內自我修復。高可用是在硬件出問題的時候保證虛擬機的正常個工作,如果真的出錯了,那么只能在不同的ESX(i)主機上啟動虛擬機,這也可能造成服務的中斷。
目前並沒有官方聲明OpenStack支持虛擬機級別的高可用性,這個特性在Folsom版本被提出,但是后續又被放棄了。目前OpenStack有一個孵化項目Evacuate, 其作用是為OpenStack提供虛擬機級別高可用支持。
(7)Fault Tolerance(容錯)
VMware容錯機制是通過監控虛擬機的狀態和所有變化,將這些變化同步到第二台備份ESX(i)服務器之上。容錯的概念在於無論是主還是從宿主機出現問題,只要一方能正常工作,那么宿主機上的虛擬機都保持正常工作。
在OpenStack中沒有針對於容錯的功能,並且截至目前也沒有計划去完成這些功能。未來,KVM也不再支持鏡像操作功能。
四、OpenStack與Docker
OpenStack和Docker之間是很好的互補關系。Docker的出現能讓IaaS層的資源使用得更加充分,因為Docker相對虛擬機來說更輕量,對資源的利用率會更加充分。
Docker主要針對Paas平台,是以應用為中心。OpenStack主要針對Iaas平台,以資源為中心,可以為上層的PaaS平台提供存儲、網絡、計算等資源。
OpenStack項目的層級關系
- 第一層是基礎設施層,這一層主要包含Nova、Glance和Keystone,如果我們要想得到最基本的基礎設施的服務,必須安裝部署這三個項目。
- 第二層是擴展基礎設施層,這一層可以讓我們得到更多跟基礎設施相關的高級服務,主要包含Cinder、Swift、Neutron、Designate和Ironic等,其中Cinder提供塊存儲,Swift提供對象存儲,Neutron提供網絡服務,Designate提供DNS服務,Ironic提供裸機服務。
- 第三層是可選的增強特性,幫用戶提供一些更加高級的功能,主要包含Ceilometer、Horizon和Barbican,其中Ceilometer提供監控、計量服務,Horizon提供用戶界面,Barbican提供秘鑰管理服務。
- 第四層主要是消費型服務,所謂的消費型服務,主要是指第四層的服務都需要通過使用前三層的服務來工作。
第四層主要有Heat、Magnum、Sahara、Solum和Murano等,其中Heat主要提供orchestration服務,Magnum主要提供容器服務,Sahara主要提供大數據服務,我們可以通過Sahara很方便地部署Hadoop、Spark集群。Solum主要提供應用開發的服務,並且可以提供一些類似於CI/CD的功能。Muarno主要提供應用目錄的服務,類似於App Store,就是用戶可以把一些常用的應用發布出來供其他用戶去使用。最右邊是Kolla,Kolla的主要功能是容器化所有的OpenStack服務,便於OpenStack安裝部署和升級。
OpenStack中和Docker有關系的項目
主要包括Nova、Heat、Magnum、Sahara、Solum、Murano和Kolla等。由圖3得知,和Docker相關的大部分項目都在PaaS和SaaS層。
(1)Nova Docker Driver
這個Driver是OpenStack和Docker的第一次集成,主要是把Docker作為一種新的Hypervisor來處理,把所有的Container當成VM來處理。提供了一個Docker的Nova Compute Driver,集成很簡單,通過Docker REST API來操作Container。
(2)Heat Docker Driver
因為Nova Docker Driver不能使用Docker的一些高級功能,所以社區就想了另一個方法,和Heat去集成。
因為Heat采用的也是插件模式,所以就在Heat實現了一個新的Resource,專門來和Docker集成。這個Heat插件是直接通過REST API和Docker交互的,不需要和Nova、Cinder和Neutron等來進行交互。
(3)Magnum
在OpenStack和Docker集成的過程中,我們發現從OpenStack現有的項目中,找不到一個很好的集成點,雖然和Nova、Heat都做了集成的嘗試,但缺點很明顯,所以社區就開始了一個新的專門針對Docker和OpenStack集成的項目Magnum,用來提供容器服務。
Mangum的主要目的是提供Container服務的,它同時還可以和多個Docker集群管理系統集成,包括K8S、Swarm、CoreOS等。和這幾個平台集成的主要原因是能讓用戶可以很方便地通過OpenStack雲平台來集成K8S、CoreOS、Swarm這些已經很成型的Docker集群管理系統,促進Docker和OpenStack生態系統的融合。
(4)Murano
Murano是Mirantis貢獻的,並且也進了OpenStack Namespace。也和K8S集成了,用戶可以通過Murano使用K8S的功能,可以通過Murano部署Pod、Service、Replication Controller等。Murano主要是在OpenStack基礎上提供應用目錄服務。Muarno和Solum之間其實是有關系的,Solum主要是用來開發應用的,Solum把應用開發完后,可以通過Murano來發布。用戶可以通過Murano挑選自己需要的應用服務,通過應用服務組合構建自己的應用。
參考文章:
http://www.4u4v.net/shen-du-jie-xi-docker-he-openstack-xi-tong-ji-cheng.html