在传统IT环境下需要安装一个系统的话,一般是通过安装光盘或者Ghost等克隆工具安装,首先是耗时较长,安装完成后还需要进行系统的配置,整体效率会非常低。而在云环境下有更高效的解决方案——Image镜像。Image可以理解成一个系统的模板,将Image进行snapshot快照,快照里面包含了系统和需要的软件。以后只用在有需要的时候使用Image创建instance虚机就可以实现全自动化快速部署。另外快照还有备份作用,可以快速恢复系统状态。在OpenStack中,提供和管理Image镜像的服务叫做Glance。

Glance工作流程

当用户想要访问Glance的话,首先需要通过与glance-api进行交互才能获取服务,该API会将用户请求进行分解:

1、如果用户是查找Image镜像的元数据,glance-api就会将这个请求转发给glance-registry来处理,glance-registry是负责与后端数据库进行交互的服务,也就是说数据库存放的是Image的元数据(Image的名字、权限、大小等信息属于元数据),而不是Image镜像本身。

2、如果用户请求的是Image镜像本身,那么API会将这种请求转给后端存储,如本地文件系统,Ceph,Cinder,swift3等。具体使用哪种存储是由/etc/glance/glance-api.conf中配置的,默认使用本地存储在/var/lib/glance/images中。Glance支持多种格式的Image,比如ISO、QCOW2、RAW、vhd、vmdk

Glance安装与配置

1、为Glance创建数据库和数据库用户

create database glance;
grant all privileges on glance.* to 'glance'@'localhost' identified by '123456';
grant all privileges on glance.* to 'glance'@'%' identified by '123456';

2、为OpenStack创建一个glance用户 

source /root/admin-openrc
openstack user create --domain default glance --password 123456
openstack role add --project service --user glance admin  #把glance用户加入到service项目,并定义为admin角色

3、创建image服务并验证服务 

openstack service create --name glance --description "Image service" image
openstack service list

4、为Glance创建endpoint并且验证,这里可以看到Glance的端口是9292 

openstack endpoint create --region RegionOne image public http://CONTROLLER_IP:9292
openstack endpoint create --region RegionOne image internal http://CONTROLLER_IP:9292
openstack endpoint create --region RegionOne image admin http://CONTROLLER_IP:9292
openstack endpoint list

5、使用yum安装Glance 

yum install openstack-glance -y

6、修改配置文件glance-api.conf,添加数据库和keystone等配置,这里采用了命令行的方式,直接修改配置文件也可以的 

openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@CONTROLLER_IP/glance  #这里填写数据库用户名密码以及主机名
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://CONTROLLER_IP:5000  #服务需要与keystone取得联系,这里就是keystone的访问地址
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://CONTROLLER_IP:35357  #同上
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers CONTROLLER_IP:11211  #memcached服务地址
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  #第二步创建的glance用户
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 123456

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 /data/glance/images/

修改配置文件glance-registry.conf,配置数据库和keystone 

openstack-config --set /etc/glance/glance-api.conf database connection mysql+pymysql://glance:GLANCE_DBPASS@CONTROLLER_IP/glance  #这里填写数据库用户名密码以及主机名
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://CONTROLLER_IP:5000  #服务需要与keystone取得联系,这里就是keystone的访问地址
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://CONTROLLER_IP:35357  #同上
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken memcached_servers CONTROLLER_IP:11211  #memcached服务地址
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  #第二步创建的glance用户
openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 123456

openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone

7、数据库初始化,一般报警可忽略,只要不是报错就不影响 

su -s /bin/sh -c "glance-manage db_sync" glance

8、创建存放镜像的目录并赋权 

mkdir -p /data/glance/images
chown -R glance:glance /data/glance

9、设置Glance服务的启动与开机自启 

systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service

10、下载一个官方提供的测试镜像到本地 

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

11、上传刚才下载的镜像到Glance中 

openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public  #public代表公有,其他用户也可以使用

12、查看镜像,完成 

openstack image list
openstack iamge delete IMAGE  #删除镜像

13、开机自启动 

systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service