Первое WTF openstack/neutron

Nov 06, 2013 17:32

Симптом:
Перестала выдаваться аренда.

Диагностика: запрос уходит в физическую сеть с compute-node (завёрнут в GRE), приходит на network-node (аналогично), доходит до интерфейса внутри namespace'а.
Его видит и игнорирует dnsmasq, сообщая, что нет лиза для такого мака.

Вспомогательный симптом: после удаления сетей содержимое /var/lib/neutron/dhcp не изменяется и не очищается.

Процесс /usr/bin/neutron-dhcp-agent запущен.

Добавление опций в конфиге не изменяют ситуацию.

Причина: опечатка в конфиге (пробел перед именем параметра в начале) - демон падал при старте. А то, что висело в памяти - обслуживало старые сети не хотело завершаться, потому что копия, которая их завершить должна была, не могла запуститься из-за кривого конфига.

Реальное описание проблемы - в /var/log/upstart/neutron-dhcp-agent:

Traceback (most recent call last):
File "/usr/bin/neutron-dhcp-agent", line 10, in
sys.exit(main())
File "/usr/lib/python2.7/dist-packages/neutron/agent/dhcp_agent.py", line 590, in main
cfg.CONF(project='neutron')
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 1632, in __call__
else sys.argv[1:])
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 2133, in _parse_cli_opts
return self._parse_config_files()
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 2148, in _parse_config_files
return self._oparser.parse_args(self._args, namespace)
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 1496, in parse_args
return super(_CachedArgumentParser, self).parse_args(args, namespace)
File "/usr/lib/python2.7/argparse.py", line 1688, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/lib/python2.7/argparse.py", line 1720, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/lib/python2.7/argparse.py", line 1926, in _parse_known_args
start_index = consume_optional(start_index)
File "/usr/lib/python2.7/argparse.py", line 1866, in consume_optional
take_action(action, args, option_string)
File "/usr/lib/python2.7/argparse.py", line 1794, in take_action
action(self, namespace, argument_values, option_string)
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 1062, in __call__
ConfigParser._parse_file(values, namespace)
File "/usr/lib/python2.7/dist-packages/oslo/config/cfg.py", line 1252, in _parse_file
raise ConfigFileParseError(pe.filename, str(pe))
oslo.config.cfg.ConfigFileParseError: Failed to parse /etc/neutron/dhcp_agent.ini: at /etc/neutron/dhcp_agent.ini:33, Unexpected continuation line: ' use_namespaces = True'

Не рекорд, конечно, но ~7 часов отладки (большая часть которых ушла на изучение того, как оно там внутри устроено) заняло. Особенно всё было осложнено тем, что service neutron-dhcp-agent restart ни на что такое не ругался и после операции бинарник был запущен (то есть предполагалось, что если сервис завершился и запустился, то всё хорошо, а он на самом деле даже не завершался).

Предыдущий "пробел года" у меня был в конфиге ietd'а в 2010 году: http://amarao-san.livejournal.com/1920480.html

openstack, грабли, neutron

Previous post Next post
Up