OpenStack的部署与使用有一定难度,在实践过程中不可避免地会遇到各种问题。本文将记录一些在部署和使用OpenStack社区版时常见的错误,并对每个错误进行分析与解决。
一、OpenStack创建虚拟机实例失败
1、执行创建虚拟机实例的命令如下:
openstack server create --flavor m1.tiny --image Ce6f62d866155.
错误信息:
实例 “centos7-init2” 执行所请求操作失败,实例处于错误状态。请稍后再试 [错误: 超过最大重试次数,所有可用主机已尝试完,无法重新尝试实例构建,实例ID:1bd5d1af-17b1-4524-9f9c-6be299d68293]
在Dashboard中查看实例详情时,可以看到如下错误日志。
2、虚拟机实例状态
此时,虚拟机实例的状态为错误。通过日志可以进一步确认问题,尤其是没有获取到固定IP地址,说明问题可能出在网络层面。
错误代码为500,表示实例在创建过程中遇到问题。错误提示中提到“实例无法调度”,这意味着在尝试多次后,OpenStack无法找到合适的主机来运行该实例。接下来,可以通过在所有包含nova服务的节点上执行以下命令,快速定位日志错误信息:
grep "ERROR" /var/log/nova/*
在其中一台计算节点的日志中,找到如下错误信息:
倒数第二行提示 security group 没有被发现。
3、问题分析
结合实例启动的时间与日志文件的上下文信息,可以确定问题出在找不到安全组。通过查看OpenStack中安全组的设置,发现安全组已存在,但在创建实例时却无法找到。这可能与之前网络配置的更改有关。
4、解决方案
有两种解决方法:
重建安全组:删除并重新创建安全组。
使用默认安全组:如果使用的是管理员账号登录OpenStack,可以直接使用admin项目下的安全组。
步骤:
删除出问题的实例。
重新创建实例时,指定 2035d43a-0e81-4257-bd23-13af431b9f91 这个安全组。
解决后,再次查看实例状态,发现没有错误,Dashboard中也不再显示错误信息,实例顺利启动。
二、OpenStack创建虚拟机失败
2、错误信息:
No valid host was found.
错误代码仍为500。
2、问题分析
这个错误相对常见,通常不用过多查看日志,直接可以推测为系统资源不足导致的。常见原因包括:
- 可用资源不足,如硬盘或内存不够;
- 指定的实例规格过大,超出系统资源。
3、解决方案
可以通过以下几种方式来解决:
- 删除不再使用的实例,释放资源;
- 确保创建实例时,选择合适的规格,避免指定过高的硬件资源。例如,如果整个系统的硬盘只有100GB,内存只有16GB,选择 m1.xlarge 规格的实例将无法创建,应该选择合适规格如 m1.tiny。