Новый сетевой DHCP не выпускает IP с помощью force_dhcp_release=True
Проблема, которую я вижу, заключается в том, что когда nova-network вызывает dhcprelease после завершения экземпляра (из-за принудительного hcp_release = True), адрес не всегда освобождается (системный журнал не показывает запрос DHCPRELEASE). Затем позже, если nova назначил новому экземпляру тот же IP-адрес, который не был освобожден, запрос DHCP игнорируется, и ошибка в системном журнале покажет, что dnsmasq увидел запрос и отказался, потому что IP-адрес уже сдан в аренду другому MAC-адресу (тот, принадлежащий старому, прекращен, VM).
Некоторые подробности о моей настройке:
- Выпуск Juno
- устаревшая (нова-) сеть
- Ubuntu 14.04
- DHCP обрабатывается DNSMASQ.
Когда хосты могут получить свой IP-адрес от DHCP-сервера, кажется, что все работает отлично. Кажется, что ошибка только в том случае, если IP-адрес не может быть выпущен и блокирует его последующее использование для будущих виртуальных машин.
Я проверил на наличие ошибок в моих журналах nova-* и не вижу никаких. Единственные ошибки в моем системном журнале, когда dnsmasq отказывается арендовать IP-адрес из-за конфликтующих MAC-адресов.
Любая информация или предложения будут высоко оценены.
1 ответ
Тем не менее, я не могу найти идеальное решение для этой проблемы, но я нашел проблемную область и есть обходной путь.
1. Проблемная область: проблема лежит в dnsmasq, а не в OpenStack. Я заметил, что OpenStack выполняет функцию "dhcprelease" после завершения экземпляра каждый раз, но dnsmasq отвечает только на несколько запросов dhcprelease.
2. Обходной путь: Время аренды по умолчанию для любого lP составляет 24 часа (86400 секунд), что означает, что каждый экземпляр должен обновлять свою аренду через каждые 24 часа. Если экземпляр не возобновит свою аренду IP, тогда dnsmasq сочтет эту аренду недействительной и освободит IP, полученный этой арендой.
Я сократил эту аренду до 3 минут (180 секунд). Таким образом, любая аренда не сможет удерживать IP более 3 минут после завершения экземпляра.
Шаги по сокращению времени аренды до 3 минут:
Выполните следующие шаги на всех вычислительных узлах по одному.
- Откройте файл /etc/nova/nova.conf
vi /etc/nova/nova.conf
- В разделе [DEFAULT] настройте dhcp_lease_time.
Это в секундах.
[ДЕФОЛТ]
...
dhcp_lease_time = 180
Сохраните и выйдите из файла.
Убить процесс dnsmasq для каждого моста на сервере. (ИЛИ вы можете выполнить killall также, если dnsmasq не используется ни для каких других целей)
убить (ИЛИ killall dnsmasq)
- Перезапустите сервисы.
перезапустить нова-апи-метаданные
перезапустить nova-compute
перезапустить новую сеть