Neutron架构简介
- Neutron Server:对外提供Openstack网络API,接收请求,并调用Plugin处理请求。
- Plugin:处理Neutron Server发来的请求,维护Openstack逻辑网络的状态,并调用Agent处理请求。
- Agent:处理Plugin的请求,负责在network provider上实现正真的各种网络功能。(正真去做的)
- Network provider:提供网络服务的虚拟或物理网络设备,例如Linux Bridge,Open vSwitch或者其他支持Neutron的物理交换机。
- Queue:Neutron Server,Plugin和Agent之间通Messaging Queue通信和调用。
- Database:存放Openstack的网络状态信息,包括Network,Subnet,Port,Router等。
物理部署方案
方案1:控制节点+计算节点(小规模)
控制节点:neutron server,core-plugin-agent(linux bridge,openvswitch)和service plugin-agent(dhcp,vpn)
计算节点:core-plugin-agent,负责提供二层网络功能
方案2:控制节点+网络节点+计算节点(大规模)
控制节点:neutron server 服务
网络节点:core-plugin-agent 和 service-plugin-agent
计算节点:core-plugin-agent,负责提供二层网络功能
Neutron Server
Neutron Server的分层结构
Core API
对外提供管理network、subnet和port的RESTful API。
Extension API
对外提供管理router,load balance,firewall等资源的RESTful API。
Common Service
Neutron Core
Neutron server的核心处理程序,通过调用相应的Plugin处理请求。
Core Plugin API
定义了Core Plugin的抽象功能集合,Neutron Core通过该API调用相应的Core Plugin。
Extension Plugin API
定义了 Service Plugin 的抽象功能集合,Neutron Core 通过该 API 调用相应的 Service Plugin。
Core Plugin
实现了 Core Plugin API,在数据库中维护 network, subnet 和 port 的状态,并负责调用相应的 agent 在 network provider 上执行相关操作,比如创建 network。
Service Plugin
实现了 Extension Plugin API,在数据库中维护 router, load balance, security
group 等资源的状态,并负责调用相应的
agent
在 network provider 上执行相关操作,比如创建 router。
Neutron Server组成
Neutron
Server包含二大个部分:
- 提供API服务
- 运行Plugin
支持多种network provider
使用Linux bridge 这一种network provider
- Linux bridge core plugin
- Linux bridge core agent
使用open vswitch这一种network provider
- Open vswitch core plugin
- Open vswitch core agent
随着支持的network provider数量的增加,存在两个问题:
- 只能够在Openstack中使用一种core plugin
- 不同plugin之间存在大量重复代码
ML2 Core Plugin
ML2
作为新一代的
core
plugin,提供了一个框架,允许在
OpenStack
网络中同时使用多种
Layer
2 网络技术,不同的节点可以使用不同的网络实现机制。
- ML2对二层网络进行抽象和建模,引入了type driver 和 mechansim driver
- 这两类
driver
解耦了 Neutron 所支持的网络类型(type)与访问这些网络类型的机制(mechanism),其结果就是使得 ML2 具有非常好的弹性,易于扩展,能够灵活支持多种 type 和 mechanism。
ML2 Core Plugin结构图
- Type Driver:负责维护网络类型的状态,执行验证创建网络等等。
- Mechansim Driver:获取Type
Driver维护的网络状态,并确保在相应的网络设备上(虚拟或者物理)实现这些状态。 - Mechansim driver有三种类型:
- Agent-base:Linux Bridge 和 OVS
- Controller-base:OpenDaylight
和Vmware
NSX - 基于物理交换:Cisco Nexus, Arista, Mellanox
Service Plugin / Agent
Core Plugin/Agent 负责管理核心实体:net, subnet 和 port。而对于更高级的网络服务,则由 Service Plugin/Agent 管理。
Service Plugin 及其 Agent 提供更丰富的扩展功能,包括路由,load balance,firewall等,如图所示:
DHCP
dhcp
agent 通过 dnsmasq 为 instance 提供 dhcp 服务。
Routing
l3
agent 可以为 project(租户)创建 router,提供subnet 之间的路由服务。
Firewall
l3
agent 可以在 router 上配置防火墙策略,提供网络安全防护。
Load Balance
Neutron 默认通过
HAProxy
为 project 中的多instance 提供load balance 服务。
总结
整个neutron的架构图
此处评论已关闭