文章目录
一、DHCP代理
OpenStack的实例在启动过程中能够从Neutron提供的DHCP服务自动获取IP地址。
1.1、DHCP主要组件
-
DHCP代理( neutron-dhcp-agent) :为项目网络提供DHCP功能,提供元数据请求(Metadata request)服务。
-
DHCP驱动:用于管理DHCP服务器,默认为DNSmasq,这是有1个提供DHCP和DNS服务的开源软件,提供DNS缓存和DHCP服务功能。
-
DHCP代理调度器(Agent Scheduler) :负责DHCP代理与网络(Network) 的调度。
1.2、DHCP代理的主要任务
Neutron DHCP提供两类REST API接口: Agent Managerment Extension API和Agent Scheduler Extension API,这两类API都是extension API DHCP代理是核心组件,完成以下任务。
-
定期报告DHCP代理的网络状态,通过RPC报告给Neutron-server,然后通过Core Plugin报告给数据库并进行更新网络状态。
-
启动dnsmasq进程,检测gdhcp-xxx名称(Namespace)中的ns-xxx端口接收到DHCP DISCOVER请求,在启动dnsmasq进程的过程中,决定是否需要创建名称空间中的ns-xxx端口,是否需要配置名称空间中的iptables,是否需要刷新dnsmasq进程所需的配置文件。
-
创建网络(Network) 并在子网(subnet)上启用 DHCP时,网络节点上的DHCP代理会启动一个dnsmasq进程为网络提供DHCP服务。dnsmasq 与网络(network) 是一一对 应关系,一个dnsmasq进程可为同一网络中 所有启动DHCP的子网(Subnet) 提供服务
1.3、DHCP 代理配置文件
DHCP代理配置文件是/etc/neutron/dhcp_agent.ini
其中有重要的配置选项有二个。
[root@ct ~(keystone_ admin)]# grep -vE ‘#|$’ /etc/neutron/dhcp_ agent.ini
-
1、interface_driver:用来创建TAP设备的接口驱动,
- 如果使用Linux Bridge连接,该值设为neutron.agent.linux.interface.BridgelnterfaceDriver ;
- 如果选择Open Vswitch,该值为neutron.agent.linux.interface.OVSInterfaceDriver
-
2、 dhcp_driver:指定DHCP启动,默认值为neutron.agent.linux.dhcp.Dnsmasq 表示dnsmasq进程来实现DHCP服务
1.4、DHCP代理工作机制
DHCP代理运行在网络节点上,DHCP 为项目网络提供DHCP服务IP地址动态配,另外还会提供源数据请求服务。工作机制如下:
通过DHCP获取IP地址过程如下。
(1)创建实例时,Neutron随机生成MAC并从配置数据中分配一个固定的IP地址,