安裝Openstack 個人翻譯.....(5)Image Service


這邊的內容是本人參考Openstack DOC加上自己的安裝心得所寫,由於本人學識尚淺若有錯誤在請留言告知~謝謝 <(_ _)>

Openstack 的映像檔服務可以讓使用者檢測、登記和取回虛擬機器的映像檔,此為 Glance 套件所負責與功能,映像檔服務提供 REST API 讓你可以詢問虛擬機器映像檔的 metadate 和取回實際的映像檔。你也能夠透過此服務使用 openstack object Storage 的 方式儲存虛擬機器的映像檔分散在各個不同地方。
  • 為了簡化 Image service 使用 file 的後端設定,所有上傳的映像檔將會被儲存在提供此服務的 系統本機上,預設位置為/var/lib/glance/images/
  • 在開始之前請先確認你的系統在預設位置有足夠的空間可以儲存虛擬機器的映像檔與快照, 最小要有幾 GB 的空間可供 Image Service 做佈局


Image Service 概論
Image 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 的週期性處裡是有支援快取,透過 cluster 確保複製 service 的 一致性。
Image Service 為整體 IaaS 的中心,本身接受 end user 或是計算元件對於 image 或是 image metadata 發出的 API request 並且可以透過 Object Storage Service 儲存這些資料到 硬碟上。





安裝 Image Service
  1. 安裝 Image Service 到 controller node 上:
  2. # apt-get install glance python-glanceclient

  3. Image Service 會儲存有關映像檔的資訊到 database,這邊我們使用 MySQL 作為 database 供 Openstack 其他 service 使用。

  4. 設定 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

  5. 預設 ubuntu package 會設 ubuntu 建立 ubuntuSQLite database,所以刪除 glance.sqlite 避免發生錯,
  6. #rm /var/lib/glance/glance.sqlite

  7. 使用 database root 帳號登入資料庫建立一個 glance 的資料庫使用者
  8. $ 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';

  9. 建立database table 供 Image Service 使用
  10. # su -s /bin/sh -c "glance-manage db_sync" glance

  11. 建立一個 glance 使用者讓 Image Service 可以被 Identity Service 認證。輸入想要的密碼與指定的信箱到 glance user,使用 service 承租者和 admin 角色:
  12. $ keystone user-create --name=glance --pass=GLANCE_PASS \
    --email=glance@example.com
    $ keystone user-role-add --user=glance --tenant=service --role=admin

  13. 設定讓 Image Service 採用 Identity Service 認證。編輯/etc/glance/glance-api.conf /etc/glance/glance-registry.conf 內容,取代 GLANCE_PASS 為 glance user 的密碼 供 Identity Service 認證使用。
  14. 增修下列文字到[keystone_authtoken]區段
    [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]區段如下
    [paste_deploy]
    ...
    flavor = keystone

  15. 註冊 Image Service 到 Identity Service 讓其他 openstack service 可以確認他並註冊 服務和建立末端使用。
  16. $ 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

  17. 重起 glance service 啟動新設定
  18. # service glance-registry 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
  1. 使用 wget 或是 curl 指定位置下載映像檔
  2. $ mkdir /tmp/images
    $ cd /tmp/images/
    $ wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img

  3. 上傳映像檔到 Image server
  4. 下方紅色粗體字會做說明
    $ glance image-create --name=IMAGELABEL --disk-format=FILEFORMAT \
    --container-format=CONTAINERFORMAT --is-public=ACCESSVALUE < IMAGEFILE
    • IMAGELABEL : 任意標籤,由使用者命名。
    • FILEFORMAT: 指定 image 的檔案格式,選項包含:qcow2, raw, vhd, vmdk, vdi, iso, aki, ari 和 ami 你可以透 過 file 指令來確認映像檔格式。
    • $ file cirros-0.3.2-x86_64-disk.img
      cirros-0.3.2-x86_64-disk.img: QEMU QCOW Image (v2), 41126400 bytes
    • CONTAINERFORMAT: 指定容器格式。選項有:bare, ovf, aki, ari,和 ami。
    •     選用 bare 來指定映像檔則會成為一個不包含虛擬機器的metadata檔案,雖然這個欄位是 必須的,但其實在 Openstack Service 上是不會被用到也不會影響系統行為,因為這個內容值不會被 用到。所以只選用 bare 來當容器格式是很安全的。
    • ACCESSVALUE:指定映像檔是否公開。
    •     true : 所有使用者都可以查看並使用此映像檔。
          false : 只有管理員可以查看與使用。
    • IMAGEFILE:指定你要上傳的映像檔名稱。
    • EX:
      $ 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                                   |
      +---------------------+-----------------------------------------------------+

  5. 確認上傳的 image 和顯示它的屬性
  6. $ glance image-list
    +-----------.........
    | ID
    +----------.........
    | acafc7c...........
    ...............

  7. 你現在也可以移除從本機下載的映像檔,當他已經儲存在 Image Service 內
  8. $ cd ~
    $ rm -r /tmp/images
    另外 上傳到 Image Service 的映像檔也可以透過 --copy-from 參數直接透過網路抓取映 像檔而不用多花費空間先下載後上傳。
    $ 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
    .................待續。

留言