Я установил OpenStack с Puppet, и он по большей части отлично работает, но я столкнулся с довольно опасной проблемой: мои гости Ubuntu (и, вероятно, другие) не могут получить метаданные во время загрузки.
Я создал экземпляр Cirros, чтобы запустить пару быстрых тестов, и обнаружил
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 - нет, даже если он получает IP.
Виновником в этом была моя настройка MTU. Я всегда забываю обрабатывать MTU, но наткнулся на небольшую статью (где-то, если найду, выложу), в которой описывалась та же проблема. Моим решением было указать
dnsmasq_config_file = /etc/neutron/dnsmasq.conf
в моем /etc/neutron/dhcp_agent.ini
конфигурация. В /etc/neutron/dnsmasq.conf
файл содержит только
dhcp-option=26,1424
И теперь все экземпляры без проблем получают свои метаданные! Однако 1424 не является точным и быстрым значением. Я просто выбрал его, потому что не хотел определять правильное значение.