1. 程式人生 > 實用技巧 >雲端計算與openstack學習(二)

雲端計算與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的知識、技能以及故障排查技巧。

包含哪些內容?


如下圖,兩大塊:

640

預備知識
因為面向初學者,首先會有虛擬化和雲端計算的“預備知識”,會介紹KVM,IaaS等技術。

OpenStack核心
這是主要內容,包含OpenStack的架構和和各個核心元件。將會通過大量的案例、操作步驟、截圖、日誌來幫助大家理解OpenStack各元件是如何工作的。
其目標是讓各位可以根據客戶的需求進行配置和調整。

為啥叫《玩轉OpenStack》?

每次的內容只包3-6個知識點,這也是我把教程命名為《玩轉OpenStack》的原因。雖然是碎片化推送,但整個教程是系統、連貫和完整的,只是化整為零了。


虛擬化

upload-ueditor-p_w_picpath-20160302-1456872106

OpenStack是雲作業系統,要學習OpenStack,首先需要掌握一些虛擬化和雲端計算的相關知識。

虛擬化

虛擬化是雲端計算的基礎。簡單的說,虛擬化使得在一臺物理的伺服器上可以跑多臺虛擬機器,虛擬機器共享

物理機的CPU、記憶體、IO硬體資源,但邏輯上虛擬機器之間是相互隔離的。

物理機我們一般稱為宿主機(Host),宿主機上面的虛擬機器稱為客戶機(Guest)。

那麼Host是如何將自己的硬體資源虛擬化,並提供給Guest使用的呢?

這個主要是通過一個叫做Hypervisor的程式實現的。

根據Hypervisor的實現方式和所處的位置,虛擬化又分為兩種:

1型虛擬化和2型虛擬化

1型虛擬化

Hypervisor直接安裝在物理機上,多個虛擬機器在Hypervisor上執行。Hypervisor實現方式一般是一個

特殊定製的Linux系統。Xen和VMWare的ESXi都屬於這個型別。


upload-ueditor-p_w_picpath-20160302-1456872106

2型虛擬化

物理機上首先安裝常規的作業系統,比如Redhat、Ubuntu和Windows。Hypervisor作為OS上的

個程式模組執行,並對管理虛擬機器進行管理。KVM、VirtualBox和VMWareWorkstation都屬於這個

型別。

upload-ueditor-p_w_picpath-20160302-1456872106

理論上講:

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

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的模式


upload-ueditor-p_w_picpath-20160304-1457044908

spacer.gifUbuntu啟動後,用以下命令確認CPU支援虛擬化

#egrep-o'(vmx|svm)'/proc/cpuinfo#vmx

確認Libvirtd服務已經啟動

#servicelibvirt-binstatuslibvirt-binstart/running,process1478

啟動第一個KVM虛機

upload-ueditor-p_w_picpath-20160302-1456872106

本節演示如何使用virt-manager啟動KVM虛機。

首先通過命令virt-manager啟動圖形介面

#virt-manager

upload-ueditor-p_w_picpath-20160307-1457304718

點上面的圖示建立虛機

upload-ueditor-p_w_picpath-20160307-1457304719

給虛機命名為kvm1,這裡選擇從哪裡啟動虛機。如果是安裝新的OS,可以選擇第一項。如果已經有安裝好的映象檔案,
選最後一項(如上圖)

接下來需要告訴virt-manager映象的位置。

upload-ueditor-p_w_picpath-20160307-1457304719

點選“Browser”

upload-ueditor-p_w_picpath-20160307-1457304719

在我的系統中存放了一個cirros-0.3.3-x86_64-disk.img映象檔案。cirros是一個很小的linux映象,非常適合測試用。大家可以到http://download.cirros-cloud.net/下載,然後放到/var/lib/libvirt/p_w_picpaths/目錄下,這是KVM預設查詢映象檔案的地方。

upload-ueditor-p_w_picpath-20160307-1457304719

為虛擬機器分配CPU和記憶體

upload-ueditor-p_w_picpath-20160307-1457304719

點選“Forward”,再確認一下資訊,就可以啟動虛機了。

upload-ueditor-p_w_picpath-20160307-1457304719

virt-manager會開啟虛機kvm1的控制檯視窗,可以看到啟動情況

upload-ueditor-p_w_picpath-20160307-1457304720

virt-manager可以對虛機進行各種管理操作,介面直觀友好,很容易上手。同時我們也可以用命令virsh管理虛機,比如檢視宿主機上的虛機

[email protected]:~#virshlist

IdNameState

--------------------------------

8kvm1running

至此,第一個虛機已經跑起來了,採用的都是預設設定,後面我們會逐步討論有關虛


轉載於:https://blog.51cto.com/risingair/1868065