1. 程式人生 > 實用技巧 >第二步:安裝openstack-glance服務

第二步:安裝openstack-glance服務

簡介

Glance 是 OpenStack 映象服務元件,glance 服務預設監聽在 9292 埠,其接收 REST API 請求,然後通過其他模組(glance-registry 及 image store)來完成諸如映象的獲取、上傳、刪除等操作,Glance 提供 restful API 可以查詢虛擬機器映象的 metadata,並且可以獲得映象,通過 Glance,虛擬機器映象可以被儲存到多種儲存上,比如簡單的檔案儲存或者物件儲存(比如 OpenStack 中 swift 專案)是在建立虛擬機器的時候,需要先把映象上傳到 glance,對映象的列出映象、刪除映象和上傳映象都是通過 glance 進行理,glance 有兩個主要的服務,一個是 glace-api 接收映象的刪除上傳和讀取,一個是 glance-Registry(新版本的openstack中,glance-Registry已經被廢棄)。

glance-registry 負責與 mysql 資料互動,用於儲存或獲取映象的元資料(metadata),提供映象元資料相關的 REST 介面,通過 glance-registry 可以向資料庫中寫入或獲取映象的各種資料,glance-registyr 監聽的埠是 9191,glance 資料庫中有兩張表,一張是 glance 表,一張是 imane property 表,image 表儲存了映象格式、大小等資訊,image property 表儲存了映象的定製化資訊。

image store 是一個儲存的介面層,通過這個介面 glance 可以獲取映象,image store 支援的儲存有 Amazon 的 S3、openstack 本身的 swift、還有 ceph、glusterFS、sheepdog 等分散式儲存,image store 是映象儲存與讀取的介面,但是它只是一個介面,具體的實現需要外部的支援,glance 不需要配置訊息佇列,但是需要配置資料庫和 keystone。

虛擬機器映象就是已經裝好虛擬機器系統的磁碟檔案;
映象的元資料,如映象名稱、大小和id等都是存放到mysql中的;

在controller節點安裝glance服務

https://docs.openstack.org/glance/train/install/install-rdo.html #安裝文件

glance可以單獨安裝在一臺伺服器上,也可以和controler安裝在同一臺伺服器上

1、source admin-openrc.sh     #讓admin使用者的認證資訊生效,這樣才可以在openstack中執行後續操作

2、openstack user create --domain default --password-prompt glance  
#在openstack中建立glance使用者

3、openstack role add --project service --user glance admin
#將glance使用者新增到service專案中,並且針對這個專案擁有admin許可權;註冊glance的API,需要對service專案有admin許可權

4、openstack service create --name glance --description "OpenStack Image" image
#建立一個service服務,service名稱為glance,型別為image;建立完成後可以通過 openstack service list 檢視

5、openstack endpoint create --region RegionOne image public http://openstack-vip.linux.local:9292
openstack endpoint create --region RegionOne image internal http://openstack-vip.linux.local:9292
openstack endpoint create --region RegionOne image admin http://openstack-vip.linux.local:9292  #建立glance service的endpoint

#將glance的API註冊到glance的service中;service是包含API的,所以需要把glance的API註冊到glance的service中;openstack中的endpoint相當於k8s中的service,即openstack中的service是用於註冊後端伺服器;
當訪問glance service的9292埠,就轉發到endpoint的地址處理;endpoint相當於是給service建立了一個埠,也不完全等同於k8s中的service,k8s中的service是有埠的,但是openstack中的service是沒有埠的,需要通過endpoint註冊

6、yum install openstack-glance -y

7、vim /etc/glance/glance-api.conf  #glance有兩個配置檔案,還有一個glance-registry.conf
[database]
connection = mysql+pymysql://glance:[email protected]/glance

[keystone_authtoken]
www_authenticate_uri  = http://openstack-vip.linux.local:5000  #指定認證的keystone的URL
auth_url = http://openstack-vip.linux.local:5000
memcached_servers = openstack-vip.linux.local:11211  #指定memcached的地址
auth_type = password    #認證方式採用密碼
project_domain_name = Default
user_domain_name = Default
project_name = service   #glance使用者針對service專案擁有admin許可權
username = glance        #指定glance使用者
password = glance        #密碼為glance

[paste_deploy]
flavor = keystone     #指定提供認證的伺服器為keystone

[glance_store]
stores = file   #指定儲存型別為檔案儲存;還有http型別,基於api呼叫方式,把映象放到其他儲存上
default_store = file
filesystem_store_datadir = /var/lib/glance/images/  #指定映象存放的本地目錄

注意:
整個openstack的各個服務的配置檔案中,不能有中文,包括註釋,如果有中文,會直接導致python解析配置檔案失敗而報錯

8、su -s /bin/sh -c "glance-manage db_sync" glance  
#初始化glance資料庫,生成相關表結構;不管有多少個controler,只需要初始化一次即可

9、systemctl start openstack-glance-api.service

10、systemctl enable openstack-glance-api.service

11、systemctl stop openstack-glance-api.service   #之前glance啟動服務是為了生成存放映象的目錄

12、mount -t nfs 172.31.7.105:/data/glance/ /var/lib/glance/images/
#將nfs掛載到存放映象的目錄下的

13、id glance

14、chown 161.161 /var/lib/glance/images -R
#指定所有者及所屬組時必須指定的是glance使用者的uid及gid,這樣nfs共享出來的目錄的所有者及所屬組也會變為161

15、systemctl start openstack-glance-api.service

16、vim /etc/fstab       #存放到fstab檔案中,開機自動掛載
172.31.7.105:/data/glance/ /var/lib/glance/images/ nfs defaults,_netdev 0 0

17、tail -f /var/log/glance/api.log  #通過日誌檢視glance是否啟動


###測試驗證
1、wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img  #下載映象

2、glance image-create --name "cirros-0.4.0" \  #建立映象,指定映象名稱
  --file cirros-0.4.0-x86_64-disk.img \  #指定源映象檔案,如果不在當前目錄下,需要指定絕對路徑
  --disk-format qcow2 --container-format bare \  #指定磁碟檔案格式qcow2,磁碟格式為裸磁碟
  --visibility public    #在當前openstack中,此映象是共享的,不需要登入就可以下載
#此步驟是上傳所下載的映象到儲存中 、

3、openstack image list     #列出openstack中的所有映象
   glance image-list   #此命令也可以檢視映象
   
4、glance image-delete 映象ID   #刪除指定映象,儲存中的映象也會被刪除

https://docs.openstack.org/glance/train/install/verify.html #驗證參考文件

mysql伺服器配置

1、CREATE DATABASE glance;   #建立資料庫,用於儲存映象的元資料

2、GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance123';

haproxy配置

1、vim /etc/haproxy/haproxy.cfg
listen openstack-glance-9292
 mode tcp
 bind 172.31.7.248:9292
 server 172.31.7.101 172.31.7.101:9292 check inter 3s fall 3 rise 5
 
2、systemctl restart haproxy.service 

準備NFS伺服器

映象是放在controler節點本地磁碟上的,所以其他controler節點是無法檢視存放映象的controler節點上的所有映象,所以一般映象存放到NAS儲存上,方便所有controler節點都可以檢視到映象;

1、yum install nfs-utils -y

2、mkdir /data/glance -p

3、vim /etc/exports
/data/glance *(rw,no_root_squash)

4、systemctl restart nfs

5、systemctl enable nfs


###管理端驗證
1、yum install nfs-utils -y

2、showmount -e 172.31.7.105