天天看点

Openstack 之镜像管理服务Glance一、Glance镜像服务基本概念二、Glance的搭建

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一、Glance镜像服务基本概念二、Glance的搭建

OpenStack如何将镜像加载成服务器的运行实例?

从Glance镜像到虚拟服务器实例的过程示意图

Openstack 之镜像管理服务Glance一、Glance镜像服务基本概念二、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):光盘打包的格式
  • 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
           
Openstack 之镜像管理服务Glance一、Glance镜像服务基本概念二、Glance的搭建

备份、过滤注释信息

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一、Glance镜像服务基本概念二、Glance的搭建

赋予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无法查看镜像状态

继续阅读