openstack-glance-api.service start request repeated too quickly, refusing to start

本文详细描述了如何解决在部署OpenStack J版CentOS 7时,Glance服务重启失败的问题。通过检查日志、权限配置以及同步数据库,最终定位到api.log文件权限问题,并成功解决了服务无法正常启动的问题。

问题描述

openstack J版 centos7部署
重启服务时起不来,日志也不报错,以glance服务为例,如下:

#  systemctl start openstack-glance-api.service openstack-glance-registry.service 
Job for openstack-glance-api.service failed. See 'systemctl status openstack-glance-api.service' and 'journalctl -xn' for details.



# systemctl status openstack-glance-api.service 
openstack-glance-api.service - OpenStack Image Service (code-named Glance) API server
   Loaded: loaded (/usr/lib/systemd/system/openstack-glance-api.service; enabled)
   Active: failed (Result: start-limit) since Sat 2015-07-11 22:25:43 EDT; 19s ago
  Process: 11841 ExecStart=/usr/bin/glance-api (code=exited, status=1/FAILURE)
 Main PID: 11841 (code=exited, status=1/FAILURE)

Jul 11 22:25:43 node-82 systemd[1]: Failed to start OpenStack Image Service (code-named Glance) API server.
Jul 11 22:25:43 node-82 systemd[1]: Unit openstack-glance-api.service entered failed state.
Jul 11 22:25:43 node-82 systemd[1]: openstack-glance-api.service holdoff time over, scheduling restart.
Jul 11 22:25:43 node-82 systemd[1]: Stopping OpenStack Image Service (code-named Glance) API server...
Jul 11 22:25:43 node-82 systemd[1]: Starting OpenStack Image Service (code-named Glance) API server...
Jul 11 22:25:43 node-82 systemd[1]: openstack-glance-api.service start request repeated too quickly, refusing to start.
Jul 11 22:25:43 node-82 systemd[1]: Failed to start OpenStack Image Service (code-named Glance) API server.
Jul 11 22:25:43 node-82 systemd[1]: Unit openstack-glance-api.service entered failed state.

错误分析

之前mariadb起不来也是类似错误,但是输入journalctl -xn 后,会显示配置错误,订正my.cnf 就可以但glance报这个错误怎么解决?我还没做什么呢,他说连接过快,无奈之下想起了“重启试试,不行就分”。重启吧,重启也没用,那就卸掉glance组件,删掉数据库,删掉keystone链接重来吧,结果还是没卵用。

类似这种服务起不来的情况,依个人经历作如下总结

1.配置文档有错,订正配置文档,再次启动

2.相关文件夹/文件的权限有问题,查看权限,修改权限

错误解决

因为我都是root权限操作的,所以同步数据库经常用用的是glance-manage db_sync 这次也没什么问题,同步是成功的,问题找不到原因就只能乱撞了,google也没找到。当我输入了su -s /bin/sh -c "glance-manage db_sync" glance 狐狸尾巴终于露出来了,同步出错,错误信息:

Traceback (most recent call last):
  File "/usr/bin/glance-manage", line 10, in <module>
    sys.exit(main())
  File "/usr/lib/python2.7/site-packages/glance/cmd/manage.py", line 273, in main
    log.setup('glance')
  File "/usr/lib/python2.7/site-packages/glance/openstack/common/log.py", line 460, in setup
    _setup_logging_from_conf(product_name, version)
  File "/usr/lib/python2.7/site-packages/glance/openstack/common/log.py", line 529, in _setup_logging_from_conf
    filelog = logging.handlers.WatchedFileHandler(logpath)
  File "/usr/lib64/python2.7/logging/handlers.py", line 392, in __init__
    logging.FileHandler.__init__(self, filename, mode, encoding, delay)
  File "/usr/lib64/python2.7/logging/__init__.py", line 902, in __init__
    StreamHandler.__init__(self, self._open())
  File "/usr/lib64/python2.7/logging/__init__.py", line 925, in _open
    stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/var/log/glance/api.log'

api.log 权限有问题,查看之

# ll /var/log/glance/api.log                                                          
-rw-r--r--. 1 root root 14783 Jul 11 22:25 /var/log/glance/api.log

果然,将它改成glance组glance的,再次同步,再次重启,ok

# chown -R glance:glance /var/log/glance/api.log
# su -s /bin/sh -c "glance-manage db_sync" glance
#  systemctl start openstack-glance-api.service 
<think>好的,用户遇到了OpenStack Glance服务启动失败的问题,具体报错是openstack-glance-api.service failed status=1/FAILURE start-limit。我需要根据提供的引用信息和常见解决方案来梳理步骤。 首先,查看引用的内容,用户可能已经尝试过修改服务配置,比如注释掉Restart=on-failure,但问题依旧。引用3中提到权限问题,比如日志文件的所有权可能不正确,导致服务启动失败。用户执行了chown -R glance:glance /var/log/glance/api.log,并且同步了数据库,之后成功启动服务。这说明权限和数据库同步可能是关键点。 另外,引用4显示部署过程中有初始化问题,可能涉及镜像拉取失败或Pod处于pending状态,这可能与网络或存储配置有关,但当前用户的问题是在服务启动阶段,所以可能需要先排除基础配置问题。 接下来,我需要整理常见的原因和解决方案: 1. **权限问题**:Glance的日志文件或相关目录权限不正确,导致服务无法写入。需要检查/var/log/glance等目录的所有者和权限,确保属于glance用户和组。 2. **数据库同步问题**:如果数据库没有正确同步,服务启动会失败。使用glance-manage db_sync命令进行同步,但必须以glance用户身份执行,如引用3中的su命令。 3. **配置文件错误**:检查Glance的配置文件(如glance-api.conf和glance-registry.conf)中的数据库连接、身份验证参数、存储后端设置是否正确。比如,数据库URL是否正确,Keystone的认证信息是否准确,存储路径是否存在且有权限。 4. **服务依赖问题**:Glance依赖的其他服务(如MariaDB、RabbitMQ、Keystone)是否正常运行。需要检查这些服务的状态和日志,确认无异常。 5. **日志分析**:查看/var/log/glance/api.log的具体错误信息,根据日志中的提示定位问题。例如,若日志显示数据库连接失败,则需要检查数据库配置和网络连通性。 6. **SELinux或防火墙**:SELinux可能阻止服务访问所需资源,可以暂时禁用SELinux或调整策略。防火墙规则是否阻止了必要的端口,如9292(Glance API端口)。 7. **服务启动限制**:systemd的启动限制可能导致服务无法重启,需要重置计数器,使用systemctl reset-failed命令,并检查服务配置中的Restart参数。 根据用户提供的引用,特别是引用3,用户通过修改日志文件权限和同步数据库解决了问题。因此,在解决方案中需要强调这两点,同时补充其他可能的检查步骤,如配置文件、依赖服务、日志分析等,形成全面的解决流程。</think>### OpenStack Glance服务启动失败问题解决方案 #### 一、检查日志定位问题根源 1. **查看服务状态和日志** ```bash journalctl -u openstack-glance-api.service -xe # 查看服务详细日志 tail -n 100 /var/log/glance/api.log # 检查Glance API日志 ``` 通过日志中的错误提示(如权限拒绝、数据库连接失败等)精准定位问题[^3]。 --- #### 二、关键修复步骤 2. **权限问题修复** Glance服务要求日志和存储目录必须属于`glance`用户: ```bash chown -R glance:glance /var/log/glance/ # 修正日志目录权限 chown -R glance:glance /var/lib/glance/ # 修正存储目录权限 ``` 3. **数据库同步操作** 未同步或同步失败的数据库结构会导致服务崩溃: ```bash su -s /bin/sh -c "glance-manage db_sync" glance # 以glance用户执行同步[^3] ``` 4. **配置文件校验** 检查以下配置文件中的关键参数: - `/etc/glance/glance-api.conf` ```ini [database] connection = mysql+pymysql://glance:GLANCE_PASS@controller/glance # 确认数据库连接正确 [keystone_authtoken] auth_url = http://controller:5000 username = glance password = GLANCE_PASS # 核对Keystone认证信息 [glance_store] stores = file,http # 存储后端配置 default_store = file filesystem_store_datadir = /var/lib/glance/images/ # 确认存储路径存在 ``` --- #### 三、依赖服务与系统环境 5. **检查依赖服务状态** ```bash systemctl status mariadb rabbitmq-server openstack-keystone # 确保数据库、消息队列、认证服务正常 ``` 6. **SELinux与防火墙** ```bash setenforce 0 # 临时关闭SELinux(测试用) firewall-cmd --add-port=9292/tcp # 开放Glance API端口 ``` --- #### 四、服务重启与验证 7. **重置systemd启动限制** ```bash systemctl reset-failed openstack-glance-api.service # 清除启动失败计数器 systemctl daemon-reload # 重新加载配置 systemctl start openstack-glance-api.service # 启动服务 ``` 8. **验证服务功能** ```bash openstack image list # 查看镜像列表 glance image-create --name test # 上传测试镜像 ``` --- #### 五、高级排查(若仍失败) - **查看完整调用栈** 若日志显示Python模块导入错误,可能是虚拟环境权限问题,需重装Glance组件: ```bash dnf reinstall openstack-glance # RedHat/CentOS apt install --reinstall glance # Ubuntu/Debian ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值