目錄
1、安裝環境說明
OS:Ubuntu 14.04 LTS
Controller
- IP:10.0.0.11 / 24
- Gateway:10.0.0.1
Network
- Management IP:10.0.0.21 / 24 (eth0)
- Gateway:10.0.0.1
- Instance Tunnel IP:10.0.1.21 / 24 (eth1)
- External Interface (eth2)
- IP:不指定 IP
- 設定方式如下:(修改 /etc/network/interfaces)
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
Compute 1
- Management IP:10.0.0.31 / 24
- Gateway:10.0.0.1
- Instance Tunnel IP:10.0.1.31
修改每個 node 的 /etc/hosts 檔案,並加入以下內容:
10.0.0.11 controller
10.0.0.21 network
10.0.0.31 compute1
- 使用者身分:root
2、Image Service 概觀
在 OpenStack 中,Image Service 的用途在於讓使用者可以尋找/註冊/取得虛擬機器的映像檔來使用,而提供這樣的服務的專案稱為 Glance。
Glance 是用來管理虛擬磁碟的 image 之用,除了可以讓使用者新增 image 之外,也可以從正在運作的 server 上取得 snapshop 來作為 image 的備份或者是其他虛擬磁碟的 image。
Glance 包含了以下四個主要部分:
glance-api
- 接受來自其他服務的 API call
glance-registry
- 管理 image 的 metadata 之用(例如:image 的大小 & 類型)。
Database
- 儲存 image metadata 之用,可選擇 MySQL or SQLite。
存放 image 的 storage repository
- 存放 image 的位置有很多種不同的選擇,例如:一般的檔案系統、Object Storage、RADOS Block device、甚至是 Amazon S3 也可以。(但某些 repository 僅支援唯讀模式)
以上是 OpenStack 的概念架構圖,從圖中可以看出 Glance 的定位:
- 可以將 image 存於 Swift 中
- 提供 image 給 Nova 作為執行 VM 之用
- 使用者可以透過 Horizon 呼叫 Glance API 來管理 image
- 在使用 Glance API 之前,都需要通過 Keystone 的認證
3、安裝 Glance
3.1 安裝套件
這個範例會將 Glance 安裝在 controller 上,執行以下指令:
$ apt-get install glance python-glanceclient
3.2 設定資料庫
原本預設 Glance 會將資料存於 SQLite 中,為了跟其他服務一致,以下把它改成使用 MySQL,首先先在 MySQL 中建立 glance 資料庫並給定權限:
root@controller:~/OpenStack# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 107
Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database glance;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on glance.* to 'glance'@'localohost' identified by 'YOUR_GLANCE_DBPASS';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on glance.* to 'glance'@'%' identified by 'YOUR_DB_PASSWORD';
Query OK, 0 rows affected (0.00 sec)
mysql> exit
3.3 修改設定
接著修改 Glance API & Registry 的設定,分別是以下的兩個檔案:
- /etc/glance/glance-api.conf
- /etc/glance/glance-registry.conf
修改 [database] 區段,移除原本的 SQLite 設定,改為以下內容:
[database]
connection = mysql://glance:YOUR_GLANCE_DBPASS@controller/glance
3.4 建立 Glance 用 MySQL DB
建立 MySQL DB for Glance:
$ sh -c "glance-manage db_sync" glance
3.5 將 Glance 與 Identity Service(Keystone) 連結
每個 service 都必須跟 Identity Service(Keystone) 進行連結,以下分成兩個步驟:
3.5.1 建立認證用帳號(Glance 管理者)
# 建立認證用帳號 & E-Mail
keystone user-create --name=glance --pass=YOUR_GLANCE_AUTH_PASS \
--email=admin@example.com
+----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| email | admin@example.com |
| enabled | True |
| id | ec4848f8a9d342038668029c78f77565 |
| name | glance |
| username | glance |
+----------+----------------------------------+
# 指定使用 service Tenant 並隸屬於 admin Role
$ keystone user-role-add --user=glance --tenant=service --role=admin
3.5.2 註冊 Image Service
同樣修改 API(/etc/glance/glance-api.conf) & Registry(/etc/glance/glance-registry.conf) 兩個設定檔,修改 [keystone_authtoken] & [paste_deploy] 區段內容如下:
[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 = YOUR_GLANCE_AUTH_PASS
[paste_deploy]
flavor = keystone
最後下指令將 Glance 註冊至 Keystone 中並產生 API 服務端點,讓 OpenStack 其他的 service 可以知道 Image Service(Glance) 所在的位置:
# 註冊 Glance 服務
$ keystone service-create --name=glance --type=image --description="OpenStack Image Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | OpenStack Image Service |
| enabled | True |
| id | 95a34885c3dc486f98153cf2d3740355 |
| name | glance |
| type | image |
+-------------+----------------------------------+
# 註冊 Glance API 端點服務
$ keystone endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') --publicurl=http://controller:9292 --internalurl=http://controller:9292 --adminurl=http://controller:9292
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://controller:9292 |
| id | 4ca758a4fe4049c491a5c5ace5b792f2 |
| internalurl | http://controller:9292 |
| publicurl | http://controller:9292 |
| region | regionOne |
| service_id | 95a34885c3dc486f98153cf2d3740355 |
+-------------+----------------------------------+
3.6 啟動服務
最後重新啟動 Glance service 讓之前的設定生效:
$ service glance-registry restart
$ service glance-api restart
4、驗證 Glance 安裝是否成功
我們可以透過下載隨意一個 linux image 並註冊到 Glance 來測試安裝是否成功。
下載 Linux image:
$ mkdir /tmp/images
$ cd /tmp/images/
$ wget http://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
將下載的 Linux image 註冊到 Glance:
# 透過 shell script 匯入 OS_USERNAME / OS_PASSWORD / OS_TENANT_NAME / OS_AUTH_URL 等環境變數
$ source ~/OpenStack/admin-openrc.sh
# 註冊 image 至 Glance
$ glance image-create --name "cirros-0.3.3-x86_64" --disk-format qcow2 --container-format bare --is-public true --progress < cirros-0.3.3-x86_64-disk.img
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 133eae9fb1c98f45894a4e60d8736619 |
| container_format | bare |
| created_at | 2014-09-24T23:29:42 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | 77c0d5f8-1bcc-4937-932c-72f4b0eccbc3 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.3-x86_64 |
| owner | 27466ca061e34b469f84da1e57b5605e |
| protected | False |
| size | 13200896 |
| status | active |
| updated_at | 2014-09-24T23:29:42 |
| virtual_size | None |
+------------------+--------------------------------------+
因為 Linux image 都可以直接在網路上取得,所以我們也不需要真的下載到本機空間,也可以直接透過 copy-from 參數來使用外部的連結來註冊:
# 使用 copy-from 變數註冊來自外部的 image
$ glance image-create --name "cirros-0.3.3-x86_64" --disk-format qcow2 --container-format bare --is-public true --copy-from http://download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | None |
| container_format | bare |
| created_at | 2014-09-24T23:36:17 |
| deleted | False |
| deleted_at | None |
| disk_format | qcow2 |
| id | 0985b2f3-058e-4ab9-84e3-65c51f849408 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros-0.3.3-x86_64 |
| owner | 27466ca061e34b469f84da1e57b5605e |
| protected | False |
| size | 13200896 |
| status | queued |
| updated_at | 2014-09-24T23:36:17 |
| virtual_size | None |
+------------------+--------------------------------------+
最後透過以下指令可以查詢目前 image 的註冊狀況:
$ glance image-list
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| ID | Name | Disk Format | Container Format | Size | Status |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
| 77c0d5f8-1bcc-4937-932c-72f4b0eccbc3 | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active |
| 0985b2f3-058e-4ab9-84e3-65c51f849408 | cirros-0.3.3-x86_64 | qcow2 | bare | 13200896 | active |
+--------------------------------------+---------------------+-------------+------------------+----------+--------+
你好
回覆刪除你這裡下載0.3.2版
wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
但是下一步是用0.3.3版作image
不知是否打錯?
謝謝您的提醒,的確是打錯了,已經修正!
刪除你好
回覆刪除auth_uri = http://controller:5000 這行是否應是 auth_url ,謝謝~
您好 請問要如何安裝ubnutu或windows的image 而非cirros?
回覆刪除