天天看點

配置 DHCP 服務 - 每天5分鐘玩轉 OpenStack(89)配置 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。

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

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

本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1854750