Openstack
- 一、Glance鏡像服務基本概念
-
- 1.什麼是Glance,它的作用是什麼?
- 2.OpenStack鏡像簡介
- 3.OpenStack鏡像服務管理和存儲鏡像
- 4.OpenStack鏡像的類型和格式
- 5.Glance鏡像的中繼資料
- 二、Glance的搭建
-
- 1.建立資料庫執行個體和資料庫使用者
- 2.建立使用者、修改配置檔案
一、Glance鏡像服務基本概念
1.什麼是Glance,它的作用是什麼?
Glance是openstack的鏡像服務。它提供了虛拟鏡像的查詢、注冊和傳輸等服務。Glance本身并不實作對鏡像的存儲的存儲功能。Glance隻是一個代理。它充當了鏡像存儲服務與Openstack的其他元件之間的紐帶。Glance共支援兩種鏡像存儲機制:簡單檔案系統和Swift服務存儲鏡像機制。簡單檔案系統是指将鏡像儲存在Glance節點的檔案系統中。這種機制相對比較簡單,但是存在不足。比如,由于沒有備份機制,當檔案系統損傷是麻将導緻所有的鏡像不可用。Swift服務存儲鏡像機制,是指将鏡像以對象的形式儲存在Swift對象存儲伺服器中,由于Swift具有非常健壯的備份還原機制,是以可以降低因為檔案系統損傷而造成的鏡像不可用情況。
Glance服務支援多種格式的虛拟磁盤鏡像。其中包括raw/qcow2、VHD、VDI、VMDK、OVF、kernel和ramdisk。
可以把Glance當做一個對象存儲代理服務。可以通過Glance存儲任何其他格式的檔案。
2.OpenStack鏡像簡介
OpenStack鏡像是一個檔案,能夠運作、啟動虛拟盤
OpenStack的虛拟伺服器就是一個鏡像的運作執行個體
鏡像包含一個作業系統
OpenStack預設支援Linux和Windows作業系統
OpenStack鏡像還包括其他的管理軟體如cloud-init
OpenStack鏡像還包括中間件或者應用軟體,象NGINX, MySQL, VNFs
Glance存儲這些大型二=進制的鏡像
3.OpenStack鏡像服務管理和存儲鏡像
- 虛拟伺服器鏡像
- 裸金屬伺服器鏡像
-
容器鏡像
glance-api: Glance提供的基本接口,通過它可以儲存和擷取磁盤鏡像
gance-registry:用于将與鏡像相關的中繼資料儲存到關
系資料庫中。中繼資料包括:
- 鏡像名稱
- 鏡像儲存的位置資訊
- 鏡像的大小
- 鏡像的唯一辨別号
- 容器類型: bare
- 磁盤鏡像格式類型
- 狀态.
- 是否可見
-
所有者等等
Glance将鏡像儲存在各種類型的資料存儲系統,如本地存儲檔案系統(LVM), Swift對象存儲、 支援HTTP的遠端存儲(AMAZON S3)
OpenStack如何将鏡像加載成伺服器的運作執行個體?
從Glance鏡像到虛拟伺服器執行個體的過程示意圖
4.OpenStack鏡像的類型和格式
OpenStack鏡像服務支援下列的磁盤格式
- QCOW2 (QEMU Copy-On-Write):精簡配置設定的磁盤格式,用于QEMU & QEMUKVM
- VMDK (Virtual Machine Disk): Vmware通用的磁盤格式,其他虛拟機管理軟體也支援
- VHD (Virtual Hard Drive): Hyper-V通用磁盤格式,其他虛拟機管理軟體也支援
- VDI (Virtual Disk lmage): Oracle’s VirtualBox 的磁盤格式.
- ISO (International Organization for Standardization, IS09660):CD光牒打包的格式
- RAW:沒有壓縮的非結構化的鏡像磁盤格式
- VHDX: VHD的增強版本
- OVA (Open Virtual Appliance ): Vmware定義的開發虛拟應用磁盤格式
- aki, ami, ari:亞馬遜公司的核心(kernel)、主機(machine)、 記憶體磁盤(ramdisk)的鏡像格式
OpenStack鏡像的容器格式指的是鏡像檔案的封裝類型,即虛拟機映像檔案是否包含和封裝
那種有關實際虛拟機的中繼資料。OpenStack支援鏡像容器格式有:
- Bare: 沒有容器或中繼資料信封。目前OpenStack主要是這種
- docker: Docker容器格式。Openstack鏡像服務 支援docker容器的注冊
- OVA (Open Virtual Appliance ): Vmware定義的開發虛拟應用中繼資料封裝格式
- OVF (Open Virtualization Format):開放虛拟化格式,-種容器格式,支援的有Vwmare, Hyper-V
- aki, ami, ari:亞馬遜公司的核心(kemnel)、主機(machine)、 記憶體磁盤(ramdisk)的中繼資料封裝格式
5.Glance鏡像的中繼資料
OpenStack鏡像中繼資料描述了與執行個體運作時環境相關的鏡像屬性和要求
OpenStack鏡像中繼資料的作用如下
- 鏡像屬性可用于覆寫為Nova Flavors定義的特定行為
- 鏡像屬性可用于影響Nova排程程式(ImagePropertiesFllter) 的行為,
-
鏡像屬性可用于影響特定NOVA管理程式 (Hypvisor) 的行為
OpenStack鏡像中繼資料的屬性主要有:
- CPU結構(architecture): 鏡x86_ _64, amd64, arm, sparc64,等
- 虛拟管理程式類型(hypervisor_ _type): KVM, QEMU, Vmware, Hyper-v, lxc, xen, uml, ironic
- 作業系統釋出的版本名(os_ _distro): ubuntu, centos, windows, debian, rhel,等
- 操作新統的版本号(os_ _version)
- 作業系統關閉等待時間(os_ shutdown _timeout)
- 虛拟機模式(vm_ mode): hvm, xen, uml, exe
OpenStack鏡像中繼資料支援客戶化定制
二、Glance的搭建
1.建立資料庫執行個體和資料庫使用者
[[email protected] ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE glance;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit
2.建立使用者、修改配置檔案
建立OpenStack的Glance使用者
[[email protected] ~]# openstack user create --domain default --password GLANCE_PASS glance ###建立glance使用者
[[email protected] ~]# openstack role add --project service --user glance admin #将glance使用者添加到service項目中,并且針對這個項目擁有admin權限;注冊glance的API,需要對service項目有admin權限
[[email protected] ~]# openstack service create --name glance --description "OpenStack Image" image 建立一個service服務,service名稱為glance,類型為image;建立完成後可以通過 openstack service list 檢視
建立鏡像服務 API 端點,OpenStack使用三種API端點代表三種服務:admin、internal、public
[[email protected] ~]# openstack endpoint create --region RegionOne image public http://ct:9292
[[email protected] ~]# openstack endpoint create --region RegionOne image internal http://ct:9292
[[email protected] ~]# openstack endpoint create --region RegionOne image admin http://ct:9292
安裝 openstack-glance 軟體包
[[email protected] ~]# yum -y install openstack-glance
修改glance配置檔案,glance有兩個配置檔案:/etc/glance/glance-api.conf
/etc/glance/glance-registry.conf
備份、過濾注釋資訊
[[email protected] ~]# cp -a /etc/glance/glance-api.conf{,.bak}
[[email protected] ~]# grep -Ev '^$|#' /etc/glance/glance-api.conf.bak > /etc/glance/glance-api.conf
添加glance.api配置檔案
openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
傳入修改的參數
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-api.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-api.conf glance_store default_store file
openstack-config --set /etc/glance/glance-api.conf glance_store filesystem_store_datadir /var/lib/glance/images/
cat glance-api.conf
備份、過濾注釋資訊
cp -a /etc/glance/glance-registry.conf{,.bak}
grep -Ev '^$|#' /etc/glance/glance-registry.conf.bak > /etc/glance/glance-registry.conf
修改glance-registry.conf 配置檔案(配置與glance-api.conf相同)
openstack-config --set /etc/glance/glance-registry.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@ct/glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken www_authenticate_uri http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://ct:5000
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken memcached_servers ct:11211
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_type password
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_name Default
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password GLANCE_PASS
openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
openstack-config --set /etc/glance/glance-registry.conf glance_store stores file,http
openstack-config --set /etc/glance/glance-registry.conf glance_store default_store file
openstack-config --set /etc/glance/glance-registry.conf glance_store filesystem_store_datadir /var/lib/glance/images/
初始化glance資料庫,生成相關表結構;(不管有多少個controler,隻需要初始化一次即可)
su -s /bin/sh -c "glance-manage db_sync" glance
開啟glance服務(此處開啟之後會生成存放鏡像的目錄/var/lib/glance/image)
[[email protected] ~]# systemctl enable openstack-glance-api.service
[[email protected] ~]# systemctl start openstack-glance-api.service
檢視端口(也可以使用lsof -i:9292 )
賦予openstack-glance-api.service服務對儲存設備的可寫權限(-h:值對符号連接配接/軟連結的檔案修改)
鏡像導入
先上傳cirros鏡像到控制節點的/root,然後導入glance,最後檢視是否建立成功
[[email protected] ~]# openstack image create --file cirros-0.3.5-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros
檢視鏡像的兩種方式:
openstack image list 可以看到鏡像狀态
glance image-list無法檢視鏡像狀态