-
Neutron架构
Neutron架构
- neutron Server
报刊守护进程neutron-server和各种插件(plugin),他们即可以安装在控制节点也可以安装在网络节点,neutron-server提供API接口,并且把API的调用请求传给已经配置好的插件进行后续的处理 - neutron L2 agent
为虚拟网络提供2层交换服务,通过一个特定的插件来实现 - neutron-dhcp-agent
为虚拟机提供DHCP服务 - neutron-l3-agent
为虚拟机访问外部网络提供3层转发服务
-
Plugin/Agent架构
Plugin/Agent架构
典型Plugin/Agent架构如上图所示
4.1. 控制节点上面api获取到其他组件请求,Core Plugins主要负责二层交换,
Service Plugins主要负责三层路由,二者大部分都是和数据库通讯
4.2. Plugins将和数据库通讯以后的数据做一层封装写入到缓存MQ队列
4.3. L2 agent负责二层交换的服务
4.4. L3 agent负责三层路由的服务
4.5. DHCP agent负责自动获取网络地址的服务
4.6. ML2 Plugin介绍
一般情况下,Plugin和Agent是成对出现的,但是由于Plugin主要负责数据库的增产改查,如果有多个Plugin必然在代码层面要重写,不便于扩展,这个时候就出现了ML2 Plugin,它本质上是将对数据库的操作做了一层封装,实现的架构如下所示
ML2 Plugin -
DHCP agent
- 为虚拟机提供DHCP服务
- 每个网络的DHCP运行在一个network namespace中,namespace由qdhcp-<DHCP-UUID>命名
- dnsmasq是被Neutron用来提供DHCP和DNS服务的一个开源软件
-
创建虚拟机的网络过程
vm获取ip地址过程
4.1. nova-compute向Neutron Server 发送一个请求虚拟机IP地址的请求
4.2. Neutron Server为虚拟机创建MAC地址和IP地址,将此信息存储到数据库当中4.3. Neutron Server同时将这个信息异步发送给DHCP agent
4.4. DHCP agent收到对应信息以后再发送给dnsmasq,后者将它保存起来
4.5. nova创建虚拟机以后会初始化MAC地址
4.6. 当虚拟机启动的时候,默认的ip地址是0.0.0.0,会发送一个广播,dnsmasq会监听到虚拟机发送的报文,对应的将对应MAC地址的IP地址返回给虚拟机,这样虚拟机启动完成以后就会有IP地址
L3 agent
- L3 agent负责路由、浮动IP分配、地址转换和安全组管理
- 通过iptables实现安全组、路由以及地址转换
- 每个虚拟路由运行在一个network namespace中,每个namespace 由qroute-<router-UUID>命名
网友评论