OpenStack Glance安裝配置過(guò)程記錄
Glance是作為OpenStack的虛擬機(jī)的Image(鏡像)服務(wù), 它提供了一系列的REST API, 用來(lái)管理、查詢(xún)虛擬機(jī)的鏡像, 它支持多種后端存儲(chǔ)介質(zhì), 例如用本地文件系統(tǒng)作為介質(zhì)、Swift(OpenStack Object Storage)作為存儲(chǔ)介質(zhì)或者S3兼容的API作為存儲(chǔ)介質(zhì)。 Glance作為OpenStack的一個(gè)核心的系統(tǒng), 被設(shè)計(jì)為:
基于組件的架構(gòu)
高可用
可容錯(cuò)以及從錯(cuò)誤中恢復(fù)
高度開(kāi)放的標(biāo)準(zhǔn)和兼容性
鏡像格式
Glance支持多種鏡像的格式, 下面列出了目前已經(jīng)支持的鏡像格式:
raw – 非結(jié)構(gòu)化的鏡像格式
vhd – 一種通用的虛擬機(jī)磁盤(pán)格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等。
vmdk – Vmware的虛擬機(jī)磁盤(pán)格式, 同樣也支持多種Hypervisor
vdi – VirtualBox、QEMU等支持的虛擬機(jī)磁盤(pán)格式
iso – 光盤(pán)存檔格式
qcow2 – 一種支持QEMU并且可以動(dòng)態(tài)擴(kuò)展的磁盤(pán)格式
aki – Amazon Kernel 鏡像
ari – Amazon Ramdisk 鏡像
ami – Amazon 虛擬機(jī)鏡像
鏡像容器格式 (或者打包Package的虛擬機(jī)磁盤(pán)格式)
容器類(lèi)似一個(gè)文件夾, 在Swift中, 它稱(chēng)之為Container(容器), 同樣在Glance中支持多種打包的Container格式, 例如:
ovf – 開(kāi)放式虛擬機(jī)磁盤(pán)格式, 由Vmware發(fā)起, 目前已被多種虛擬化設(shè)備支持
bare – 這表示鏡像沒(méi)有container或者元數(shù)據(jù)
aki – Amazon Kernel 鏡像
ari – Amazon Ramdisk 鏡像
ami – Amazon 虛擬機(jī)鏡像
我們既然需要打造一個(gè)云計(jì)算的平臺(tái), 那么鏡像服務(wù)非常重要, 它可以讓我們?cè)诒姸嗟囊焉珊玫溺R像中選擇合適的, 并啟動(dòng)一個(gè)虛擬機(jī)的實(shí)例, 這樣就讓自動(dòng)化部署方便了很多, 用過(guò)Amazon EC2的朋友一定對(duì)此非常了解, 在Amazon EC2中, 有成百上千中鏡像可以選擇, 一些來(lái)自Amazon官方的鏡像, 另外一種是來(lái)自社區(qū)上傳的鏡像, 我們只需要找到適合自己的, 并且根據(jù)這個(gè)鏡像啟動(dòng)實(shí)例就萬(wàn)事大吉了。
準(zhǔn)備環(huán)境
我們使用一臺(tái)單獨(dú)的虛擬機(jī)作為Glance的運(yùn)行環(huán)境。
os:?ubuntu?server?11.10
hostname:?os-glance-01
ip?address:?10.172.7.85
gateway:?10.172.7.1
role:?glance-api?glance-registry
安裝Glance
先安裝必要的軟件和Python依賴(lài)項(xiàng)
sudo?apt-get?install?build-essential?git?Python-dev?Python-setuptools?Python-pip?Python-mysqldb
簽出代碼, 并安裝到Python dist package
cd?~
git?clone?git://github.com/openstack/glance.git
cd?glance
sudo?pip?install?-r?tools/pip-requires
sudo?Python?setup.py?install
配置數(shù)據(jù)庫(kù)
還記得我們?cè)趉eystone那臺(tái)機(jī)器上配置過(guò)一次mysql server嗎, 我們需要去那臺(tái)機(jī)器上為glance創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)來(lái)保存鏡像的matadata, 我們不需要為每臺(tái)機(jī)器都安裝mysql, 所以這里我們就去keystone的那臺(tái)機(jī)器上為glace創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)
mysql?-h?10.172.7.81?-u?root?-p
create?database?glance;
grant?all?on?glance.*?to?'glance'@'%'?identified?by?'openstack';
配置Glance
sudo?mkdir?/etc/glance
sudo?cp?~/glance/etc/*?/etc/glance
修改/etc/glance/glance-api.conf
default_store?=?file?修改為?default_store?=?swift
swift_store_auth_address?=?http://10.172.7.81:5000/v2.0/?#這里設(shè)置為你的keystone的服務(wù)器地址,?最后的?slash?(/)?一定要加上
swift_store_auth_version?=?2?#這個(gè)也非常重要,?不要漏掉,?否則無(wú)法通過(guò)keystone的認(rèn)證
swift_store_user?=?adminTenant:admin?#這個(gè)是tenantName:userName,?別弄錯(cuò)了哦
swift_store_key?=?openstack?#這個(gè)是keystone里admin的密碼
#在文件末尾加上
[paste_deploy]
flavor?=?keystone
修改 /etc/glance/glance-reigstry.conf
sql_connection?=?mysql://glance:openstack@10.172.7.81/glance?#這里指向到你的mysql服務(wù)器,?我這里是使用keystone那臺(tái)服務(wù)器的mysql
#在文件末尾加上
[paste_deploy]
flavor?=?keystone
修改 /etc/glance/glance-api-paste.ini 和 /etc/glance/glance-registry-paste.ini
#找到文件末尾,?修改為下面這樣,?注意把ip地址改成你的?keystone服務(wù)器地址,?并且設(shè)置正確?tenantName?user和password
[filter:authtoken]
paste.filter_factory?=?keystone.middleware.auth_token:filter_factory
service_protocol?=?http
service_host?=?10.172.7.81
service_port?=?5000
auth_host?=?10.172.7.81
auth_port?=?35357
auth_protocol?=?http
auth_uri?=?http://10.172.7.81:5000/
admin_tenant_name?=?adminTenant
admin_user?=?admin
admin_password?=?openstack
admin_token?=?ADMIN
控制Glance服務(wù)
通過(guò)上面的配置, 我們的glance基本上就安裝完成了, 現(xiàn)在我們可以先初始化一下glance的數(shù)據(jù)庫(kù)結(jié)構(gòu)
sudo?glance-manage?db_sync
#剛才可能會(huì)報(bào)錯(cuò),?但是忽略它,?不過(guò)你要看清楚是否數(shù)據(jù)庫(kù)連接設(shè)置正確了。
我們可以通過(guò)下面的命令啟動(dòng)Glance
sudo?glance-control?api?start
sudo?glance-control?registry?start
向Keystone注冊(cè)Glance服務(wù)
我們現(xiàn)在可以使用glance了嗎? 還不行, 我們需要告訴keystone如何找到Glance服務(wù), 回到Keystone那臺(tái)服務(wù)器, 注冊(cè)的方法和注冊(cè)Swift相同
keystone?service-create?--name=Glance?--type=image?--description="Glance?Image?Service"
這里會(huì)返回service的id, 或者你可以通過(guò)keystone service-list 來(lái)查看glance的service id是什么
keystone?endpoint-create?--service_id?=?<glance-service-id>
--region?RegionOne
--publicurl?http://10.172.7.85:9292/v1
--adminurl?http://10.172.7.85:9292/v1
--internalurl?http://10.172.7.85:9292/v1
注意換成你的glance service id, 地址換成你的glance服務(wù)器的地址.
驗(yàn)證Glance服務(wù)
先導(dǎo)入下面的系統(tǒng)環(huán)境
export?OS_USERNAME=admin
export?OS_TENANT_NAME=adminTenant
export?OS_PASSWORD=openstack
export?OS_AUTH_URL=http://10.172.7.81:5000/v2.0
export?OS_REGION_NAME=RegionOne
然后下載一個(gè)做好的鏡像
cd?~?&&?mkdir?images
cd?images
wget?http://smoser.brickies.net/ubuntu/ttyLinux-uec/ttyLinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
tar?zxvf?ttyLinux-uec-amd64-12.1_2.6.35-22_1.tar.gz
解壓縮會(huì)有3個(gè)文件, 然后我們通過(guò)
glance?add?name="tty-kernel"?disk_format=aki?container_format=aki?<?ttyLinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz
如果沒(méi)有出錯(cuò), 應(yīng)該顯示
Uploading?image?'tty-kernel'
=================================================================================================================================================================[100%]?41.8M/s,?ETA??0h??0m??0s
Added?new?image?with?ID:?ccc6dd8e-4f6e-413c-b6ab-3d6f59a0cef6
這就是剛才上傳的image id, 然后一次上傳
glance?add?name="tty-ramdisk"?disk_format=ari?container_format=ari?<?ttyLinux-uec-amd64-12.1_2.6.35-22_1-loader
記住剛才的id, 我這里是1641812a-93a8-46ae-b986-d51979f60857,
glance?add?name="tty-Linux"?kernel_id=ccc6dd8e-4f6e-413c-b6ab-3d6f59a0cef6?ramdisk_id=1641812a-93a8-46ae-b986-d51979f60857?disk_format=ami?container_format=ami?<?ttyLinux-uec-amd64-12.1_2.6.35-22_1.img
然后通過(guò)
glance?index
來(lái)查看我們剛才上傳的鏡像
stephen@os-glance-01:~/images$?glance?index
ID???????????????????????????????????Name???????????????????????????Disk?Format??????????Container?Format?????Size
------------------------------------?------------------------------?--------------------?--------------------?--------------
ec957588-b62c-4bcc-99ef-17876f45a41e?tty????????????????????????????ami??????????????????ami????????????????????????25165824
1641812a-93a8-46ae-b986-d51979f60857?tty-ramdisk????????????????????ari??????????????????ari?????????????????????????5882349
ccc6dd8e-4f6e-413c-b6ab-3d6f59a0cef6?tty-kernel???????????? ? ? ? ? aki??????????????????aki?????????????????????????4404752
至此, Glance服務(wù)就已經(jīng)安裝完成了。
總結(jié)
Glance由于用到Keystone和Swift, 所以配置上面雖然簡(jiǎn)單, 但是很容易出錯(cuò), 我在配置Glance的時(shí)候, git里的代碼還有Bug, 就是無(wú)法使用swift auth version參數(shù), 傳遞給keystone, 所以一直用v1的驗(yàn)證服務(wù), 導(dǎo)致一直出錯(cuò), 所以我就通過(guò)修改代碼的方式, 傳遞auth version = 1給keystone, 不過(guò)好在現(xiàn)在官方的git代碼中已經(jīng)修正了這個(gè)問(wèn)題, 所以, 你應(yīng)該會(huì)比較順利安裝Glance.
由于openstack的代碼一直在升級(jí), 可能會(huì)有出現(xiàn)各種各樣的問(wèn)題, 我歡迎大家和我交流, 并加入Openstack中國(guó)社區(qū),有問(wèn)題我也會(huì)盡量幫忙解答。