這邊的內容是本人參考Openstack DOC加上自己的安裝心得所寫,由於本人學識尚淺若有錯誤在請留言告知~謝謝 <(_ _)>
Openstack 的映像檔服務可以讓使用者檢測、登記和取回虛擬機器的映像檔,此為
Glance 套件所負責與功能,映像檔服務提供 REST API 讓你可以詢問虛擬機器映像檔的
metadate 和取回實際的映像檔。你也能夠透過此服務使用 openstack object Storage 的
方式儲存虛擬機器的映像檔分散在各個不同地方。
- 為了簡化 Image service 使用 file 的後端設定,所有上傳的映像檔將會被儲存在提供此服務的 系統本機上,預設位置為/var/lib/glance/images/
- 在開始之前請先確認你的系統在預設位置有足夠的空間可以儲存虛擬機器的映像檔與快照, 最小要有幾 GB 的空間可供 Image Service 做佈局
Image Service 概論
Image Service 包含下列幾個元件:
一些執行在 Image Service 的週期性處裡是有支援快取,透過 cluster 確保複製 service 的
一致性。
Image Service 為整體 IaaS 的中心,本身接受 end user 或是計算元件對於 image 或是 image metadata 發出的 API request 並且可以透過 Object Storage Service 儲存這些資料到 硬碟上。
- glance-api : 接受 Image API 對 image 做查詢、取回和儲存動作呼叫。
- glance-registry :儲存、執行與取回 image 的 metadata。Metadata 內有此 image 的 大小和型態。本身是個專屬於 image service 內部的服務,請勿開放給一般使用者使 用。
- Database :儲存 image metadata,你可以選擇你自己的 database 來使用,通常會採 用 MySQL 和 SQlite。
- Image file 的儲存庫 : Image service 提供多種儲存型態 如:供一般多種檔案方 式、Object Storage、RADOS block device、HTTP 和 Amazon S3 某些型態支援 readonly 屬性。
Image Service 為整體 IaaS 的中心,本身接受 end user 或是計算元件對於 image 或是 image metadata 發出的 API request 並且可以透過 Object Storage Service 儲存這些資料到 硬碟上。
安裝 Image Service
- 安裝 Image Service 到 controller node 上:
- Image Service 會儲存有關映像檔的資訊到 database,這邊我們使用 MySQL 作為 database 供 Openstack 其他 service 使用。
- 預設 ubuntu package 會設 ubuntu 建立 ubuntuSQLite database,所以刪除 glance.sqlite 避免發生錯,
- 使用 database root 帳號登入資料庫建立一個 glance 的資料庫使用者
- 建立database table 供 Image Service 使用
- 建立一個 glance 使用者讓 Image Service 可以被 Identity Service 認證。輸入想要的密碼與指定的信箱到 glance user,使用 service 承租者和 admin 角色:
- 設定讓 Image Service 採用 Identity Service 認證。編輯/etc/glance/glance-api.conf 和/etc/glance/glance-registry.conf 內容,取代 GLANCE_PASS 為 glance user 的密碼 供 Identity Service 認證使用。 增修下列文字到[keystone_authtoken]區段
- 註冊 Image Service 到 Identity Service 讓其他 openstack service 可以確認他並註冊 服務和建立末端使用。
- 重起 glance service 啟動新設定
# apt-get install glance python-glanceclient
設定 database 的位置:Image Service 提供 glance-api 和 glance-registry Service,他們有各 自的設定檔,你可以隨處同時更新這兩份設定,下方請置換 GLANCE_DBPASS 唯你自己的 Image Service Database 的密碼。
編輯 /etc/glance/glance-api.conf 和/etc/glance/glance-registry.conf 內[database] 這個區塊並將 sqlite_db=/var/lib/glance/glance.sqlite 註解掉
........
[database]
connection = mysql://glance:GLANCE_DBPASS@controller/glance
#sqlite_db = /var/lib/glance/glance.sqlite
[database]
connection = mysql://glance:GLANCE_DBPASS@controller/glance
#sqlite_db = /var/lib/glance/glance.sqlite
#rm /var/lib/glance/glance.sqlite
$ mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
# su -s /bin/sh -c "glance-manage db_sync" glance
$ keystone user-create --name=glance --pass=GLANCE_PASS \
--email=glance@example.com
$ keystone user-role-add --user=glance --tenant=service --role=admin
--email=glance@example.com
$ keystone user-role-add --user=glance --tenant=service --role=admin
[keystone_authtoken]
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
修改[paste_deploy]區段如下
auth_uri = http://controller:5000
auth_host = controller
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = glance
admin_password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
...
flavor = keystone
$ keystone service-create --name=glance --type=image \
--description="OpenStack Image Service"
$ keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ image / {print $2}') \
--publicurl=http://controller:9292 \
--internalurl=http://controller:9292 \
--adminurl=http://controller:9292
--description="OpenStack Image Service"
$ keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ image / {print $2}') \
--publicurl=http://controller:9292 \
--internalurl=http://controller:9292 \
--adminurl=http://controller:9292
# service glance-registry restart
# service glance-api restart
# service glance-api restart
驗證 Image Service
為了測試 Image Service 是否安裝成功所以下載最少一個已知可以和 openstack 一起運
作的虛擬機器映像檔來測試。這邊我們使用 CirrOS,這是一個小型測試映像檔,通常
用來測試 openstack 的佈署(CirrOS downloads),這是個 64-bit CirrOS QCOW 的映像檔
有關更多下載和建置映像檔請參閱 Openstack Virtual Machine Image Guide,有關管理 images 請參閱 Openstack User Guide。
有關更多下載和建置映像檔請參閱 Openstack Virtual Machine Image Guide,有關管理 images 請參閱 Openstack User Guide。
- 使用 wget 或是 curl 指定位置下載映像檔
- 上傳映像檔到 Image server 下方紅色粗體字會做說明!
- IMAGELABEL : 任意標籤,由使用者命名。
- FILEFORMAT: 指定 image 的檔案格式,選項包含:qcow2, raw, vhd, vmdk, vdi, iso, aki, ari 和 ami 你可以透 過 file 指令來確認映像檔格式。
- CONTAINERFORMAT: 指定容器格式。選項有:bare, ovf, aki, ari,和 ami。 選用 bare 來指定映像檔則會成為一個不包含虛擬機器的metadata檔案,雖然這個欄位是 必須的,但其實在 Openstack Service 上是不會被用到也不會影響系統行為,因為這個內容值不會被 用到。所以只選用 bare 來當容器格式是很安全的。
- ACCESSVALUE:指定映像檔是否公開。 true : 所有使用者都可以查看並使用此映像檔。
- IMAGEFILE:指定你要上傳的映像檔名稱。 EX:
- 確認上傳的 image 和顯示它的屬性
- 你現在也可以移除從本機下載的映像檔,當他已經儲存在 Image Service 內
$ mkdir /tmp/images
$ cd /tmp/images/
$ wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
$ cd /tmp/images/
$ wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
$ glance image-create --name=IMAGELABEL --disk-format=FILEFORMAT \
--container-format=CONTAINERFORMAT --is-public=ACCESSVALUE < IMAGEFILE
--container-format=CONTAINERFORMAT --is-public=ACCESSVALUE < IMAGEFILE
$ file cirros-0.3.2-x86_64-disk.img
cirros-0.3.2-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
cirros-0.3.2-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
false : 只有管理員可以查看與使用。
$ source admin-openrc.sh
$ glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
--container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img
+-----------------------+--------------------------------------------------+
| Property | Value |
+-----------------------+--------------------------------------------------+
| checksum | 64d7c1cd2b6f60c92c14662941cb7913 |
| container_format | bare |
| created_at | 2014-04-08T18:59:18 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | acafc7c0-40aa-4026-9673-b879898e1fc2 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.2-x86_64 |
| owner | efa984b0a914450e9a47788ad330699d |
| protected | False |
| size | 13167616 |
| status | active |
| updated_at | 2014-01-08T18:59:18 |
+---------------------+-----------------------------------------------------+
$ glance image-create --name "cirros-0.3.2-x86_64" --disk-format qcow2 \
--container-format bare --is-public True --progress < cirros-0.3.2-x86_64-disk.img
+-----------------------+--------------------------------------------------+
| Property | Value |
+-----------------------+--------------------------------------------------+
| checksum | 64d7c1cd2b6f60c92c14662941cb7913 |
| container_format | bare |
| created_at | 2014-04-08T18:59:18 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | acafc7c0-40aa-4026-9673-b879898e1fc2 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.2-x86_64 |
| owner | efa984b0a914450e9a47788ad330699d |
| protected | False |
| size | 13167616 |
| status | active |
| updated_at | 2014-01-08T18:59:18 |
+---------------------+-----------------------------------------------------+
$ glance image-list
+-----------.........
| ID
+----------.........
| acafc7c...........
...............
+-----------.........
| ID
+----------.........
| acafc7c...........
...............
$ cd ~
$ rm -r /tmp/images
另外 上傳到 Image Service 的映像檔也可以透過 --copy-from 參數直接透過網路抓取映
像檔而不用多花費空間先下載後上傳。
$ rm -r /tmp/images
$ glance image-create --name="cirros-0.3.2-x86_64" --disk-format=qcow2 \
--container-format=bare --is-public=true \
--copy-from http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
.................待續。
--container-format=bare --is-public=true \
--copy-from http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
留言
張貼留言