发布时间:2020-06-23 11:08:41
来源:51cto
阅读:713
作者:ygj900629
栏目:云计算
第九部分?网络服务neutron概述
一、neutron架构
openstack的网络服务neutron是整个openstack中最复杂的一个部分,它的基本架构是一个中心服务(neutron-server)外加各种plugins和agents,使用不同的network?provider(网络提供者,如linux?bridge、openvswitch(ovs)等)来实现各种网络架构,在这之上为实例提供网络、子网、端口和防火墙等网络资源。
下图是neutron的基本架构
可见,neutron采用分布式架构,由多个组件(子服务)共同对外提供网络服务。
neutron?server
对外提供openstack网络api,接收请求,并调用plugin处理请求。
下图是neutron?server的结构图
neutron?server包括两部分
1. 提供api服务;2.?调用plugins。
core api
对外提供管理network, subnet和 port的restful api。
extension api
对外提供管理 router, load balance, firewall等资源的restful api。
commnon service
认证和校验 api 请求。
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。
plugin
处理neutron?server发来的请求,维护openstack逻辑网络的状态,并调用agent处理请求,实现“提供什么网络(what)”的功能。
plugin按照功能分为两类: core plugin和service plugin。
core plugin:维护neutron的netowrk, subnet和port相关资源的信息,与core plugin对应的agent包括linux bridge, ovs等;
service plugin:提供dhcp、routing, firewall, load balance等服务,也有相应的agent。
agent
处理plugin的请求,负责在network?provider上真正实现各种网络功能,实现“怎么提供网络(how)”的功能。
network?provider
提供网络服务的虚拟或物理网络设备,例如linux?bridge,open?vswitch等。
queue
neutron server,plugin和agent之间通过messaging queue消息队列通信和调用。
database
存放openstack的网络状态信息,包括network, subnet, port, router等。
二、neutron的工作原理
下一节要在neutron中使用linux bridge这一种network provider来提供网络服务,那么,它是怎样实现的呢?
根据上面neutron?server的分层模型,要想使用这种network?provider,需要安装两个东西:linux bridge core plugin和linux bridge agent。
linux bridge core plugin:与neutron server一起运行,实现了core plugin api。负责维护数据库信息,通知linux bridge agent实现具体的网络功能。
linux bridge agent:接收来自plugin的请求,通过配置主机上的linux bridge实现neutron网络功能。通常位于计算节点或者网络节点。
同样道理,如果使用的network?provider是open?vswitch,那么只需要安装 open vswitch plugin 和 open vswitch agent就行了。
可见,plugin,agent和network provider是配套使用的,比如上面的network provider是linux bridge,那么就得使用linux bridge的plugin和agent;如果network provider换成了ovs或者物理交换机,plugin和agent也得替换。
这就造成一个问题:所有network provider的plugin都要编写一套非常类似的数据库访问代码。
为了解决这个问题,neutron实现了一个叫ml2(modular layer 2)plugin,对plugin的功能进行抽象和封装。
有了ml2 plugin,各种 network provider 无需开发自己的plugin,只需要针对 ml2 开发相应的driver就可以了。
三、ml2(modular layer 2)plugin
moduler layer 2(ml2)是neutron?在havana 版本(h版本)实现的一个core plugin,用于替代原有的linux bridge plugin和open vswitch plugin,并一直沿用至今。
ml2 提供了一个框架,允许在openstack网络中同时使用多种layer 2网络技术,不同的节点可以使用不同的网络实现机制。
采用ml2 plugin后,可以在不同节点上分别部署linux bridge agent, open vswitch agent, hyper-v agent以及其他第三方agent。
ml2 对二层网络进行抽象和建模,引入了type driver和mechansim driver。这两类driver解耦了 neutron 所支持的网络类型(type)与访问这些网络类型的机制(mechanism),其结果就是使得ml2具有非常好的弹性,易于扩展,能够灵活支持多种type和 mechanism。?
type?driver
neutron 支持的每一种网络类型都有一个对应的ml2 type driver。 type driver 负责维护网络类型的状态,执行验证,创建网络等。?
ml2 支持的网络类型包括 local, flat, vlan, vxlan 和 gre。
mechansim driver
neutron 支持的每一种网络机制都有一个对应的ml2 mechansim driver。 mechanism driver负责获取由type driver维护的网络状态。
mechanism driver 有三种类型:
agent-based:包括linux bridge, open vswitch等。
controller-based:包括opendaylight, vmware nsx等。
基于物理交换机:包括 cisco nexus, arista, mellanox 等。?
比如要创建一个type driver为 vlan,mechansim driver为 linux bridge的network vlan100,那么:
vlan type driver会确保将vlan100的信息保存到neutron 数据库中,包括network 的名称,vlan id等;linux bridge mechanism driver会确保节点上的linux brige agent在物理网卡上创建id为100的vlan设备和bridge设备,并将两者进行桥接。
linux bridge和open vswitch的 ml2 mechanism driver的作用是配置各节点上的虚拟交换机。
四、service?plugin/agent
service plugin及其 agent提供更丰富的扩展功能,包括dhcp、路由,load balance,firewall等
dhcp<
云主机空间租赁电脑喇叭电流声大怎么消除 解决电脑喇叭电流声大的故障又是一年新春年货时 你被哪些暖心广告戳中泪点了支付宝接口问题-其他问题建站域名不续费了怎么办抢注域名成功后有什么用对于被退回的第一个问题我有些疑问网站是能打开的克孜勒苏柯尔克孜云服务器购买