我使用Puppet设置了OpenStack,并且在大多数情况下工作得很好,但是我遇到了一个相当有害的问题:我的Ubuntu客户端(可能还有其他人)在启动时无法检索元数据。
我旋转了一个Cirros实例来进行一些快速testing并发现
http://169.254.169.254/2009-04-04/meta-data/的请求会产生预期的结果,表明实例实际上可以到达元数据服务器。 我认为这可能是个别实例的问题,所以我创build了另外一个Ubuntu 14.10客户端,但是它有一个完全相同的问题:
util.py[WARNING]: Failed fetching metadata from url `http://169.254.169.254/2009-04-04/meta-data/` init: Error while reading from descriptor: Broken pipe
版本:* Ubuntu 14.10服务器64位(主机和客人)*新星2.17.0(冰室)
谢谢你的时间!
编辑
我从零开始重build了我的OpenStack安装,但是没有解决这个问题,希望在之前的设置中出错。 不幸的是,重新安装并没有解决问题。 当然,这并不意味着我在这个安装过程中重复的并不是一个错误。 尽pipe如此,看起来奇怪的是,Cirros图像可以抓取该URL,但是Ubuntu 14.10服务器映像不能,即使它获得IP。
这个问题的罪魁祸首是我的MTU设置。 我总是忘记处理MTU,但我遇到了一个小文章(某处,如果我find它,我会张贴它)概述了同样的问题。 我的解决scheme是指定
dnsmasq_config_file = /etc/neutron/dnsmasq.conf
在我的/etc/neutron/dhcp_agent.iniconfiguration中。 /etc/neutron/dnsmasq.conf文件仅包含
dhcp-option=26,1424
现在,所有的实例都可以毫无问题的获取元数据! 尽pipe1424不是一个硬性和快速的价值。 我只是select了它,因为我不想确定什么是合适的价值。