为什么我无法访问Openstack元数据服务?

问题描述

我有kolla-ansible openstack ussuri个集群。过去效果很好。偶然地,元数据服务不能被实例访问。 openstack中的密钥对未导入到实例。我检查了实例日志。我发现此警告:
[WARNING]: No active Metadata service found
我检查了neutron_Metadata_agent是否正在运行。 我从运行在此问题之前创建的实例中尝试了curl http://169.254.169.254/openstack

ubuntu@test-vm:~$ curl http://169.254.169.254/openstack
curl: (7) Failed to connect to 169.254.169.254 port 80: Connection refused

这是实例内部的ip路由

ubuntu@test-vm:~$ ip ro
default via 172.30.0.1 dev ens3 proto dhcp src 172.30.255.102 metric 100 
169.254.169.254 via 172.30.255.3 dev ens3 proto dhcp src 172.30.255.102 metric 100 
172.30.0.0/16 dev ens3 proto kernel scope link src 172.30.255.102 

有人可以帮我吗?谢谢您的帮助。

解决方法

实际的元数据服务由Nova API托管。它直接监听port 8775/TCP,或者如果使用vhost作为单独的Apache配置,则监听。 TLS代理。 Neutron元数据代理仅充当实例与实际元数据服务之间的转发器。

This graphic描述了通信流程(尽管对于Train来说,但对于Ussuri可能还是一样)。

我建议检查Nova API是否仍在监听port 8775/TCP,如果是,请尝试调试graphic中的通信流。还要检查您实例的安全组。也许您的默认安全组已损坏。