雲計算與openstack學習(二)

OpenStack 涉及的知識領域極廣 
可以說涵蓋了IT基礎設施的所有範圍。計算、存儲、網絡、虛擬化、高可用、安全、備。。。。。。無所不包。

OpenStack 是一個平臺,不是一個具體的實施方案
OpenStack的各個組件都採用Driver的架構,支持各種具體的實現技術。比如 OpenStack 的存儲服務Cinder只定義了上層抽象API,具體的實現交給下面的各種Driver,比如基於LVM的iSCSI Driver,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 和 VMWare Workstation 都屬於這個

類型。

upload-ueditor-p_w_picpath-20160302-1456872106

理論上講:

1型虛擬化一般對硬件虛擬化功能進行了特別優化,性能上比2型要高;

2型虛擬化因爲基於普通的操作系統,會比較靈活,比如支持虛擬機嵌套。嵌套意味着可以在KVM虛擬機

中再運行KVM。

 

KVM 


下面重點介紹KVM這種2型虛擬化技術。

基本概念

在 x86 平臺上最熱門運用最廣泛的虛擬化方案莫過於 KVM 了。OpenStack 對 KVM 支持得也最好,我

們的教程也理所當然選擇 KVM 作爲 實驗環境的 Hypervisor。

KVM 全稱是 Kernel-Based Virtual Machine。也就是說 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 需要的包 

$ sudo apt-get install qemu-kvm qemu-system libvirt-bin virt-manager bridge-utils vlan

 通過這些安裝包我們順便複習一下上一節介紹的 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 默認不安裝圖形界面,手工安裝一下 

sudo apt-get install xinit

sudo apt-get install gdms

udo apt-get install kubuntu-desktop

 apt 默認會到官網上去下載安裝包,速度很慢,我們可以使用國內的鏡像站點。

配置/etc/apt/sources.list 

deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

 然後執行下面命令更新安裝包 index

# apt update

Redhat 和 CentOS 安裝相對簡單,安裝過程中選擇虛擬化和圖形組件就可以了。

小竅門:Ubuntu 默認是不允許 root 通過 ssh 直接登錄的,可以修改 /etc/ssh/sshd_config,設置 

PermitRootLogin yes

 然後重啓 ssh 服務即可

# service ssh restartssh stop/waitingssh start/running, process 27639


在虛擬機上做實驗

作爲 2型虛擬化的 KVM,是支持虛擬化嵌套,這使得我們可以在虛擬機中實驗 KVM。 比如我在 VMWare Workstation 中安裝了一個 Ubuntu14.04 的虛擬機,爲了能讓 KVM 能創建 嵌套的虛機,要把 CPU 的虛擬化功能打開。如下圖在 VMWare 中設置以下 CPU 的模式


upload-ueditor-p_w_picpath-20160304-1457044908
 

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

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

 確認 Libvirtd 服務已經啓動

# service libvirt-bin statuslibvirt-bin start/running, process 1478

 

啓動第一個 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 管理虛機,比如查看宿主機上的虛機 

root@ubuntu:~# virsh list

Id    Name              State

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

8     kvm1              running

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章