1. 项目概述与背景
在CentOS 7.9系统上部署OpenStack Train版本的Glance镜像服务,是构建私有云平台的关键步骤。作为OpenStack核心组件之一,Glance承担着虚拟机镜像的存储、管理和分发职能,直接影响着后续计算节点创建虚拟机的效率与稳定性。
我曾在多个企业级OpenStack部署项目中负责Glance服务的配置工作,发现Train版本相比之前版本有几个显著改进:首先是API响应速度优化,镜像上传效率提升约30%;其次是增强了对多种存储后端(包括Ceph RBD和NFS)的原生支持;最重要的是引入了镜像签名验证功能,大幅提升了安全性。
2. 环境准备与依赖安装
2.1 系统基础配置
在开始前需要确保:
- 已配置好CentOS 7.9基础环境(建议最小化安装)
- 网络连通性正常(能访问外部软件源)
- 时间同步服务(chrony/NTP)正常运行
- SELinux设置为permissive模式
重要提示:生产环境建议使用本地yum源,可显著提高软件安装速度。可通过
yum install -y createrepo创建本地仓库。
2.2 数据库准备
Glance需要MySQL/MariaDB作为元数据存储,推荐使用MariaDB 10.3+版本。以下是数据库初始化命令:
mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;2.3 OpenStack基础服务配置
需要提前完成Keystone认证服务的部署,并获取admin-openrc环境变量文件。关键配置项包括:
- OS_AUTH_URL
- OS_PROJECT_NAME
- OS_USERNAME
- OS_PASSWORD
- OS_REGION_NAME
3. Glance服务部署详解
3.1 软件包安装
执行以下命令安装必要组件:
yum install -y openstack-glance python-glanceclient安装过程中会自动解决依赖关系,包括:
- python-keystoneclient
- python-glance-store
- python-oslo.db
3.2 配置文件修改
主配置文件/etc/glance/glance-api.conf需要调整以下关键部分:
[database] connection = mysql+pymysql://glance:密码@控制器IP/glance [keystone_authtoken] www_authenticate_uri = http://控制器IP:5000 auth_url = http://控制器IP:5000 memcached_servers = 控制器IP:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = 密码 [glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images生产环境建议将存储后端配置为Ceph RBD,可显著提升性能:
[glance_store] stores = rbd default_store = rbd rbd_store_pool = images rbd_store_user = glance rbd_store_ceph_conf = /etc/ceph/ceph.conf
3.3 数据库初始化
执行数据库迁移命令:
su -s /bin/sh -c "glance-manage db_sync" glance成功后会显示"Database is synced successfully"提示。
4. 服务启动与验证
4.1 服务管理
启动服务并设置开机自启:
systemctl enable openstack-glance-api systemctl start openstack-glance-api检查服务状态:
systemctl status openstack-glance-api4.2 镜像上传测试
下载测试镜像:
wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img上传镜像到Glance:
openstack image create "cirros-test" \ --file cirros-0.4.0-x86_64-disk.img \ --disk-format qcow2 \ --container-format bare \ --public验证镜像列表:
openstack image list5. 高级配置与优化
5.1 存储后端选择
根据实际需求可选择不同存储后端:
- 文件系统:简单易用,适合测试环境
- Ceph RBD:高性能,支持快照和克隆
- Swift对象存储:适合大规模分布式部署
- NFS:便于共享但性能较低
5.2 性能调优参数
在glance-api.conf中添加以下优化参数:
[glance_store] rbd_store_chunk_size = 8 show_image_direct_url = True [DEFAULT] workers = 45.3 安全加固措施
- 启用TLS加密:
[keystone_authtoken] auth_uri = https://控制器IP:5000 auth_url = https://控制器IP:5000- 配置镜像签名验证:
[signing] enabled = true certificate_file = /etc/glance/ssl/cert.pem key_file = /etc/glance/ssl/key.pem6. 常见问题排查
6.1 镜像上传失败
现象:上传过程中断或报错解决方法:
- 检查存储目录权限:
chown -R glance:glance /var/lib/glance/images- 确认磁盘空间充足:
df -h /var/lib/glance- 查看详细日志:
journalctl -u openstack-glance-api -f6.2 服务无法启动
可能原因:
- 数据库连接失败
- Keystone认证配置错误
- 端口冲突(默认9292)
排查步骤:
- 检查配置文件语法:
glance-api --config-file=/etc/glance/glance-api.conf --check- 测试数据库连接:
mysql -u glance -p -h 控制器IP- 验证Keystone令牌:
openstack token issue6.3 镜像下载缓慢
优化方案:
- 启用镜像缓存:
[glance_cache] enabled = true backend = dogpile.cache.memcached memcache_servers = 控制器IP:11211- 配置多区域复制(适用于分布式部署)
- 使用P2P镜像分发工具(如OpenStack的Image Caching)
7. 生产环境部署建议
根据实际运维经验,给出以下建议:
存储规划:
- 为/var/lib/glance单独挂载高性能存储
- 建议使用XFS文件系统(处理小文件性能更优)
- 预留至少20%的额外空间
高可用方案:
- 部署多个glance-api实例
- 配置负载均衡(如HAProxy)
- 使用Galera集群替代单点MySQL
监控指标:
- 镜像上传/下载成功率
- API响应时间(P99应<500ms)
- 存储空间使用率
- 并发连接数
备份策略:
- 定期备份数据库(mysqldump)
- 使用rsync同步镜像文件到备份节点
- 测试镜像恢复流程
在实际部署中遇到过的一个典型问题:当使用Ceph后端时,如果rbd_cache配置不当会导致镜像上传超时。解决方案是在ceph.conf中添加:
[client] rbd cache = false这个配置虽然会略微降低性能,但能保证上传过程的稳定性。