openstack问题记录

  • 2019 年 10 月 5 日
  • 笔记

先去查看对应的日志:/var/log/,再来排查错误

1.实例处于错误状态

1556263767222

解决办法:

1.使用openstack hypervisor list查看

1556263862029

2.然后openstack hypervisor show挨个show一下,看看vcpus,local_gb,memory_mb

1556264047817

556264004581

1556264031226

local_gb只剩9g可用,磁盘空间不够,需要对/root分区扩容

1556264173404

或者使用卷来创建实例,创建的时候记得选择实例类型中根磁盘为0的来创建,否则会占用local_gb的空间,会导致后面无法创建虚拟机。

根磁盘是为镜像和快照设置的大小,只有用卷创建的时候可以设置根磁盘大小为0。

2. Exceeded maximum number of retries(超过最大重试次数)

Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance e5b8c859-bbdd-49ee-9e8e-14ca63ecb67d.].

3. openstack虚拟机运行慢

  1. 执行以下命令查看计算节点是否支持虚拟机的硬件加速:
egrep -c '(vmx|svm)' /proc/cpuinfo
  1. 如果此命令返回值,则计算节点支持硬件加速,通常不需要其他配置。

    如果此命令返回值zero,则您的计算节点不支持硬件加速,您必须配置libvirt为使用QEMU而不是KVM。

  • 编辑文件中的[libvirt]部分,/etc/nova/nova.conf如下所示:

    [libvirt]  # ...  virt_type = qemu

4. RuntimeError: Unable to create a new session key. It is likely that the cache is unavailable.

说明缓存配置存在问题,解决办法如下:

/etc/openstack-dashboard/local_settings 里的

SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’(文档里说是如此配置,然而并不好使)

改成

SESSION_ENGINE = ‘django.contrib.sessions.backends.file’

重启httpd和memcached,我用的CentOS7所以命令是

systemctl restart httpd.service memcached.service

刷新页面重新登录,成功进入Dashboard。

5. Volume driver LVMVolumeDriver not initialized

1567511904396

这个其实是第一个红框中的错误引发的,意思就是说执行lvcreate命令的时候报错,而lvcreate是用来创建lv(逻辑卷)的,而报错是因为vg中剩余的空间为0,也就是下图的VFree(本来是0,这个是我增加完剩余空间之后的截图,之前忘截图了)。

1567511978337

知道了报错的原因,解决办法就是要增加VFree的大小,这里看需要给cinder分配多大的存储空间,我划分了1T过去,然后重启一下cinder相关的服务:systemctl restart openstack-cinder-volume.service target.service。cinder使用的空间如下所述,所以上面那张图中VFree的值是52.2g。

1567512468075

cinder涉及的linux知识主要是lvm(逻辑卷管理),所以先去搞清楚pv,vg,lv,pe这些概念,然后知道怎么在linux中创建和管理LVM卷。

6. openstack-cinder-volume.service启动失败

执行journalctl -xe可以详细地查看服务的启动过程

1567513388161

/etc/cinder/cinder.conf中出现了不期待的连续行,打开文件检查一下,发现每行都多了一个缩进。。。去掉缩进,重启服务,成功启动。

7. vnc console : failed to connect to server (code: 1006)

selection_545

解决办法:

先去查看日志,tail -f /var/log/nova/nova-novncproxy.log,结果发现vnc发送请求报文里面host的ip和实际计算节点的ip不一致,这是由于计算节点ip发生了改变导致的,而我没有在计算节点重启nova服务,导致其还是以原来的ip发送请求,从而发生了错误。

1567495871070

所以,只需要在ip发生改变的计算节点重启下nova服务就行了,执行命令systemctl restart libvirtd.service openstack-nova-compute.service