雲端計算與openstack學習(二)
OpenStack涉及的知識領域極廣
可以說涵蓋了IT基礎設施的所有範圍。計算、儲存、網路、虛擬化、高可用、安全、備。。。。。。無所不包。
OpenStack是一個平臺,不是一個具體的實施方案
OpenStack的各個元件都採用Driver的架構,支援各種具體的實現技術。比如OpenStack的儲存服務Cinder只定義了上層抽象API,具體的實現交給下面的各種Driver,比如基於LVM的iSCSIDriver,EMC、IBM等商業儲存產品的Driver,或者是開源的分散式儲存軟體,比如Ceph、GlusterFS的Driver。
正是因為這種架構上的靈活性,使得初學者在學習OpenStack的時候不會像學習其他具體軟體產品那樣容易上手。
OpenStack本身是一個分散式系統
大多數搞IT的對分散式計算都不會太熟悉。直接衝進來會被OpenStack繁多的元件以及他們之間的互動方式搞得雲裡霧裡。
雖然OpenStack學習曲線比較陡峭,掌握起來難道較大,但OpenStack目前已經是IaaS雲的事實標準,而且前途一片光明,對於我們搞IT的如果能啃下這個骨頭,必定能大大提升自身的競爭力。
寫給誰看
這套教程的目標讀者包括:
OpenStack初學者
學習OpenStack也是經歷了一個艱辛曲折的過程。其主要原因在於沒有找到一個系統教授OpenStack的教程,特別是針對初學者。大部分資料都比較分散,對於初學者無法有機地串起來。也正是因為這個原因,編寫這樣一套教程的想法,能夠讓初學者能夠少走彎路,系統地學習、掌握和實踐OpenStack。
OpenStack實施工程師
把自己定位成一個能到一線攻城拔寨的實施工程師。所以這個教程也是針對OpenStack的實施人員,讓他們能夠通過學習真正掌握部署OpenStack的知識、技能以及故障排查技巧。
包含哪些內容?
如下圖,兩大塊:
預備知識
因為面向初學者,首先會有虛擬化和雲端計算的“預備知識”,會介紹KVM,IaaS等技術。
OpenStack核心
這是主要內容,包含OpenStack的架構和和各個核心元件。將會通過大量的案例、操作步驟、截圖、日誌來幫助大家理解OpenStack各元件是如何工作的。
其目標是讓各位可以根據客戶的需求進行配置和調整。
為啥叫《玩轉OpenStack》?
每次的內容只包3-6個知識點,這也是我把教程命名為《玩轉OpenStack》的原因。雖然是碎片化推送,但整個教程是系統、連貫和完整的,只是化整為零了。
虛擬化
OpenStack是雲作業系統,要學習OpenStack,首先需要掌握一些虛擬化和雲端計算的相關知識。
虛擬化
虛擬化是雲端計算的基礎。簡單的說,虛擬化使得在一臺物理的伺服器上可以跑多臺虛擬機器,虛擬機器共享
物理機的CPU、記憶體、IO硬體資源,但邏輯上虛擬機器之間是相互隔離的。
物理機我們一般稱為宿主機(Host),宿主機上面的虛擬機器稱為客戶機(Guest)。
那麼Host是如何將自己的硬體資源虛擬化,並提供給Guest使用的呢?
這個主要是通過一個叫做Hypervisor的程式實現的。
根據Hypervisor的實現方式和所處的位置,虛擬化又分為兩種:
1型虛擬化和2型虛擬化
1型虛擬化
Hypervisor直接安裝在物理機上,多個虛擬機器在Hypervisor上執行。Hypervisor實現方式一般是一個
特殊定製的Linux系統。Xen和VMWare的ESXi都屬於這個型別。
2型虛擬化
物理機上首先安裝常規的作業系統,比如Redhat、Ubuntu和Windows。Hypervisor作為OS上的
一個程式模組執行,並對管理虛擬機器進行管理。KVM、VirtualBox和VMWareWorkstation都屬於這個
型別。
理論上講:
1型虛擬化一般對硬體虛擬化功能進行了特別優化,效能上比2型要高;
2型虛擬化因為基於普通的作業系統,會比較靈活,比如支援虛擬機器巢狀。巢狀意味著可以在KVM虛擬機器
中再執行KVM。
KVM
下面重點介紹KVM這種2型虛擬化技術。
基本概念
在x86平臺上最熱門運用最廣泛的虛擬化方案莫過於KVM了。OpenStack對KVM支援得也最好,我
們的教程也理所當然選擇KVM作為實驗環境的Hypervisor。
KVM全稱是Kernel-BasedVirtualMachine。也就是說KVM是基於Linux核心實現的。
KVM有一個核心模組叫kvm.ko,只用於管理虛擬CPU和記憶體。
那IO的虛擬化,比如儲存和網路裝置由誰實現呢?
這個就交給Linux核心和Qemu來實現。
說白了,作為一個Hypervisor,KVM本身只關注虛擬機器排程和記憶體管理這兩個方面。IO外設的任務交
給Linux核心和Qemu。
Libvirt
大家在網上看KVM相關文章的時候肯定經常會看到Libvirt這個東西。Libvirt是啥?
簡單說就是KVM的管理工具。
其實,Libvirt除了能管理KVM這種Hypervisor,還能管理Xen,VirtualBox等。
OpenStack底層也使用Libvirt,所以很有必要學習一下。
Libvirt包含3個東西:後臺daemon程式libvirtd、API庫和命令列工具virsh
1.libvirtd是服務程式,接收和處理API請求;
2.API庫使得其他人可以開發基於Libvirt的高階工具,比如virt-manager,這是個圖形化的KVM管理工具,後面我們也會介紹;
3.virsh是我們經常要用的KVM命令列工具,後面會有使用的示例。
作為KVM和OpenStack的實施人員,virsh和virt-manager是一定要會用的。
準備KVM實驗環境
![upload-ueditor-p_w_picpath-20160304-1457044908](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-p_w_picpath-20160304-1457044908090007656.png)
KVM是OpenStack使用最廣泛的Hypervisor,本節介紹如何搭建KVM實驗環境
安裝KVM
上一節說了,KVM是2型虛擬化,是執行在作業系統之上的,所以我們先要裝一個Linux。Ubuntu、Redhat、CentOS都可以,這裡我們以Ubuntu14.04為例。
基本的Ubuntu作業系統裝好之後,安裝KVM需要的包
$sudoapt-getinstallqemu-kvmqemu-systemlibvirt-binvirt-managerbridge-utilsvlan
通過這些安裝包我們順便複習一下上一節介紹的KVM的相關知識。
1.qemu-kvm和qemu-system是KVM和QEMU的核心包,提供CPU,記憶體和IO虛擬化功能
2.libvirt-bin就是libvirt,用於管理KVM等Hypervisor
3.virt-manager是KVM圖形化管理工具
4.bridge-utils和vlan,主要是網路虛擬化需要,KVM網路虛擬化的實現是基於linux-bridge和VLAN,後面我們會討論。
Ubuntu預設不安裝圖形介面,手工安裝一下
sudoapt-getinstallxinit
sudoapt-getinstallgdms
udoapt-getinstallkubuntu-desktop
apt預設會到官網上去下載安裝包,速度很慢,我們可以使用國內的映象站點。
配置/etc/apt/sources.list
debhttp://mirrors.163.com/ubuntu/trustymainrestricteduniversemultiverse
debhttp://mirrors.163.com/ubuntu/trusty securitymainrestricteduniversemultiverse
debhttp://mirrors.163.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse
debhttp://mirrors.163.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse
debhttp://mirrors.163.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse
deb-srchttp://mirrors.163.com/ubuntu/trustymainrestricteduniversemultiverse
deb-srchttp://mirrors.163.com/ubuntu/trusty-securitymainrestricteduniversemultiverse
deb-srchttp://mirrors.163.com/ubuntu/trusty-updatesmainrestricteduniversemultiverse
deb-srchttp://mirrors.163.com/ubuntu/trusty-proposedmainrestricteduniversemultiverse
deb-srchttp://mirrors.163.com/ubuntu/trusty-backportsmainrestricteduniversemultiverse
然後執行下面命令更新安裝包index
#aptupdate
Redhat和CentOS安裝相對簡單,安裝過程中選擇虛擬化和圖形元件就可以了。
小竅門:Ubuntu預設是不允許root通過ssh直接登入的,可以修改/etc/ssh/sshd_config,設定
PermitRootLoginyes
然後重啟ssh服務即可
#servicesshrestartsshstop/waitingsshstart/running,process27639
在虛擬機器上做實驗
作為2型虛擬化的KVM,是支援虛擬化巢狀,這使得我們可以在虛擬機器中實驗KVM。比如我在VMWareWorkstation中安裝了一個Ubuntu14.04的虛擬機器,為了能讓KVM能建立巢狀的虛機,要把CPU的虛擬化功能開啟。如下圖在VMWare中設定以下CPU的模式
Ubuntu啟動後,用以下命令確認CPU支援虛擬化
#egrep-o'(vmx|svm)'/proc/cpuinfo#vmx
確認Libvirtd服務已經啟動
#servicelibvirt-binstatuslibvirt-binstart/running,process1478
啟動第一個KVM虛機
本節演示如何使用virt-manager啟動KVM虛機。
首先通過命令virt-manager啟動圖形介面
#virt-manager
點上面的圖示建立虛機
給虛機命名為kvm1,這裡選擇從哪裡啟動虛機。如果是安裝新的OS,可以選擇第一項。如果已經有安裝好的映象檔案,
選最後一項(如上圖)
接下來需要告訴virt-manager映象的位置。
點選“Browser”
在我的系統中存放了一個cirros-0.3.3-x86_64-disk.img映象檔案。cirros是一個很小的linux映象,非常適合測試用。大家可以到http://download.cirros-cloud.net/下載,然後放到/var/lib/libvirt/p_w_picpaths/目錄下,這是KVM預設查詢映象檔案的地方。
為虛擬機器分配CPU和記憶體
點選“Forward”,再確認一下資訊,就可以啟動虛機了。
virt-manager會開啟虛機kvm1的控制檯視窗,可以看到啟動情況
virt-manager可以對虛機進行各種管理操作,介面直觀友好,很容易上手。同時我們也可以用命令virsh管理虛機,比如檢視宿主機上的虛機
[email protected]:~#virshlist
IdNameState
--------------------------------
8kvm1running
至此,第一個虛機已經跑起來了,採用的都是預設設定,後面我們會逐步討論有關虛
轉載於:https://blog.51cto.com/risingair/1868065