Neutron基本架构
一. Neutron基本架构
下图展示了Neutron基本的架构及包含的组件。
- neutron-server
提供REST API服务,后端使用关系数据库。
- Message Queue
neutron-server使用Message Queue与其他Neutron agents进行交换消息,但是这个Message Queue不会用于neutron-server与其他OpenStack组件如nova进行交换消息。
- L2 Agent
负责连接端口(ports)和设备,使他们处于共享的广播域(broadcast domain)。通常运行在Hypervisor上。
- DHCP agent
用于配置虚机主机的网络(某些情况可能不需要DHCP agent,例如使用config drive来配置虚拟主机的情况)。
- L3 Agent
负责连接tenant网络到数据中心,或连接到Internet。在真实的部署环境中,一般都需要多个L3 Agent同时运行。
二.Neutron各组件详细介绍
- neutron-server
neutron-server组件由REST API Service,RPC SErvice,Plugin几部分组成。
- REST API Service
neutron-server本身是WSGi应用,提供REST API服务,使用9696端口,对用户暴露基本的逻辑资源,如network, subnet, port等,同时负责HTTP request和response的序列化。
- RPC Service
使用AMQP, 基于oslo messaging模块,用于agents之间的双向通信
- Plugin
使用Python编写。同时只能使用一个plugin,plugin必须实现V2 APIs,可以提供数据库访问或者扩展支持。例如ML2 Plugin。
- Plugin Extensions
Plugin 提供了扩展机制,这种机制可以为REST API增加更多的逻辑资源,如router,security group等。Pplugin的扩展点由neutron-server在启动的时候发现和加载。常见的扩展点如 Binding,DHCP,L3,Provider,Quota, Security,其他的扩展点如Allowed Addresses, Extra Routes,Metering等。
- Monolithic Plugin
Monolithic Plugin的特征是实现所有的Core资源。Neutron中包含两种类型Monolithic Plugin,一种是Proxy Plugin,将功能代理到其他实际管理data plane的拓扑的服务器,例如BigSwitch Plugin,另一种是Direct Control Plugin,例如Linux Bridge或Open vSwitch Plugin,实际操作虚机设备。
- ML2 Plugin drivers
目前Neutron已经默认使用ML2 Plugin,ML2 Plugin使用户能够同时利用数据中心中各种L2网络技术。ML2 Plugin提供两种Drivers,一种是Typer Driver, 维护网络状态,验证provider network和分配tenant网络,目前,支持的网络类型包括local, float, vlan, gre, vxlan。另一种是Mechanism Driver, 负责使用Type Driver提供的信息,实现具体的网络机制,例如通过Open vSwitch实现VLAN网络。
- L2 Agent
L2 Agent通常运行在Hypervisor,与neutron-server通过RPC通信,监听并通知设备的变化,创建新的设备来确保网络 segment的正确性,应用security groups规则等。例如,OVS Agent,使用Open vSwitch来实现VLAN, GRE,VxLAN来实现网络的隔离。
- L3 Agent
在介绍L3 Agent之前,Mark介绍了Linux network namespace,这时实现L3 agent的技术基础,特别是overlapping ip,必须依赖namespace来实现。每一个namespace是一个独立的IP Stack,namespace之间通过虚拟设备之间的link来实现。关于linux network namespace的信息可以参照这篇文章:http://blog.scottlowe.org/2013/09/04/introducing- linux-network-namespaces/
L3 Agent运行在网络结点,负责连接tenant网络到数据中心,或连接到Internet。如上所述使用namespaces,通过独立的IP Stacks,启用Forward,静态路由和metadata proxy来实现。
- Configuration Agents: DHCP
DHCP Agent用于配置虚拟主机的网络。基于RPC通知实现(来自neutron-server的notifications),使用dnsmasq实现IP 地址分配及域名服务器的设置,通过namespace实现不同网络之间DHCP服务的隔离,支持多个DHCP Agent同时运行以支持Active-Active的HA。
- Configuration Agents: Metadata Proxy
将metadata请求代理到Nova。
除此之外,Mark亦简要介绍了LBaaS,V*NaaS,FWaaS等Neutron的Service Plugin组件。也提到Juno当中正在开发的一个新功能:在创建虚机时,Nova等待Neutron创建虚机设备,设备创建成功后通知nova继续虚机的部署。
总体来说,Mark的介绍非常详尽,不过需要具有一定的网络,OpenStack,Linux背景才能够完全吸收,尽管如此,可以从这个介绍入手去进一步熟悉Neutron的架构细节。
本篇,整理自openstack中国社区: http://www.openstack.cn/?p=1745