Openstack核心组件——Neutron理论

前言:Neutron主要就是用于网络虚拟化,在openstack中属于一个大部分,这次就来了解一下Neutron

文章目录

  • 一、Neutron基本架构
    • 1.Neutron-server
    • 2.Network provider
    • 3.Neutron plugin
    • 4.Neutron agent
  • 二、Neutron 功能
    • 1. 二层交换 Switching
    • 2. 三层路由 Routing
    • 3. 负载均衡 Load Balancing
    • 4. 防火墙 Firewalling
  • 三、Neutron组件
    • 1.Neutron-server
      • 1)Resetful API
      • 2)Common Service
      • 3)Neutron Core
      • 4)Plugin API
    • 2.插件、代理与网络提供者
      • 1)插件
      • 2)代理
      • 3)网络提供者
  • 四、Neutron的物理部署
    • 1.控制节点和计算节点
    • 2.控制节点和网络节点
    • 总结

一、Neutron基本架构

  • 与 OpenStack其他服务和组件的设计思路一样, Neutron也采用分布式架构,由多个组件(服务)共同对外提供网络服务, Neutron架构非常灵活,层次多,一方面是为了支持各种先有或者将来会出现的先进网络技术,另一方面支持分布式部署,获得足够的扩展性。示意图如下:
    Openstack核心组件——Neutron理论_第1张图片

1.Neutron-server

  • Neutron仅有一个主要服务进程 Neutron-server,它运行于控制节点上,对外提供OpenStack网络API作为访问 Neutron的入口,收集请求后调用插件( Plugin)进行处理,最终由计算节点和网络节点上的各种代理( Agent)完成请求

2.Network provider

  • 网络提供者( Network provider)是指提供者 OPenStack网络服务的虚拟机或者物理网络设备,如 Linux Bridge、 Open vSwitch或者其他支持 neutron的物理交换机。与其他服务一样, Neutron的各个组件服务之间需要相互协调通信, Neutron- server、插件、代理之间通过消息队列(默认用 RabbitMQ实现)进行通信和相互协调

3.Neutron plugin

  • plugin主要用于提供neutron的核心功能,目前主要是提供network,subnet和port这三类资源

4.Neutron agent

  • agent用来辅助plugin(core or service)完成其功能。plugin的某些功能需要操作远程系统,这些情况一般都通过该系统上的agent来实现。

  • agent分为: 1 core agent 2 dhcp agent: 3 L3 agent: 4 其他

数据库(默认使用 Maria DB)用于存放 OpenStack的网络状态信息、包括网络、子网端口、路由器等等。

客户端(Client)是指使用 Neutron服务的应用程序,可以是命令行工具(脚本)、 Horizon
( OpenStack图形操作界面)和Nova计算服务等

举列说明:创建一个vlan10虚拟网络的流程

1.Neutron-server收到创建网络( Network)的请求,通过消息队列( RabbitMQ)通知已注册的 Linux Bridge插件,这里架设网络提供者为 Linux Bridge。
2.该插件将要创建的网络信息(如名称、ID值、ⅥANID等)保存到数据库中并通过消息队列通知运行在各个节点上的代理
3.代理收到信息后会在节点上的物理网卡上创建Ⅵan设备(比如物理接口的子接口Eth1.10),并创建一个网桥(比如 brgXXX)来桥接网络设备

二、Neutron 功能

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

1. 二层交换 Switching

  • Nova 的 Instance 是通过虚拟交换机连接到虚拟二层网络的。Neutron 支持多种虚拟交换机,包括 Linux 原生的 Linux Bridge 和 Open vSwitch。 Open vSwitch(OVS)是一个开源的虚拟交换机,它支持标准的管理接口和协议

  • 利用 Linux Bridge 和 OVS,Neutron 除了可以创建传统的 VLAN 网络,还可以创建基于隧道技术的 Overlay 网络,比如 VxLAN 和 GRE(Linux Bridge 目前只支持 VxLAN)。在后面章节我们会学习如何使用和配置 Linux Bridge 和 Open vSwitch

2. 三层路由 Routing

  • Instance 可以配置不同网段的 IP,Neutron 的 router(虚拟路由器)实现 instance 跨网段通信。router 通过 IP forwarding,iptables 等技术来实现路由和 NAT。我们将在后面章节讨论如何在 Neutron 中配置 router 来实现 instance 之间,以及与外部网络的通信
  • Neutron路山器是·个三层的(L3)的抽象,其模拟物理路由器,为用广提供路由、NAT等服务,在 Openstack网络中,不用子网之间的通信需要路由器,网络与外部网络之间的通信更需要路由器
  • Neutron提倛虚拟路山器,也支持物理路由器。例如,两个隔离的ⅥLAN网络之间需要实现通信,可以通过物理路由器实现,由物理路由器提供相应的|P路由表,确保两个IP子网之间的通信,将两个VLAN网络中的虚拟机默认网关分别设置为路由路由器的接口A和B的IP地址。VLAN中的虚拟机要与 VLANB中的虚拟机通信时,数据包将通过LANA中的物理网卡到达路由器,有物理路由器转发到 VLAN B中的物理网卡,在到目的的虚拟机
    Openstack核心组件——Neutron理论_第2张图片

3. 负载均衡 Load Balancing

Openstack 在 Grizzly 版本第一次引入了 Load-Balancing-as-a-Service(LBaaS),提供了将负载分发到多个 instance 的能力。LBaaS 支持多种负载均衡产品和方案,不同的实现以 Plugin 的形式集成到 Neutron,目前默认的 Plugin 是 HAProxy。我们会在后面章节学习 LBaaS 的使用和配置

4. 防火墙 Firewalling

  • Neutron 通过下面两种方式来保障 instance 和网络的安全性
    • Security Group
      • 通过 iptables 限制进出 instance 的网络包
    • Firewall-as-a-Service
      • FWaaS,限制进出虚拟路由器的网络包,也是通过 iptables 实现

三、Neutron组件

1.Neutron-server

  • Neutron-server提供一组API来定义网络连接和IP地址,供Nova等客户端调用,它本身也是分层模型设计,其层次结构如下:
    Openstack核心组件——Neutron理论_第3张图片
  • neutron-server包括四个层次

1)Resetful API

  • 直接对客户端API服务,属于最前端的API,包括Core API和Extension API两种类型,Core API提供管理网络,子网和端口核心资源的 Resetful API;Extension API提供给网络管理路由器,负载均衡,防火墙,安全组等扩展资源的Resetful API

2)Common Service

  • 通用服务,负责对API请求进行检验,认证并授权

3)Neutron Core

  • 核心处理程序,调用相应的API插件来处理API的请求

4)Plugin API

  • 定义插件的抽象功能集合,提供通用调用插件API的接口,包括Core Plugin API和Extension Plugin API两种类型,Neutron Core通过Core Plugin API调用相应的Core Plugin,通过Extension Plugin API调用相应的Service Plugin

2.插件、代理与网络提供者

1)插件

  • Neutron遵循 OpenStack的设计原则,采用开放架构,通过插件、代理与网络提供者的配合来实现各种网络功能
  • 插件是 Neutron的一种API的后端实现,目的是增强扩展性。插件按照功能可分为Core Plugin和 Service Plugin两种类型
    • Core pugin提供基础二层虚拟机网络支持,实现网络、子网和端口核心资源的支持
    • Service plugin是指 Core Plugin之外的其他插件,提供路由器、防火墙、安全组、负载均衡等服务支持
    • 值得一提的是,直到 OpenStack的 Havana版本, Neutron才开始提供一个名为L3 Router Service Plugin的插件支持路由服务
  • 插件由 Neutron-server的 Core Plugin API和 Extension Plugin API调用,用于确定具体的网络功能,即要配什么样的网络,插件处理 Neutron- Server发来的请求,主要职责是在数据库中维护 Neutron网络的状态信息(更新 Neutron数据库),通知相应的代理实现具体的网络功能。每一个插件支持一组API资源并完成特定操作,这些操作最终由插件通过RPC调用相应的代理( Agent)来完成

2)代理

  • 代理处理插件转来的请求,负责在网络提供者上真正实现各种网络功能。代理使用物理网络设备或者虚拟化技术完成实际的操作任务,如用于路由具体操作L3 Agent

3)网络提供者

  • 插件、代理与网络提供者配套使用,比如网络提供者是 Linux Bridge,就需要使用 Linux Bridge的插件和代理,如换成 Open vSwitch,则需要改成相应的插件和代理

四、Neutron的物理部署

  • Neutron与其他 OpenStack服务组件系统工作,可以部署在多个物理主机节点上,主要涉及控制节点、网络节点和计算节点,每个节点可以部署多个,典型的主机节点部署介绍如下

1.控制节点和计算节点

  • 控制节点上部署 Neutron- service(API)、 Core Plugin和 Service Plugin的代理,这些代理包括 neutron-plugin-agent、 neutron-medadata-agent、 neutron-dhcp-agnet、 neutro-l3- agent、neutron- lba as-agent等。 Core plugin和 service plugin已经集成到 neutron-server中,不需要运行独立的 plugin服务
  • 计算节点上可以部署 Core Plugin、 Linux Bridge或 Open vSwitch的代理,负责体提供二层的网络功能
  • 控制节点和计算节点都需要部署 Cere Plugin的代理,因为控制节点与计算节点通过该代理才能建立二层连接

2.控制节点和网络节点

  • 可以通过增加网络节点承担更大的负载,该方案特别适合规模较大的 OpenStack环境
  • 控制节点部署 Neutron-server服务,只负责通过 Neutron-server响应的API请求
  • 网络节点部署的服务包括 Core Plugin的代理和 service Plugin的代理。将所有的代理从上述控制节点分离出来,部署到独立的网络节点上,由独立的网络节点实现数据的交换,路由以及负责均衡等高级网络服务

总结

  • Neutron 优点:
    • Openstack 中的 SDN 组件架构也属于可插拔类型。通过各种插件可以管控不同种类的交换机、路由器、防火墙、负载均衡器并实现 firewall as a service 等许多功能。通过软件来定义的网络,可以对整个云计算设施进行更为精细的掌控

你可能感兴趣的:(Openstack,openstack,neutron)