OpenStack Glance安裝配置過程記錄

Glance是作為OpenStack的虛擬機的Image(鏡像)服務, 它提供了一系列的REST API, 用來管理、查詢虛擬機的鏡像, 它支持多種后端存儲介質, 例如用本地文件系統作為介質、Swift(OpenStack Object Storage)作為存儲介質或者S3兼容的API作為存儲介質。 Glance作為OpenStack的一個核心的系統, 被設計為:
基于組件的架構
高可用
可容錯以及從錯誤中恢復
高度開放的標準和兼容性

鏡像格式
Glance支持多種鏡像的格式, 下面列出了目前已經支持的鏡像格式:
raw – 非結構化的鏡像格式
vhd – 一種通用的虛擬機磁盤格式, 可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等。
vmdk – Vmware的虛擬機磁盤格式, 同樣也支持多種Hypervisor
vdi – VirtualBox、QEMU等支持的虛擬機磁盤格式
iso – 光盤存檔格式
qcow2 – 一種支持QEMU并且可以動態擴展的磁盤格式
aki – Amazon Kernel 鏡像
ari – Amazon Ramdisk 鏡像
ami – Amazon 虛擬機鏡像

鏡像容器格式 (或者打包Package的虛擬機磁盤格式)
容器類似一個文件夾, 在Swift中, 它稱之為Container(容器), 同樣在Glance中支持多種打包的Container格式, 例如:
ovf – 開放式虛擬機磁盤格式, 由Vmware發起, 目前已被多種虛擬化設備支持
bare – 這表示鏡像沒有container或者元數據
aki – Amazon Kernel 鏡像
ari – Amazon Ramdisk 鏡像
ami – Amazon 虛擬機鏡像
我們既然需要打造一個云計算的平臺, 那么鏡像服務非常重要, 它可以讓我們在眾多的已生成好的鏡像中選擇合適的, 并啟動一個虛擬機的實例, 這樣就讓自動化部署方便了很多, 用過Amazon EC2的朋友一定對此非常了解, 在Amazon EC2中, 有成百上千中鏡像可以選擇, 一些來自Amazon官方的鏡像, 另外一種是來自社區上傳的鏡像, 我們只需要找到適合自己的, 并且根據這個鏡像啟動實例就萬事大吉了。

準備環境
我們使用一臺單獨的虛擬機作為Glance的運行環境。
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依賴項
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

配置數據庫
還記得我們在keystone那臺機器上配置過一次mysql server嗎, 我們需要去那臺機器上為glance創建一個數據庫來保存鏡像的matadata, 我們不需要為每臺機器都安裝mysql, 所以這里我們就去keystone的那臺機器上為glace創建一個數據庫
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/?#這里設置為你的keystone的服務器地址,?最后的?slash?(/)?一定要加上
swift_store_auth_version?=?2?#這個也非常重要,?不要漏掉,?否則無法通過keystone的認證
swift_store_user?=?adminTenant:admin?#這個是tenantName:userName,?別弄錯了哦
swift_store_key?=?openstack?#這個是keystone里admin的密碼
#在文件末尾加上
[paste_deploy]
flavor?=?keystone
修改 /etc/glance/glance-reigstry.conf
sql_connection?=?mysql://glance:[email protected]/glance?#這里指向到你的mysql服務器,?我這里是使用keystone那臺服務器的mysql
#在文件末尾加上
[paste_deploy]
flavor?=?keystone
修改 /etc/glance/glance-api-paste.ini 和 /etc/glance/glance-registry-paste.ini
#找到文件末尾,?修改為下面這樣,?注意把ip地址改成你的?keystone服務器地址,?并且設置正確?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服務
通過上面的配置, 我們的glance基本上就安裝完成了, 現在我們可以先初始化一下glance的數據庫結構
sudo?glance-manage?db_sync
#剛才可能會報錯,?但是忽略它,?不過你要看清楚是否數據庫連接設置正確了。
我們可以通過下面的命令啟動Glance
sudo?glance-control?api?start
sudo?glance-control?registry?start

向Keystone注冊Glance服務
我們現在可以使用glance了嗎? 還不行, 我們需要告訴keystone如何找到Glance服務, 回到Keystone那臺服務器, 注冊的方法和注冊Swift相同
keystone?service-create?–name=Glance?–type=image?–description=”Glance?Image?Service”
這里會返回service的id, 或者你可以通過keystone service-list 來查看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服務器的地址.

驗證Glance服務
先導入下面的系統環境
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
然后下載一個做好的鏡像
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
解壓縮會有3個文件, 然后我們通過
glance?add?name=”tty-kernel”?disk_format=aki?container_format=aki?<?ttylinux-uec-amd64-12.1_2.6.35-22_1-vmlinuz
如果沒有出錯, 應該顯示
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
然后通過
glance?index
來查看我們剛才上傳的鏡像
[email protected]:~/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服務就已經安裝完成了。

總結
Glance由于用到Keystone和Swift, 所以配置上面雖然簡單, 但是很容易出錯, 我在配置Glance的時候, git里的代碼還有Bug, 就是無法使用swift auth version參數, 傳遞給keystone, 所以一直用v1的驗證服務, 導致一直出錯, 所以我就通過修改代碼的方式, 傳遞auth version = 1給keystone, 不過好在現在官方的git代碼中已經修正了這個問題, 所以, 你應該會比較順利安裝Glance.

由于openstack的代碼一直在升級, 可能會有出現各種各樣的問題, 我歡迎大家和我交流, 并加入Openstack中國社區,有問題我也會盡量幫忙解答。

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播