` openstack(五) | 听云轩

openstack(五)

neutron组件

    neutron网络服务组件提供虚拟机实例对网络的连接,其中plugins能够提供对多种网络设备和软件的支持,使OpenStack环境的构建和部署具备更多的灵活性,最重要的就是为虚拟机实例提供网络连接。

组件:

  • Neutron-sever:接收和路由API请求到OpenStack中的网络plug-in.
  • OpenStack networking plug-ins and agents:创建端口、网络和子网,提供IP地址。
  • Messageing queue:在neutron-sever和agents之间路由信息,同时也会作为一个数据库存储plugins的网络连接状态。

    neutron网络服务组件利用软件定义提供网络、子网和路由功能,它模仿物理网络设备的功能,在网络中划分多个子网,路由器在不同的子网间传递数据。其中包括二层交换,三层路由,负载均衡,防火墙和VPN等。

    neutron管理的网络资源包括network、subnet和port,其中network是一个隔离的二层广播域,neutron支持多种类型的network,包括local、flat、VLAN、vxlan和GRE。

架构

G2wVOA.png

  • Neutron server

    对外提供网络API,接收请求,并调用plugin处理请求。

  • neutron plugin

    处理neutron server发来的请求,维护网络,并通过调用agent来处理后续工作。根据功能又可以分为core plugins和service plugins。前者负责维护网络中的network、subnet和port;后者提供网络中的routing、防火墙、load balance等。

  • neutron agent

    接收来自plugin的请求,并负责在network provider上真正实现网络功能。

  • network provider

    提供网络服务的虚拟或者物理网络设备,向Linux bridge或者OVS等。

  • Queue

    各组件通过messaging queue通信和调用

  • Database

    用来存放OpenStack的网络状态信息,包括network、subnet、port、router等。

    将server、plugin部分详细的看,如图:

G2rdb9.png

其中:

  • core API

    对外提供管理network、subnet和port的restful API。

  • extension API

    对外提供管理router,LBaaS,Firewalld等服务的restful API。

  • common service

    校验和认证API请求。

  • neutron core

    通过调用相应的plugin来处理请求。

  • core plugin API

    定义了core plugin的抽象功能集合,用来响应请求和调用core plugin组件。

  • extension plugin API

    定义了core plugin的抽象功能集合,用来响应请求和调用service plugin组件。

  • core plugin

    维护network、subnet和port的状态;调用相应的agent来处理。

  • service plugin

    实现了routing、Firewall、load balance等;调用相应的agent来处理。

关于ML2 core plugin

    它是neutron在H版本实现的一个新的core plugin,用于替代原有的Linux bridge和OVS,传统的core plugin存在的问题:

  • 无法使用多个network provider

    这就说明了以前当你选择了Linux bridge plugin之后就只能选择Linux bridge agent,无法使用其他的虚拟交换机。

  • 开发新的core plugin工作量大

    所有传统的core plugin都需要编写大量重复和类似的数据库访问的代码,大大增加了plugin开发和维护的工作量。

    ML2作为新一代的plugin,提供了一个框架,允许在OpenStack网络中同时使用多种layer2网络技术,不同的节点可以使用不同的网络实现机制。

G22TGn.png

    这样的话,可以在不同节点上分别部署Linux bridge agent、OVS,hyper-V以及其他第三方agent。另外,ML2不但支持异构部署方案,同时能够与现有的agent无缝集成:以前用的agent不需要变,只需要将neutron server上的传统core plugin替换为ML2。

ML2的架构

YAHw1H.png

    ML2对二层的网络进行抽象和模拟,引入了type drivers和mechanism drivers机制,这两类解耦了neutron所支持的网络类型和提供这些网络的机制,这样的好处就是使得它具有很好的扩展性。

    其中的网络类型(type)包括:

  • local

  • flat

  • VLAN

  • vxlan

  • GRE

    mechanism driver负责提供和实现这些网络,并确保其状态,根据后端提供类型可以分为:

  • Agent-based:包括Linux bridge和open vswitch
  • controller-based:包括opendaylight、VMwareNSX
  • 基于物理交换机:Cisco nexus等

    neutron启用ml2,只需要在配置文件中开启就行(neutron.conf):

YAOIRU.png

    而关于ml2的配置,则是在(/etc/neutron/plugins/ml2/ml2_conf.ini):

YAXZJf.png

------ 本文结束 ------
您的支持将鼓励我继续创作