【Openstack 常见问题定位】

本文详细阐述了如何通过查看OpenStack的日志、配置文件、服务状态以及实例操作来定位和解决常见的OpenStack问题,如网络错误、认证错误、配置错误、迁移失败、IP获取问题、Read-only错误和创建虚拟机失败等。
摘要由CSDN通过智能技术生成

      首先要确定错误的类型。常见的OpenStack错误类型包括:网络错误、认证错误、配置错误等。通过查看错误日志或者在命令行中输出错误信息,可以帮助我们确定错误的类型。

思路

1、查看日志
      OpenStack的各个组件都会记录日志文件,通过查看日志文件可以帮助我们定位错误。常见的日志文件包括:
glance
/var/log/glance/api.log
nova
/var/log/nova/(api.log/compute.log)
neutron
/var/log/neutron/
glance
/var/log/glance/
cinder
/var/log/cinder/
keystone
/var/log/keystone/
libvirtd–qemu里的日志很重要
/var/log/libvirt/

2、查看配置文件
      配置文件中包含了各种配置选项,可能会影响OpenStack的运行。可以通过查看配置文件来排除配置错误。
Keystone - 身份服务:
/etc/keystone/keystone.conf
Glance - 镜像服务:
/etc/glance/glance-api.conf
/etc/glance/glance-registry.conf
Nova - 计算服务:
/etc/nova/nova.conf
Neutron - 网络服务:
/etc/neutron/neutron.conf
/etc/neutron/plugin.ini(根据插件的不同,配置文件也可能是其他名称,例如/etc/neutron/l3_agent.ini)
Cinder - 块存储服务:
/etc/cinder/cinder.conf
Swift - 对象存储服务:
/etc/swift/swift.conf
/etc/swift/proxy-server.conf
Horizon - 仪表板:
/etc/openstack-dashboard/local_settings
Ceilometer - 监控服务:
/etc/ceilometer/ceilometer.conf

3、查看服务状态

crm status   # 查看高可用集群状态
systemctl | grep neutron   # 找出neutron的各个服务
systemctl | grep nova    # 找出nova的各个服务
systemctl | grep cinder   # 找出cinder 的各个服务
systemctl status ...

通过查看服务状态可以帮助我们发现服务是否正常运行。

查看Nova服务状态: openstack compute service list 查看Neutron服务状态: openstack network-agent list

4、重启服务
Nova —计算服务
sudo systemctl restart openstack-nova-api.service
sudo systemctl restart openstack-nova-compute.service
sudo systemctl restart openstack-nova-scheduler.service
sudo systemctl restart openstack-nova-conductor.service
Neutron —网络服务
sudo systemctl restart neutron-server.service
sudo systemctl restart neutron-linuxbridge-agent.service
sudo systemctl restart neutron-dhcp-agent.service
sudo systemctl restart neutron-metadata-agent.service
Keystone —认证服务
sudo systemctl restart apache2.service
Glance —镜像服务
sudo systemctl restart openstack-glance-api.service
sudo systemctl restart openstack-glance-registry.service
Cinder —块存储服务
sudo systemctl restart openstack-cinder-api.service
sudo systemctl restart openstack-cinder-scheduler.service
sudo systemctl restart openstack-cinder-volume.service
Horizon —仪表盘服务
sudo systemctl restart apache2.service

具体问题

Openstack 迁移失败问题定位

openstack server show vm 或者nova show vm  ##查看vm状态
nova instance-action-list vm_id  ## 查看虚拟机ID操作结果,执行的动作列表
nova instance-action [vm_id] [req_id]  ##server_id为执行创建或热迁移的虚拟机id,req_id为instance-action-list中查询到的Request_ID
grep -r "Request_ID" /var/log/nova/nova-compute.logt
若是没选到主机,查看schedule日志,查找选主情况
 

OpenStack-vm获取不到ip

1. 看neutron服务状态,确保DHCP服务正常运行--neutron agent-list
2. 查看dnsmasq进程是否正常   -- ps aux |grep dnsmasq
3. 检查ovs网桥中的br-int集成网桥是否有tap设备连接到了dhcp-agent的namespace上
    ovs-vsctl show ##找到Bridge br-int
4. 在dhcp命名空间中找到对应网络的namespace中br-int网桥上对应的tap设备,然后查看ip配置:
   ip netns show
   ip netns exec qdhcp-062d2b07-339e-4d54-aaca-6b9169d17f6c  ip a

在创建虚拟机发请求后,dnsmasq进程会给虚拟机分配好mac地址和ip地址,并写入   
到/var/lib/neutron/dhcp/network-id 目录下的host文件中。   
虚拟机在内网中发送广播来获取ip的过程中,dnsmasq 会监听到然后将host文件中的   
对应ip通过dchp-namespace分配给虚拟机。

#####问题分析
nova list --all-tenant |grep vm_01  ##查找虚拟机的id
nova interface-list  vm_id  ##查找虚拟机的port
nova interface-detach <vm_id> <port_id>  ##删除网卡
neutron port-list ##查看 port 信息

创建虚拟的时候ip获取过程:
      在创建vm的时候,Neutron 会为其分配一个 port,里面包含了 MAC 和 IP 地址信息 /var/lib/neutron/dhcp/id。这些信息会同步更新到 dnsmasq 的 host 文件。同时,nova-compute会生成instance的xml文件,其中网络部分如下:virsh edit instance-00000001;xml中配置的IP和mac在/var/lib/neutron/dhcp/id/host中是有的;
在这里插入图片描述
启动过程:
虚拟机第一次启动时:
      虚拟机vm1启动时,会发出dhcpdiscover广播报文,该报文会在整个network(vlan)中被收;
      dhcpdiscover广播报文会到达tap2c6747c1-2a,dnsmasq监听在它上面,dnsmasq检查对应网络的host文件,发现有对应选项,于是dnsmasq以dhcpoffer报文将ip(192.168.1.10),netmask(24)等信息发送给虚拟机vm1
      虚拟机vm1发送dhcprequest广播消息,确认接受dhcpoffer消息。
      dnsmasq对虚拟机vm1的dhcprequest报文发送dhcpack消息进行确认,虚拟机vm1收到dhcpack消息之后,开始使用对应ip,整个过程结束。

dnsmasq作为DHCP服务端;DHCP agent 在网络节点运行上,默认通过 dnsmasq 实现 DHCP 功能。

在创建虚拟机的时候,会通过neutron的DHCP服务为虚拟机动态分配一个ip地址。Neutron提供DHCP功能的组件是运行在网络节点上的neutron-dhcp-agent服务。
ps -elf | grep dnsmasq ##dnsmasq进程为网络提供dhcp功能
      每创建一个network,就会有一个dnsmasq进程;也就是说 /var/lib/neutron/dhcp/下面的id数量和dnsmasq的进程一样多。
在这里插入图片描述
dnsmasq重要命令参数解释:

  • --interface: dnsmasq用来监听DHCP请求/响应的端口,从而提供DHCP服务。
  • --dhcp-hostsfile:存放DHCP host信息的文件,dnsmasq会从该文件中获取port和mac地址的对应关系。
  • --dhcp-leasefile: 租约文件,当我们成功运行dhcpd服务后,就可以分配ip地址给客户端,这些租用信息都可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来查看每个ip地址的租约记录。
    DHCP对应的namespace以qdhcp-network_id命名,可以通过ip netns查看.
    通过命令ip netns exec qdhcp-6f854b6c-231d-48c3-876d-0514718bbb58 ip a 可以看到在该网络的namespace中,为tap22c9cf6e-cb设备配置了ip地址;而tap22c9cf6e-cb设备是连接在br-int上的一个port(通过ovs-vsctl show查询),dnsmasq就是通过监听该端口来为对应网络提供dhcp服务。

nova list报错

所有虚拟机无法访问,执行nova list等指令报错。
问题确认:
1.查看openstack日志log(nova,keystone)发现rabbitmq无法连接
2.执行rabbitmqctl status确认rabbitmq服务状态
问题解决:
1.重启openstack控制节点
2.控制节点服务器重启后,第一时间执行service rabbitmq-server restart,手动启动rabbitmq服务

OpenStack-vm Read only

问题描述: 虚拟出现出现Read-only
报错read-only file system的原因是你所在的分区只有读权限, 没有写权限
操作系统为了保护自身,避免损坏文件系统,采取措施:文件系统read only

先查看/etc/fstab
故障恢复办法:
如果是系统盘可以尝试reboot ,启动时系统会提示自动修复。
如果是挂载盘,可以尝试修复文件系统:
fsck -t ext4 -a /dev/sdb (xfs格式磁盘对应修复命令为xfs_repair)

或者重新挂载:mount -o remount -rw /data

从虚拟机上分离volume卷: nova volume-detach VM_ID Volume_ID

[root@controller ~]# openstack volume list  ## 查看卷ID
[root@controller ~]# nova volume-detach ROLY-3 volume_id #把卷从虚拟机上分离
[root@controller ~]# nova volume-attach 云主机名称 volume_id ##把卷连接到虚拟机上

创建虚拟失败

No valid host was found. There are not enough hosts available

1、 nova show vm_id ## 查看错误信息

在这里插入图片描述
nova instance-action-list vm-id 查看vm的操作信息
nova hypervisor-list 查看计算节点状态

#查看虚拟机信息
nova show $VM_UUID
openstack server show $VM_UUID
#查看虚拟机当前状态
nova instance-action-list $VM_UUID

#重置虚拟机状态
nova reset-state --active $VM_UUID
openstack server set --state active $VM_UUID 
#重置后需要硬重启 
nova reboot $VM_UUID --hard 
#验证 
openstack server show $VM_UUID

nova availability-zone-list   ##查看域信息

1、看将要创建虚拟所在可用区AZ下的compute是否充足
2、看对应compute的nova-compute日志和nova-scheduler.log
3、查看虚机对应的宿主机compute: nova show vm-id |grep host

删除compute并重新加回

尝试将compute节点从nova service-list中删除,并重新加入到集群中
停掉compute节点的nova-compute 服务:nova service-delete <计算节点的uuid>
开启计算节点的nova-compute服务,让计算节点重新注册:sudo systemctl restart openstack-nova-compute.service

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenStack是一种用于构建私有云或公有云的开源软件平台。在进行OpenStack搭建时,可能会遇到以下问题: 1. 硬件要求:OpenStack需要强大的硬件支持。在进行搭建之前,需要检查您的硬件是否符合要求。 2. 安装环境:OpenStack需要在Linux操作系统上运行。在安装OpenStack之前,需要确保您的系统已经安装了必要的软件和服务。 3. 网络配置:OpenStack是网络密集型应用程序,因此正确的网络配置是至关重要的。在搭建OpenStack之前,需要规划好网络拓扑,并配置好网络设备。 4. 软件依赖:OpenStack依赖于许多不同的软件和服务。在搭建OpenStack之前,需要确保这些软件和服务已经正确安装,并且能够正常运行。 5. 安全问题OpenStack是一个非常复杂的软件平台,因此安全问题也是一个重要的考虑因素。在搭建OpenStack之前,需要确保所有的安全漏洞都已经得到了修复。 OpenStack的搭建过程可以分为以下几个步骤: 1. 安装操作系统:安装Linux操作系统,可以选择Ubuntu、CentOS等。 2. 安装OpenStack软件包:安装OpenStack软件包,可以选择使用二进制软件包、源码编译等方式。 3. 配置网络:配置网络拓扑,并设置网络设备。 4. 初始化OpenStack:使用指定的命令进行初始化操作,包括创建数据库、设置管理员账号等。 5. 配置OpenStack:根据需要进行设置和配置,包括创建虚拟机、配置存储、配置网络等。 6. 启动OpenStack:启动OpenStack服务,并检查服务是否正常运行。 在搭建过程中,可能会遇到各种各样的问题,需要根据实际情况进行解决。建议在搭建之前,先了解OpenStack的基本原理和架构,以便更好地理解和解决问题。同时,可以参考OpenStack官方文档和社区论坛,获取更多的帮助和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值