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

下載本文檔

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

文檔簡介

1、 OpenStack 鏡像構(gòu)建操作手冊目 錄 TOC o 1-3 h z u HYPERLINK l _Toc522787861 前言 PAGEREF _Toc522787861 h 3 HYPERLINK l _Toc522787862 1.手動制作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.功能驗證 PAGEREF _Toc522787865 h 15 HYPERLINK l _Toc522787866 5.總結(jié) PAGEREF _Toc522787866 h 17 HYPERLINK l _Toc522787867 6.參考文獻 PAGEREF _Toc522787867 h 18前言本文以制作CentOS7.2鏡像為例,詳細介紹手動制作OpenStack鏡像詳細步驟,解釋每一步這么做的原因。鏡像上傳到OpenStack glance,支持以下幾個功能:支持密碼注入功能(nova boot時通過-admin-pass參數(shù)指定設(shè)置初始密碼)支持根分區(qū)

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

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

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

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

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

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

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

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

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

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

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

14、導致上傳非常慢,非常耗時。如果Glance使用Ceph作為存儲后端,可以通過rbd直接導入(import)方式上傳到Ceph中,速度會大幅度提高。首先需要把鏡像轉(zhuǎn)為raw格式:通過glance create創(chuàng)建一個空鏡像,并記錄uuid(不需要指定文件路徑以及其它字段,只是占個坑):使用rbd命令直接導入鏡像并創(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啟動虛擬機時不會創(chuàng)建qemu-guest-agent設(shè)備,虛擬機的qemu-guest-agent由于找不到對應(yīng)的串行設(shè)備而導致修改密碼失敗。DIB工具介紹前面介紹了手動制作鏡像的過程,從鏡像下載到啟動虛擬機安裝操作系統(tǒng),然后在虛擬機中完成配置,最后清除本地信息,整個過程非常繁雜、耗時,并且一旦制作鏡像的鏡像有點問題,就需要啟動虛擬機重新再來一遍,重復工作多,效率非常低。假設(shè)制作鏡像時某個配置項錯了,能不能不通過啟動虛擬機進入系統(tǒng)去更改呢?答案是肯定的!我們只需要把制作好的鏡像通過loo

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

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之間會有依賴,依賴通過element-deps文件指定,比如elements centos7的element-deps為:DIB會首先下載一個base鏡像,然后通過用戶指定的elements,一個一個chroot進去執(zhí)行,從而完成了鏡像的制作,整個過程不需要啟動虛擬機。這有點類似Dockerfile的構(gòu)建過程,Dockerfile的每個指令都會生成一個臨時的容器,然后在容器里面執(zhí)行命令。DIB則每個elements都會chroot到鏡像中,執(zhí)行elements中的腳本。比如制作ubu

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

溫馨提示

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

評論

0/150

提交評論