Openstack

Cloud-init 無法檢索元數據

  • January 9, 2015

我使用 Puppet 設置了 OpenStack,它在大多數情況下都執行良好,但我遇到了一個相當有害的問題:我的 Ubuntu 來賓(可能還有其他人)在啟動期間無法檢索元數據。

我啟動了一個 Cirros 實例來執行幾個快速測試並發現

  • 網路執行正常。實例可以ping 網關,也可以ping 外部世界。
  • 產生預期結果的請求http://169.254.169.254/2009-04-04/meta-data/,表明實例實際上可以到達元數據伺服器。

我當時認為這可能是單個實例的問題,所以我啟動了另一個 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 Server 64 位(主機和來賓)* Nova 2.17.0(Icehouse)

謝謝你的時間!

編輯

我從頭開始重建我的 OpenStack 安裝,否則未能解決此問題,希望在之前的設置中出現問題。不幸的是,重新安裝並沒有解決問題。當然,這並不意味著我在安裝過程中複製的不是錯誤。儘管如此,Cirros 映像可以獲取該 URL 但 Ubuntu 14.10 Server 映像卻不能,即使它正在獲取 IP,這似乎很奇怪。

這件事的罪魁禍首是我的 MTU 設置。我總是忘記處理 MTU,但我偶然發現了一篇小文章(在某個地方,如果我找到它,我會發布它),其中概述了同樣的問題。我的解決方案是指定

dnsmasq_config_file = /etc/neutron/dnsmasq.conf

在我的/etc/neutron/dhcp_agent.ini配置中。該/etc/neutron/dnsmasq.conf文件僅包含

dhcp-option=26,1424

現在所有實例都可以毫無問題地獲取它們的元數據!不過,1424 並不是一個硬性的值。我之所以選擇它,是因為我不想確定合適的值是多少。

引用自:https://serverfault.com/questions/655979