glance服务监听两个端口:9191和9292
其中9292端口是对外提供服务的,9191是服务组件间使用的。
1.安装glance组件
yum --enablerepo=centos-openstack-queens clean metadata
yum install openstack-glance -y
报错:
Error downloading packages:
python-networkx-core-1.10-1.el7.noarch: [Errno 256] No more mirrors to try.
所以,重新配置yum源,这次使用网易yum源。
首先将/etc/yum.repo.d/下的文件都删除掉。
然后参考step1:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean metadata
yum remove centos-release-openstack-queens -y
yum install centos-release-openstack-queens -y
再次安装glance:
yum install openstack-glance -y
再次报同样的错误。
不要放弃,这次配置中科大yum源,同样先删掉/etc/yum.repo.d/下的所有文件。
然后参考step1:
yum clean all
wget -O /etc/yum.repos.d/CentOS-Base.repo https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3
yum clean metadata
yum remove centos-release-openstack-queens -y
yum install centos-release-openstack-queens -y
再次安装glance:
还是报同样的错误。呵呵,,
看来不是yum源的问题,于是我换回了阿里的yum源。
解决方法如下:
yum install scipy -y #这是安装python-networkx-core-1.10-1.el7.noarch.rpm需要的依赖包。
wget http://mirror.centos.org/centos/7/cloud/x86_64/openstack-queens/python-networkx-core-1.10-1.el7.noarch.rpm
开启虚拟机虚拟化技术。不会开的客官可以上网搜搜如何开启vmware虚拟化技术。(当然,客官也可能遇不到和我同样的情况)
rpm -ivh python-networkx-core-1.10-1.el7.noarch
yum install openstack-glance -y #这次就可以顺利执行了。
2.在mariadb数据库中为glance组件创建glance数据库,为glance组件创建账号和密码,并授予对glance数据库的所有操作权限:
mysql -uroot -p
create database glance;
grant all privileges on glance.* to 'glance'@'localhost' identified by 'glance';
grant all privileges on glance.* to 'glance'@'%' identified by 'glance';
flush privileges;
3.配置/etc/glance/glance-registry.conf,以便glance-registry组件可以访问mariadb数据库,mariadb数据库存放的是镜像的元数据,也就是镜像的描述信息,比如镜像的大小等。
mariadb数据库中的glance数据库,只需要保证glance-registry可以访问即可,不需要在glance-api中添加[database]。
vim /etc/glance/glance-registry.conf
在[database]下,添加:
connection = mysql+pymysql://glance:glance@controller1/glance
保存退出。
4.将glance组件中的表导入到mariadb中的glance数据库中:
su -s /bin/sh -c "glance-manage db_sync" glance #导入进去的表并没有数据,只是具有表结构。
查看glance数据库,发现我的有15张表。
5.在keystone服务组件中,为glance服务组件创建账号和密码以及授予相应的权限。
source admin-openrc
在default域中创建glance用户:
openstack user create --domain default --password-prompt glance #回车要求你输入glance用户的密码,我输入的密码是glance,客官请随意。
将admin角色关联到service项目和glance用户上:
openstack role add --project service --user glance admin #相当于为用户授予权限。
查看角色与用户的对应关系:openstack role assignment list #这是一个补充的知识点。
6.glance组件也需要向keystone服务组件请求token身份令牌,在第五步中,keystone已经为glance组件创建好了账号,那么这里就配置glance组件使用keystone创建好的账号去连接keystone服务组件:
需要同时配置glance-api组件和glance-registry组件的配置文件,添加相同的内容:
vim /etc/glance/glance-api.conf
vim /etc/glance/glance-registry.conf
在[keystone_authtoken]下,添加:
auth_uri = http://controller1:5000
auth_url = http://controller1:35357
memcached_servers = controller1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = glance
在[paste_deploy]下,添加:
flavor = keystone
保存退出。
7.配置glance中镜像实际数据(非元数据)的存放,可以使用多种存储库,比如对象存储,Cinder、S3、Ceph、常规文件系统等,初次我使用本地文件系统存储,来存放镜像文件。
一般将镜像文件存放在/var/lib/glance/images/目录下。
记住:这个images目录千万不要自己去创建,否则在上传镜像的时候会报错:
410 Gone: Error in store configuration. Adding images to store is disabled. (HTTP N/A)
这个images目录在glance服务启动后,会自己创建的。所以我们就不用瞎操心它了。
这个镜像文件的配置需要在glance-api配置文件中进行,因为glance-store组件配置入口被放入到glance-api的配置文件中了。
vim /etc/glance/glance-api.conf
在[glance_store]下,添加:
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
保存退出。
8.在keystone组件中,创建keystone服务实体和API端点:
source admin-openrc
openstack service create --name glance --description "OpenStack Image" image
openstack endpoint create --region RegionOne image public http://controller1:9292
openstack endpoint create --region RegionOne image internal http://controller1:9292
openstack endpoint create --region RegionOne image admin http://controller1:9292
备注:如果误创建了服务实体,导致出现重复的服务实体的话,执行下面的命令进行删除:
openstack service delete [service-id]
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.4.0/cirros-0.4.0-x86_64-disk.img
将镜像上传到glance服务,指定磁盘格式为raw,指定裸容器格式bare和公开可见性public,以便所有项目都可以访问它:
openstack image create "cirros" --file cirros-0.4.0-x86_64-disk.img --disk-format raw --container-format bare --public #我是上传成功了。
查看上传的镜像的状态,状态为active就表示镜像是可用的:
openstack image list
本篇教程初版已经写完了,感谢各位客官的观看,关于glance更多的操作,还有待研究,之后我会继续添加的。