OpenStack —— 网络服务Neutron(五)

一、Neutron介绍

OpenStack网络服务已由Quantum改名为Neutron。Neutron是OpenStack核心项目之一,提供云计算环境下的虚拟网络功能服务。

Neutron的设计目标是实现“网络即服务(Networking as a Service)”。为了达到这一目标,在设计上遵循了基于SDN(Software-Defined Networking)实现网络虚拟化的原则,在实现上充分利用了Linux系统上的各种网络相关的技术。

Neutron网络允许用户创建和管理网络对象,如网络(Net)、子网(Subnet)、端口(Port),这些对象可以被其他OpenStack服务所利用。插件架构模式增强了OpenStack架构和部署的柔韧性,可以适应不同的网络设备和软件。

Neutron为整个OpenStack环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和VPN 等。Neutron提供了一个灵活的框架,通过配置,无论是开源还是商业软件都可以被用来实现这些功能。

二、Neutron主要组件

1、neutron-server

对外提供OpenStack网络API,接收请求,并调用plugin处理请求,它既可以安装在控制节点上也可以安装在网络节点上。

2、OpenStack Networking plug-ins and agents

插件(plug-ins)处理neutron-server发来的请求,维护OpenStack逻辑网络的状态,并调用agent处理请求。

代理(agents)处理plugin的请求,负责在network provider上真正实现各种网络功能,比如端口插拔、创建网络或者子网、以及提供IP地址等。

网络提供商(network provider) 提供网络服务的虚拟或物理网络设备,例如Linux Bridge,Open vSwitch或者其他支持Neutron的物理交换机。

公共的代理还包括L3(路由器)、DHCP等,都安装在控制节点或者网络节点。

3、Messaging queue

Neutron Server,Plugin和Agent之间通过Messaging Queue通信和调用。

4、Database 

存放OpenStack的网络状态信息,包括Network、Subnet、Port、Router等。



这里进行几点说明:

  • plugin解决的是What的问题,即网络要配置成什么样子?而至于如何配置How的工作则交由agent完成。
  • plugin,agent和network provider是配套使用的,比如上例中network provider是linux bridge,那么就得使用linux bridge的plungin和agent;如果network provider换成了OVS或者物理交换机,plugin 和agent也得替换。
  • plugin的一个主要的职责是在数据库中维护Neutron网络的状态信息,这就造成一个问题:所有network provider的plugin都要编写一套非常类似的数据库访问代码。为了解决这个问题,Neutron在H版本实现了一个ML2(Modular Layer 2)plugin,对plugin的功能进行抽象和封装。有了ML2 plugin,各种 network provider无需开发自己的plugin,只需要针对ML2开发相应的driver就可以了,工作量和难度都大大减少。
  • plugin按照功能分为两类:core plugin和service plugin。core plugin维护Neutron的netowrk, subnet和port相关资源的信息,与core plugin对应的agent包括linux bridge, OVS等;service plugin 提供routing, firewall,load balance等服务,也有相应的agent。


三、Neutron Server分层模型

上图是Neutron Server的分层结构,至上而下依次为:

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 Plgin的抽象功能集合,Neutron Core通过该API调用相应的Core Plgin。

Extension Plugin API
    定义了Service Plgin的抽象功能集合,Neutron Core通过该API调用相应的Service Plgin。

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包括两部分:提供API服务、运行Plugin,即Neutron Server = API + Plugins。

四、ML2 Core Plugin

Moduler Layer 2(ML2)是Neutron在Havana版本实现的一个新的core plugin,用于替代原有的 linux bridge plugin和open vswitch plugin。

1、传统core plugin的问题

  • 无法同时使用多种 network provider。
  • 开发新的 core plugin 工作量大。

2、ML2能解决传统core plugin的问题

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

ML2不但支持异构部署方案,同时能够与现有的agent无缝集成,以前用的agent不需要变,只需要将Neutron server上的传统core plugin替换为ML2即可。

五、Neutron各组件协同工作

在我们了解各组件的功能之后,我们有必要先通过一个例子了解这些组件各自的职责以及是如何协同工作。

以创建一个VLAN100的network为例,假设network provider是linux bridge,流程如下:

  1. Neutron Server接收到创建network的请求,通过Message Queue通知已注册的Linux Bridge Plugin。
  2. Plugin将要创建的network的信息(例如名称、VLAN ID等)保存到数据库中,并通过Message Queue 通知运行在各节点上的Agent。
  3. Agent收到消息后会在节点上的物理网卡(比如 eth2)上创建VLAN设备(比如 eth2.100),并创建 bridge(比如 brqXXX)桥接VLAN设备。

六、项目网络与提供商网络

用户按需创建项目内互联互通的租户网络;缺省情况下,该项目间的网络是完全隔离的。提供商的网络有OpenStack管理员创建,并直接映射到数据中心的物理网络。

七、OpenStack网络部署架构

一个标准的OpenStack网络部署架构有四个不同的物理数据中心网络,如下图:

  • 管理网络:用于OpenStack各组件之间的内部通信。
  • 数据网络:用于云部署中虚拟数据之间的通信。
  • 外部网络:公共网络,外部或者互联网可以访问的网络。
  • API网络 :暴露所有的OpenStack APIs,包括OpenStack网络API给项目。

八、Neutron物理部署方案

1、控制节点 + 计算节点

控制节点
    部署的服务包括:neutron server, core plugin 的agent和service plugin的agent。

计算节点
    部署core plugin的agent,负责提供二层网络功能。

这里有两点需要说明:
    1. core plugin和service plugin已经集成到neutron server,不需要运行独立的plugin服务。
    2. 控制节点和计算节点都需要部署core plugin的agent,因为通过该agent控制节点与计算节点才能建立二层连接。
    3. 可以部署多个控制节点和计算节点。

2、控制节点 + 网络节点 + 计算节点

控制节点

部署neutron server服务。

网络节点 
    部署的服务包括:core plugin的agent和service plugin的agent。

计算节点 
    部署core plugin的agent,负责提供二层网络功能。

这个方案的要点是将所有的 agent 从控制节点分离出来,部署到独立的网络节点上。

  • 控制节点只负责通过neutron server响应API请求。
  • 由独立的网络节点实现数据的交换,路由以及load balance等高级网络服务。
  • 可以通过增加网络节点承担更大的负载。
  • 可以部署多个控制节点、网络节点和计算节点。
  • 该方案特别适合规模较大的OpenStack环境。

参考文档:https://docs.openstack.org/ocata/networking-guide/intro-os-networking.html

《每天5分钟玩转OpenStack》cloudman编著

时间: 2024-10-13 11:57:48

OpenStack —— 网络服务Neutron(五)的相关文章

Openstack 网络服务Neutron [五]

Openstack 网络服务Neutron [五] openstack 时间:2016年11月28日 Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个neutron Openstack Networking 网络: 在实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络.在Neutron的世界里,网络也是将多个不同的云主机连接起

Openstack 网络服务Neutron介绍和控制节点部署 (九)

Neutron介绍 neutron是openstack重要组件之一,在以前是时候没有neutron项目. 早期的时候是没有neutron,早期所使用的网络的nova-network,经过版本改变才有个neutron. OpenStack Networking 网络:在实际的物理环境下,我们使用交换机或者集线器把多个计算机连接起来形成了网络.在Neutron的世界里,网络也是将多个不同的云主机连接起来. 子网:在实际的物理环境下,在一个网络中.我们可以将网络划分成多为逻辑子网.在Neutron的世

Openstack 网络服务 Neutron计算节点部署(十)

Neutron计算节点部署 安装组件,安装的服务器是192.168.137.12 1.安装软件包 yum install -y openstack-neutron-linuxbridge ebtables ipset 2.配置文件neutron.conf 因为neutron控制节点跟计算节点配置几乎一样,直接复制控制节点的文件到计算节点,将不同的部分进行修改. scp /etc/neutron/neutron.conf [email protected]:/etc/neutron 在neutro

OpenStack(Kilo版本)网络服务neutron的安装部署

Openstack网络主要是和OpenStack计算交互,提供网络连接到它的实例.一.OpenStack网络服务包含的组件 图1.1. OpenStack Nova组件 二.OpenStack网络节点基本环节的搭建1.配置主机名和网络信息1.1配置主机名 [email protected]:~# vim /etc/hostname network 1.2 配置IP地址 [email protected]:~# vim  /etc/network/interfaces auto eth0 ifac

OpenStack网络服务

网络服务简介 OpenStack网络(neutron)允许您创建和将其他OpenStack服务管理的接口设备附加到网络中.插件可以适应不同的网络设备和软件,为OpenStack的架构和部署提供灵活性. 它包括以下组件: neutron-server:接受并将API请求路由到相应的OpenStack网络插件以进行操作. OpenStack Networking plug-ins and agent:即插即用端口,创建网络或者子网,提供IP地址.这些插件和代理根据特定云使用的供应商和技术而有所不同.

OpenStack实践系列⑤网络服务Neutron

3.8 Neturn 服务部署 注册neutron服务 [[email protected] ~]# source admin-openrc.sh [[email protected] ~]# openstack service create --name neutron --description "OpenStack Networking" network +-------------+----------------------------------+ | Field | Va

[ Openstack ] Openstack-Mitaka 高可用之 网络服务(Neutron)

目录 Openstack-Mitaka 高可用之 概述    Openstack-Mitaka 高可用之 环境初始化    Openstack-Mitaka 高可用之 Mariadb-Galera集群部署    Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署    Openstack-Mitaka 高可用之 memcache    Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群    Openstack-M

OpenStack 网络:Neutron 初探

OpenStack Neutron 网络模型 OpenStack nova-network 独立成为单独的组件 Neutron 后,形象的网络模型的多平面网络.混合平面私有网络.如图 3,图 4,图 5,图 6. 图 3. 多平面网络 图 4. 混合平面私有网络 图 5. 通过私有网络实现运营商路由功能 图 6. 通过私有网络实现每个租户创建自己专属的网络区段 回页首 Neutron 网络创建过程 Neutron 网络目的是为 OpenStack 云更灵活地划分物理网络,在多租户环境下提供给每个

8.CentOS7下Openstack-Train版本安装--网络服务neutron(控制节点)

1.创建neutron数据库 [[email protected] ~]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 918 Server version: 10.3.10-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, Maria