配置 DHCP 服務 - 每天5分鍾玩轉 OpenStack(89)


前面章節我們看到 instance 在啟動過程中能夠從 Neutron 的 DHCP 服務獲得 IP,本節將詳細討論其內部實現機制。

Neutron 提供 DHCP 服務的組件是 DHCP agent。 DHCP agent 在網絡節點運行上,默認通過 dnsmasq 實現 DHCP 功能。

配置 DHCP agent

DHCP agent 的配置文件位於 /etc/neutron/dhcp_agent.ini。

dhcp_driver
使用 dnsmasq 實現 DHCP。

interface_driver
使用 linux bridge 連接 DHCP namespace interface。

當創建 network 並在 subnet 上 enable DHCP 時,網絡節點上的 DHCP agent 會啟動一個 dnsmasq 進程為該 network 提供 DHCP 服務。

dnsmasq 是一個提供 DHCP 和 DNS 服務的開源軟件。 dnsmasq 與 network 是一對一關系,一個 dnsmasq 進程可以為同一 netowrk 中所有 enable 了 DHCP 的 subnet 提供服務。

回到我們的實驗環境,之前創建了 flat_net,並且在 subnet 上啟用了 DHCP,執行 ps 查看 dnsmasq 進程,如下圖所示:

DHCP agent 會為每個 network 創建一個目錄 /opt/stack/data/neutron/dhcp/,用於存放該 network 的 dnsmasq 配置文件。

下面討論 dnsmasq 重要的啟動參數:

--dhcp-hostsfile
存放 DHCP host 信息的文件,這里的 host 在我們這里實際上就是 instance。 dnsmasq 從該文件獲取 host 的 IP 與 MAC 的對應關系。 每個 host 對應一個條目,信息來源於 Neutron 數據庫。

對於 flat_net,hostsfile 是 /opt/stack/data/neutron/dhcp/f153b42f-c3a1-4b6c-8865-c09b5b2aa274/host,記錄了 DHCP,cirros-vm1 和 cirros-vm2 的 interface 信息。

--interface
指定提供 DHCP 服務的 interface。 dnsmasq 會在該 interface 上監聽 instance 的 DHCP 請求。

對於 flat_net,interface 是 ns-19a0ed3d-fe。 或許大家還記得,之前我們看到的 DHCP interface 叫 tap19a0ed3d-fe(如下圖所示),並非 ns-19a0ed3d-fe。

image584.png

從名稱上看,ns-19a0ed3d-fe 和 tap19a0ed3d-fe 應該存在某種聯系,但那是什么呢?

要回答這個問題,需要先搞懂一個概念:Linux Network Namespace,我們下一節詳細討論。

 

blob.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM