**Abstract**: Реальная история из жизни реальных администраторов по отлову идиотского бага.
Поучительная часть: Никогда недооценивай зависимости зависимостей.
Рядовой апгрейд в лаборатории с Openstack Mitaka до Openstack Newton (более новая версия). Несколько deprecated options в файлах конфигурации, keystone переехал с eventlet на WSGI и поломал существующую конфигурацию с haproxy; из-за типового «ipv6 listen» apache не стал конфликтовать с haproxy за одинаковые используемые порты на звезде (один слушал ipv6, другой ipv4 only), так что запросы уходили в haproxy вместо апача, где умирали с 503, т.к. апстрима не было… Впрочем, история не об этом.
После того, как основные проблемы были пофишкены, Nova (одна из компонент Openstack) при запуске начала падать с ошибкой: `ConfigFileValueError: Value for option url is not valid: invalid URI: '
http://neutron-server.example.com:21345'.`. Это было очень странно. С учётом, что в конфиге поменялось 100500 опций, возникло подозрение, что мы используем устаревшую опцию, которую больше не надо использовать. Однако, документация говорила, что пример опции — `url =
http://controller:9696`.
Очевидные шаги отладки:
* Закомментировать опцию — не падает
* Повторить опцию из примера — не падает
* Заменить в опции порт на «наш» — возможно, нельзя использовать слишком большой номер порта — не падает
* Заменить в опции url на наш — падает
* Вернуть «controller» на место — не падает
* Подозрение: не умеет fqdn: заменить controller на controller.dns — не падает
* Подозрение: слишком много точек (у нас в реальном коде было 8 точек в url) — controller.dns1.dns2.dns3.dns4 — не падает
* Оставить из нашего имени только первую часть: `
http://neutron-server:9696` — падает! гипотеза уже понятна.
* Проверка1: `
http://neutronserver:9696` — не падает
* Проверка2: `
http://with-dashes:9696` — падает!
[Читать дальше →][1]
[1]:
https://habrahabr.ru/post/318982/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut