OpenStack 中的云实例无法导入公共 SSH 密钥

OpenStack 中的云实例无法导入公共 SSH 密钥

有人知道如何实际修复 OpenStack 中的 Ubuntu Cloud VM 实例无法从 Nova-api 的元数据服务器导入公钥的问题,并显示以下消息:

2012-07-18 11:05:45,409 - util.py[WARNING]: 'http://169.254.169.254/2009-04-04/meta-data/instance-id' failed [113/120s]: url error [[Errno 111] Connection refused]
2012-07-18 11:05:52,419 - DataSourceEc2.py[CRITICAL]: giving up on md after 120 seconds

我发现很多人提到了这个问题(例如这里或者这里) 并尝试打开/关闭此 iptables 规则(使用 iptables-save 和 iptables-apply),但不起作用。有趣的规则似乎是:

$ iptables -t nat -L -v | grep -n3 169.254.169.254
48-
49-Chain nova-network-PREROUTING (1 references)
50- pkts bytes target     prot opt in     out     source               destination         
51:   32  1920 DNAT       tcp  --  any    any     anywhere             169.254.169.254      tcp dpt:http to:128.131.172.155:8775
52-    0     0 DNAT       udp  --  any    any     anywhere             sneezy.infosys.tuwien.ac.at  udp dpt:1000 to:10.0.0.2:1194
53-
54-Chain nova-network-float-snat (1 references)

顺便问一下,有什么好方法可以手动调试这个问题吗?

答案1

修复一体式部署中的问题

在 IRC 频道 #openstack (zynzel、livemoon) 的好心人的帮助下,我们通过简单地重新启动 nova-api 解决了这个问题:

sudo restart nova-api

您可以通过以下命令验证元数据服务器确实已启动:

lsof -i:8775

从您的控制节点或

nmap -sS -sV -O -P0 -p8773-8776 <controller_ip>

使用您的控制器节点的 IP 地址并检查端口 8775/tcp 是否打开并被监听。

这可能是 Dodai-deploy 的问题,因为必须在安装 nova-compute 之后安装 nova-api,才能正确初始化元数据服务器。

修复多节点部署中的问题

如果您运行多主机部署并想要使用从元数据服务器提取公钥的 Ubuntu 云实例,您需要在控制器的 nova.conf 中进行以下操作:

multihost=True
enabled_apis=metadata,ec2,osapi_compute,osapi_volume

计算节点的 nova.conf 中有如下内容:

multi_host=True
enabled_apis=metadata

如果没有这个,您将在实例的控制台输出(nova console-log test-instance)中收到有关无法访问元数据服务器的错误,并且您将无法通过 ssh 进入它们。

另一个解决方案是通过用户数据仪表板表单(或终端中的文件)告诉您的实例您在 Launchpad 上的身份,以便它可以从那里提取您的公钥。语法是(没有在其他地方解释,但在源代码):

#cloud-config
ssh_import_id: [your-launchpad-username]

相关内容