amarao (amarao_san) wrote,
amarao
amarao_san

Первое WTF openstack/neutron

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

Диагностика: запрос уходит в физическую сеть с 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
Tags: neutron, openstack, грабли
Subscribe

  • Rust soundness

    Каждый раз, когда я сталкиваюсь с маленькими "но" в Rust'е, это ощущение тщательной продуманности. Например, простейшие fold-функции для итераторов:…

  • still_ntp

    В ходе локального мозгового штурма у меня родилась суперидея. Надо написать ntp сервер, который может отдавать указанную дату. Т.е. сказали при…

  • arping'а не достаточно

    Я обнаружил, что arping не умеет делать целый запрос полностью (т.е. source mac, dest mac, source ip, dest ip). Dest либо IP, либо mac, и это немного…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments