OpenStack鏡像構(gòu)建操作手冊(cè)_第1頁
OpenStack鏡像構(gòu)建操作手冊(cè)_第2頁
OpenStack鏡像構(gòu)建操作手冊(cè)_第3頁
OpenStack鏡像構(gòu)建操作手冊(cè)_第4頁
OpenStack鏡像構(gòu)建操作手冊(cè)_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 OpenStack 鏡像構(gòu)建操作手冊(cè)目 錄 TOC o 1-3 h z u HYPERLINK l _Toc522787861 前言 PAGEREF _Toc522787861 h 3 HYPERLINK l _Toc522787862 1.手動(dòng)制作OpenStack鏡像 PAGEREF _Toc522787862 h 3 HYPERLINK l _Toc522787863 2.上傳鏡像 PAGEREF _Toc522787863 h 11 HYPERLINK l _Toc522787864 3.DIB工具介紹 PAGEREF _Toc522787864 h 13 HYPERLINK l _

2、Toc522787865 4.功能驗(yàn)證 PAGEREF _Toc522787865 h 15 HYPERLINK l _Toc522787866 5.總結(jié) PAGEREF _Toc522787866 h 17 HYPERLINK l _Toc522787867 6.參考文獻(xiàn) PAGEREF _Toc522787867 h 18前言本文以制作CentOS7.2鏡像為例,詳細(xì)介紹手動(dòng)制作OpenStack鏡像詳細(xì)步驟,解釋每一步這么做的原因。鏡像上傳到OpenStack glance,支持以下幾個(gè)功能:支持密碼注入功能(nova boot時(shí)通過-admin-pass參數(shù)指定設(shè)置初始密碼)支持根分區(qū)

3、自動(dòng)調(diào)整(根分區(qū)自動(dòng)調(diào)整為flavor disk大小,而不是原始鏡像分區(qū)大小)支持動(dòng)態(tài)修改密碼(使用nova set-password命令可以修改管理員密碼)手動(dòng)制作鏡像非常麻煩和耗時(shí),本文后面會(huì)介紹一個(gè)專門用于自動(dòng)化構(gòu)建鏡像的項(xiàng)目DIB,通過DIB只需要在命令行上指定elements即可制作鏡像,省去了重復(fù)下載鏡像、啟動(dòng)虛擬機(jī)配置鏡像的繁雜步驟。鏡像的宿主機(jī)操作系統(tǒng)為Ubuntu 14.04,開啟了VT功能(使用kvm-ok命令驗(yàn)證)并安裝了libvirt系列工具,包括virsh、virt-manager、libguestfs-tools等。手動(dòng)制作OpenStack鏡像1.1 下載鏡像訪問

4、官方鏡像地址下載,注意選擇中國的鏡像源,相對(duì)國外鏡像下載速度更快,進(jìn)入后選擇版本為7.2.1511,在isos目錄下下載x86_64的Minimal鏡像,如果網(wǎng)速不給力,最好不要選擇下載Netinstall鏡像,因?yàn)檫@會(huì)在安裝時(shí)聯(lián)網(wǎng)下載大量的軟件包,重新安裝時(shí)需要重新下載這些軟件包。1.2 創(chuàng)建虛擬機(jī)首先創(chuàng)建一個(gè)qcow2格式鏡像文件,用于虛擬機(jī)的根磁盤,大小10G就夠了。使用以下腳本創(chuàng)建并啟動(dòng)虛擬機(jī):啟動(dòng)完成后,使用vnc client連接或者使用virt-manager、virt-viewer連接。1.3 安裝OS進(jìn)入虛擬機(jī)控制臺(tái)可以看到CentOS的啟動(dòng)菜單,選擇Install Cent

5、os 7,繼續(xù)選擇語言后將進(jìn)入INSTALLION SUMMARY,其中大多數(shù)配置默認(rèn)即可,SOFTWARE SELECTION選擇Minimal Install,INSTALLATION DESTINATION需要選擇手動(dòng)配置分區(qū),我們只需要一個(gè)根分區(qū)即可,不需要swap分區(qū),文件系統(tǒng)選擇ext4或者xfs,存儲(chǔ)驅(qū)動(dòng)選擇Virtio Block Device,如圖:配置完成后就可以開始安裝了,在CONFIGURATION中設(shè)置root臨時(shí)密碼,只需要暫時(shí)記住這個(gè)臨時(shí)密碼,制作完后cloud-init會(huì)重新設(shè)置root初始密碼。大約幾分鐘后,即可自動(dòng)完成安裝配置工作,最后點(diǎn)擊右下角的reboo

6、t重啟退出虛擬機(jī)。1.4 配置OS安裝好系統(tǒng)后,需要進(jìn)行配置才能作為glance鏡像使用。首先啟動(dòng)虛擬機(jī)(雖然上一步執(zhí)行的是reboot,但貌似并不會(huì)自動(dòng)啟動(dòng)):如果云主機(jī)需要支持root ssh遠(yuǎn)程登錄,需要開啟root遠(yuǎn)程ssh登錄功能,修改配置文件/etc/ssh/sshd_config并修改PermitRootLogin值為yes,重啟ssh服務(wù)生效:注意:不建議開啟密碼登錄功能,使用密鑰登錄更安全。不建議開啟root遠(yuǎn)程登錄。為了加快安裝速度,可以配置為本地軟件源倉庫,若沒有本地鏡像倉庫,則選擇國內(nèi)的軟件源,相對(duì)官網(wǎng)的速度下載要快。acpidacpid是一個(gè)用戶空間的服務(wù)進(jìn)程, 用來

7、處理電源相關(guān)事件,比如將kernel中的電源事件轉(zhuǎn)發(fā)給應(yīng)用程序,告訴應(yīng)用程序安全的退出,防止應(yīng)用程序異常退出導(dǎo)致數(shù)據(jù)損壞。libvirt可以通過向guest虛擬機(jī)發(fā)送acpid事件觸發(fā)電源操作,使虛擬機(jī)安全關(guān)機(jī)、重啟等操作,相對(duì)于強(qiáng)制執(zhí)行關(guān)閉電源操作更安全。通過acpid事件發(fā)送開關(guān)機(jī)信號(hào)即我們經(jīng)常所說的軟重啟或者軟關(guān)機(jī)。為了支持軟操作,虛擬機(jī)需要安裝acpid服務(wù),并設(shè)置開機(jī)自啟動(dòng):提示:用戶執(zhí)行重啟或者關(guān)機(jī)操作時(shí),OpenStack會(huì)首先嘗試調(diào)用libvirt的shutdown方法,即軟關(guān)機(jī)。當(dāng)軟關(guān)機(jī)執(zhí)行失敗或者超時(shí)(默認(rèn)120秒),則會(huì)調(diào)動(dòng)libvirt的destroy方法,即強(qiáng)制關(guān)機(jī),

8、因此如果虛擬機(jī)關(guān)機(jī)或者重啟很慢,很可能是acpid沒有正常運(yùn)行。為了使虛擬機(jī)進(jìn)程安全退出,減少數(shù)據(jù)損壞風(fēng)險(xiǎn),盡量使用軟操作,硬操作可能導(dǎo)致程序崩潰或者數(shù)據(jù)丟失。console log當(dāng)操作系統(tǒng)內(nèi)核崩潰時(shí)會(huì)報(bào)出內(nèi)核系統(tǒng)crash出錯(cuò)信息,通常啟動(dòng)的時(shí)候一閃而過, 而此時(shí)系統(tǒng)還沒有起來,不能通過遠(yuǎn)程工具(比如ssh)進(jìn)入系統(tǒng)查看,我們可以通過配置grub,把這些日志重定向到Serial Console中,這樣我們就可以通過Serial console來訪問錯(cuò)誤信息,以供分析和排錯(cuò)使用。修改配置文件/etc/default/grub,設(shè)置GRUB_CMDLINE_LINUX,:通過這個(gè)配置,內(nèi)核信息

9、會(huì)以115200的波特率同時(shí)發(fā)送到tty0和ttyS0串行端口設(shè)備。libvirt可以通過一個(gè)普通文件模擬這個(gè)串行端口:這樣內(nèi)核產(chǎn)生的日志發(fā)到ttyS0,實(shí)際上寫到console.log文件中。OpenStack通過nova console-log命令可以獲取該文件內(nèi)容,查看錯(cuò)誤日志。qemu-guest-agentqemu-guest-agent是運(yùn)行在虛擬機(jī)內(nèi)部的一個(gè)服務(wù),libvirt會(huì)在本地創(chuàng)建一個(gè)unix socket,模擬為虛擬機(jī)內(nèi)部的一個(gè)串口設(shè)備,從而實(shí)現(xiàn)了宿主機(jī)與虛擬機(jī)通信,這種方式不依賴于TCP/IP網(wǎng)絡(luò),實(shí)現(xiàn)方式簡單方便。如上宿主機(jī)的socket文件為org.qemu.gu

10、est_agent.0.instance-00003c2c.sock,在虛擬機(jī)內(nèi)部為/dev/virtio-ports/org.qemu.guest_agent.0。通過這種方式,宿主機(jī)可以發(fā)送指令寫到socket文件中,虛擬機(jī)內(nèi)部的qemu-guest-agent會(huì)輪詢查看這個(gè)串行設(shè)備是否有指令,一旦接收到指令就可以執(zhí)行對(duì)應(yīng)的腳本,從而實(shí)現(xiàn)了宿主機(jī)控制虛擬機(jī)執(zhí)行命令的功能,其中最常用的指令就是通過libvirt修改虛擬機(jī)密碼。更多關(guān)于qemu-guest-agent請(qǐng)參考官方文檔。為了支持OpenStack平臺(tái)動(dòng)態(tài)修改虛擬機(jī)密碼功能,我們需要手動(dòng)安裝qemu-guest-agent:修改/e

11、tc/sysconfig/qemu-ga配置文件:可以查看qemu-guest-agent支持的指令:確認(rèn)包含guest-set-user-password指令,支持修改管理員密碼。zeroconfzeroconf是一種古老的自動(dòng)網(wǎng)絡(luò)配置技術(shù),在沒有DHCP服務(wù)的年代,所有服務(wù)器都需要網(wǎng)管手動(dòng)配置IP、hostname等,非常麻煩,zeroconf正好解決了這個(gè)問題,不過目前通常都通過DHCP獲取地址了。不過一些操作系統(tǒng)仍然會(huì)開啟這個(gè)服務(wù),當(dāng)DHCP獲取IP失敗時(shí),會(huì)嘗試通過zeroconf配置。zeroconf啟動(dòng)時(shí)會(huì)自動(dòng)創(chuàng)建一條路由/16,而虛擬機(jī)訪問metadata服務(wù)的地址正好是54,

12、如果啟動(dòng)了zeroconf服務(wù),由于路由沖突,虛擬機(jī)不能通過54路由到網(wǎng)絡(luò)節(jié)點(diǎn)的metadata服務(wù)了。OpenStack虛擬機(jī)通常都是通過DHCP獲取IP的,因此我們并不需要zeroconf服務(wù)。為了虛擬機(jī)能夠訪問metadata服務(wù),我們必須禁止zeroconf服務(wù),關(guān)于該問題的更詳細(xì)討論可參考bug#983611:cloud-init接下來安裝cloud-init,cloud-init是虛擬機(jī)第一次啟動(dòng)時(shí)執(zhí)行的腳本,主要負(fù)責(zé)從metadata服務(wù)中拉取配置信息,完成虛擬機(jī)的初始化工作,比如設(shè)置主機(jī)名、初始化密碼以及注入密鑰等。growpart虛擬機(jī)制作鏡像時(shí)指定了根分區(qū)大小(比如我們?cè)O(shè)置

13、為10GB),為了使虛擬機(jī)能夠自動(dòng)調(diào)整為flavor disk指定的根磁盤大小,即自動(dòng)擴(kuò)容, 我們需要安裝glowpart(老版本叫g(shù)rowroot)并完成以下配置:完成以上工作后,我們的鏡像配置基本結(jié)束,刪除一些無用文件,清理history命令后執(zhí)行關(guān)機(jī):1.5 移除本地信息在宿主機(jī)上運(yùn)行以下命名,移除宿主機(jī)信息,比如mac地址等。刪除虛擬機(jī),鏡像制作完成。上傳鏡像2.1 使用glance命令上傳鏡像鏡像制作完成,上傳centos.qcow2到glance服務(wù)中。2.2 通過rbd直接導(dǎo)入鏡像由于鏡像通常比較大,上傳時(shí)如果使用glance API,則通過HTTP上傳,由于HTTP協(xié)議的限制,

14、導(dǎo)致上傳非常慢,非常耗時(shí)。如果Glance使用Ceph作為存儲(chǔ)后端,可以通過rbd直接導(dǎo)入(import)方式上傳到Ceph中,速度會(huì)大幅度提高。首先需要把鏡像轉(zhuǎn)為raw格式:通過glance create創(chuàng)建一個(gè)空鏡像,并記錄uuid(不需要指定文件路徑以及其它字段,只是占個(gè)坑):使用rbd命令直接導(dǎo)入鏡像并創(chuàng)建快照:設(shè)置glance鏡像location url:設(shè)置glance鏡像其它屬性:2.3 添加qemu-guest-agent屬性O(shè)penStack Nova是通過判斷鏡像元數(shù)據(jù)hw_qemu_guest_agent是否為yes決定是否支持qemu-guest-agent,代碼如下:

15、由此可知,我們必須添加鏡像propertyhw_qemu_guest_agent=yes,否則libvert啟動(dòng)虛擬機(jī)時(shí)不會(huì)創(chuàng)建qemu-guest-agent設(shè)備,虛擬機(jī)的qemu-guest-agent由于找不到對(duì)應(yīng)的串行設(shè)備而導(dǎo)致修改密碼失敗。DIB工具介紹前面介紹了手動(dòng)制作鏡像的過程,從鏡像下載到啟動(dòng)虛擬機(jī)安裝操作系統(tǒng),然后在虛擬機(jī)中完成配置,最后清除本地信息,整個(gè)過程非常繁雜、耗時(shí),并且一旦制作鏡像的鏡像有點(diǎn)問題,就需要啟動(dòng)虛擬機(jī)重新再來一遍,重復(fù)工作多,效率非常低。假設(shè)制作鏡像時(shí)某個(gè)配置項(xiàng)錯(cuò)了,能不能不通過啟動(dòng)虛擬機(jī)進(jìn)入系統(tǒng)去更改呢?答案是肯定的!我們只需要把制作好的鏡像通過loo

16、p設(shè)備掛載到本地(如果是qcow2格式,則需要通過nbd掛載),然后chroot到掛載目錄中修改配置文件即可,相對(duì)于啟動(dòng)虛擬機(jī)進(jìn)入系統(tǒng)去更改方便高效很多。由此我們自然想到,我們可以把最初啟動(dòng)虛擬機(jī)時(shí)安裝操作系統(tǒng)完成后的鏡像保存為base鏡像,以后再做鏡像時(shí),只需要基于該base鏡像調(diào)整即可,省去了下載鏡像以及安裝操作系統(tǒng)這兩大耗時(shí)步驟。修改鏡像也不再需要啟動(dòng)虛擬機(jī),只需要根據(jù)前面介紹的方法,把鏡像掛載到本地,然后chroot到根分區(qū)修改即可。OpenStack社區(qū)正是基于該思路,開發(fā)了DIB(disk image builder),它目前是OpenStack TripleO項(xiàng)目的子項(xiàng)目,專門用

17、于構(gòu)建OpenStack鏡像:diskimage-builder is a flexible suite of components for building a wide-range of disk images, filesystem images and ramdisk images for use with OpenStack.DIB把一些操作封裝成腳本,比如創(chuàng)建用戶(devuser)、安裝cloud-init(cloud-init)、配置yum源(yum)、部署tgtadm(deploy-tgtadm)等,這些腳本稱為elements,位于目錄diskimage-builder/di

18、skimage_builder/elements,你可以根據(jù)自己的需求自己定制elements,elements之間會(huì)有依賴,依賴通過element-deps文件指定,比如elements centos7的element-deps為:DIB會(huì)首先下載一個(gè)base鏡像,然后通過用戶指定的elements,一個(gè)一個(gè)chroot進(jìn)去執(zhí)行,從而完成了鏡像的制作,整個(gè)過程不需要啟動(dòng)虛擬機(jī)。這有點(diǎn)類似Dockerfile的構(gòu)建過程,Dockerfile的每個(gè)指令都會(huì)生成一個(gè)臨時(shí)的容器,然后在容器里面執(zhí)行命令。DIB則每個(gè)elements都會(huì)chroot到鏡像中,執(zhí)行elements中的腳本。比如制作ubu

19、ntu 14.04鏡像:創(chuàng)建Trove percona鏡像:其中ubuntu-trustry-guest會(huì)安裝trove-guest-agent,ubuntu-trusty-percona會(huì)安裝percona組件。制作鏡像時(shí)可以通過環(huán)境變量進(jìn)行配置,比如創(chuàng)建ironic鏡像:以上制作鏡像時(shí)會(huì)創(chuàng)建cloud-user用戶,密碼為secret,支持免密碼sudo,cloud-init的datasources為ConfigDriver和OpenStack。通過DIB制作鏡像能夠更方便地管理和維護(hù),實(shí)現(xiàn)自動(dòng)化構(gòu)建鏡像,建議OpenStack鏡像都直接使用DIB構(gòu)建。功能驗(yàn)證4.1 注入密碼和密鑰使用剛剛創(chuàng)建的鏡像啟動(dòng)一臺(tái)云主機(jī),如果使用nova CLI工具,需要傳-admin-pass參數(shù)指定root密碼,并指定disk大小為2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論