Nova 網路 DHCP 不釋放 ip,force_dhcp_release=True

Nova 網路 DHCP 不釋放 ip,force_dhcp_release=True

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

有關我的設置的一些詳細資訊:

  • 朱諾號發布
  • 傳統(nova-)網絡
  • 烏班圖14.04
  • DHCP 由 DNSMASQ 處理。

當主機能夠從 DHCP 伺服器取得其 IP 位址時,一切似乎都運作得很好。似乎只有當 IP 無法釋放並阻止未來 VM 後續使用它時才會出現錯誤。

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

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

答案1

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

1. 問題領域:問題出在 dnsmasq 而不是 OpenStack。我觀察到 OpenStack 每次終止實例後都會執行“dhcprelease”函數,但 dnsmasq 僅回應少數 dhcprelease 請求。

2.解決方法:任何 lP 的預設租約時間為 24 小時(86400 秒),這表示每個實例必須每 24 小時後續訂其租約。如果執行個體不續約其 IP 租約,則 dnsmasq 將認為該租約無效並釋放該租約所獲得的 IP。
我已將租約縮短至 3 分鐘(180 秒)。因此,在終止執行個體後,任何租約都無法保留 IP 超過 3 分鐘。

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

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

  1. 開啟檔案 /etc/nova/nova.conf

vi /etc/nova/nova.conf

  1. 在 [DEFAULT] 部分中設定 dhcp_lease_time。
    這是以秒為單位的。

[預設]
...
dhcp_lease_time = 180

  1. 儲存並退出文件。

  2. 終止伺服器上每個網橋的 dnsmasq 進程。 (或如果 dnsmasq 不用於任何其他目的,您也可以執行killall)

殺死(或殺死所有dnsmasq)

  1. 重新啟動服務。

重新啟動 nova-api-元資料
重新啟動 nova-compute
重新啟動 nova-network

相關內容