Dhcp

Nova 網路 DHCP 未使用 force_dhcp_release=True 釋放 ip

  • April 18, 2018

我看到的問題是,當 nova-network 在實例終止時呼叫 dhcprelease 時(由於forcehcp_release=True),地址並不總是被釋放(系統日誌沒有顯示 DHCPRELEASE 請求)。稍後,如果 nova 分配了一個新實例,但未釋放的相同 IP 地址,則忽略 DHCP 請求,並且 syslog 中的錯誤將顯示 dnsmasq 看到該請求並拒絕,因為該 IP 地址已租用給不同的 MAC 地址(屬於舊的、已終止的 VM)。

關於我的設置的一些細節:

  • 朱諾發布
  • 舊版 (nova-) 網路
  • Ubuntu 14.04
  • 由 DNSMASQ 處理的 DHCP。

當主機能夠從 DHCP 伺服器獲取其 IP 地址時,一切似乎都執行良好。似乎該錯誤僅發生在無法釋放 ip 並阻止後續將其用於未來 VM 的情況下。

我檢查了我的 nova-* 日誌中的任何錯誤,但沒有看到任何錯誤。當 dnsmasq 由於 MAC 地址衝突而拒絕租用 IP 地址時,唯一的錯誤出現在我的系統日誌中

任何資訊或建議將不勝感激。

我仍然無法為這個問題找到完美的解決方案,但我已經找到了問題區域並有一些解決方法。

**1. 問題區域:**問題在於 dnsmasq 而不是 OpenStack。我觀察到 OpenStack 在每次終止實例後都會執行“dhcprelease”功能,但 dnsmasq 只響應很少的 dhcprelease 請求。

**2. 解決方法:**任何 lP 的預設租約時間為 24 小時(86400 秒),這意味著每個實例必須在每 24 小時後更新其租約。如果實例不更新其 IP 租約,則 dnsmasq 將認為該租約無效並釋放該租約獲得的 IP。

我已將該租約減少到 3 分鐘(180 秒)。所以任何租約都不能在實例終止後超過 3 分鐘持有 IP。

將租用時間減少到 3 分鐘的步驟:

在所有計算節點上一一執行以下步驟。

  1. 打開一個文件 /etc/nova/nova.conf

vi /etc/nova/nova.conf

  1. 在$$ DEFAULT $$部分配置 dhcp_lease_time。

以秒為單位。

$$ DEFAULT $$

dhcp_lease_time = 180

  1. 保存並退出文件。
  2. 殺死伺服器上每個網橋的 dnsmasq 程序。(或者,如果 dnsmasq 不用於任何其他目的,您也可以執行 killall)

殺死(或 killall dnsmasq)

  1. 重啟服務。

重啟 nova-api-metadata
重啟 nova-compute
重啟 nova-network

引用自:https://serverfault.com/questions/726715