OpenStack Train版-7.neutron网络服务概述
网络服务NEUTRON概述
一、NEUTRON架构
OpenStack的网络服务neutron是整个OpenStack中最复杂的一个部分,它的基本架构是一个中心服务(neutron-server)外加各种plugins和agents,使用不同的network provider(网络提供者,如Linux Bridge、OpenvSwitch(ovs)等)来实现各种网络架构,在这之上为实例提供网络、子网、端口和防火墙等网络资源。
下图是neutron的基本架构

可见,neutron采用分布式架构,由多个组件(子服务)共同对外提供网络服务。
1. 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**
dhcp agent通过dnsmasq为实例提供dhcp服务。 **Routing**
l3 agent可以为 project(租户)创建router,提供neutron subnet之间的路由服务。路由功能默认通过IPtables实现。 **Firewall**
l3 agent 可以在router上配置防火墙策略,提供网络安全防护。 **Security Group**
另一个与安全相关的功能是Security Group,也是通过IPtables实现。 Firewall与Security Group的区别在于:
Firewall 安全策略位于router,保护的是某个project 的所有network。
Security Group 安全策略位于实例,保护的是单个实例。 **Load Balance**
neutron默认通过HAProxy为project中的多个instance提供load balance服务。
五、NEUTRON管理的网络资源
neutron可以创建、删除和修改下面几种网络资源
**network**
network是一个隔离的二层广播域。neutron支持多种类型的network,包括local, flat, VLAN, VxLAN和GRE。 **subnet**
subnet是一个IPv4或者IPv6地址段。实例的IP地址从subnet中分配。每个subnet需要定义IP地址的范围和掩码。 **port**
port可以看做虚拟交换机上的一个端口。port上定义了MAC地址和IP地址,当实例的虚拟网卡连接到端口时,port会把ip地址和mac地址分配给虚拟网卡。 在OpenStack中,一个项目(租户)可以有多个network,一个network可以有多个subnet,一个subnet可以有多个port,一个port属于一个实例,一个实例可以连接多个port(多网卡)。
六、NEUTRON和NOVA的交互
网络服务NEUTRON和计算服务NOVA是通过NEUTRON-METADATA-AGENT来交互的。
实例在启动时需要访问NOVA-METADATA-API服务获取METADATA和USERDATA,这些DATA是该实例的定制化信息,比如 HOSTNAME,IP,PUBLIC KEY等。
通过NEUTRON-METADATA-AGENT,能够通过网络访问到NOVA-METADATA-API 服务,从而获得实例的定制化信息。该AGENT让实例能够通过DHCP-AGENT或者L3-AGENT与NOVA-METADATA-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:控制节点 + 网络节点 + 计算节点

在这个部署方案中,OpenStack 由控制节点,网络节点和计算节点组成。
控制节点
部署neutron server服务。
网络节点
部署的服务包括:core plugin的agent和service plugin的agent。
计算节点
部署core plugin的agent,负责提供二层网络功能。
这个方案的要点是将所有的agent从控制节点分离出来,部署到独立的网络节点上。
1.控制节点只负责通过NEUTRON SERVER响应API请求。
2.由独立的网络节点实现数据的交换,路由以及LOAD BALANCE等高级网络服务。
3.可以通过增加网络节点承担更大的负载。
4.可以部署多个控制节点、网络节点和计算节点。
该方案特别适合规模较大的OpenStack环境。
八、网络服务NEUTRON小结

1、NEUTRON通过PLUGIN和AGENT提供的网络服务,提供对网络、子网、端口、防火墙等的管理。
2、PLUGIN位于NEUTRON SERVER,包括CORE PLUGIN和SERVICE PLUGIN。
3、AGENT位于各个节点,负责实现网络服务。
4、CORE PLUGIN提供L2功能,ML2是推荐的PLUGIN。
5、使用最广泛的L2 AGENT是LINUX BRIDAGE和OPEN VSWITCH。
6、SERVICE PLUGIN和AGENT提供扩展功能,包括DHCP, ROUTING, LOAD BALANCE, FIREWALL等。
OpenStack Train版-7.neutron网络服务概述的更多相关文章
- OpenStack Train版-11.安装horizon服务(计算节点)
OpenStack仪表板Dashboard服务的项目名称是Horizon,它所需的唯一服务是身份服务keystone,开发语言是python的web框架Django. 安装Train版本的Horizo ...
- OpenStack Train版-10.安装neutron网络服务(网络节点:可选)
可选:安装neutron网络服务节点(neutron01网络节点192.168.0.30)网络配置按照官网文档的租户自助网络 配置系统参数 echo 'net.ipv4.ip_forward = 1' ...
- OpenStack Train版-9.安装neutron网络服务(计算节点)
在计算节点安装neutron网络服务(computel01计算节点192.168.0.20)安装组件 yum install openstack-neutron-linuxbridge ebtable ...
- OpenStack Train版-8.安装neutron网络服务(控制节点)
安装neutron网络服务(controller控制节点192.168.0.10) 创建neutron数据库 mysql -uroot CREATE DATABASE neutron; GRANT A ...
- CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)
上一章介绍了独立的nova计算节点的安装方法,本章分享openstack的网络服务neutron的安装配制方法 ------------------- 完美的分割线 ----------------- ...
- openstack第四章:neutron— 网络服务
第四篇neutron— 网络服务 一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是 ...
- openstack (5)-- 部署 Neutron 网络服务
Neutron 概念: 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和删除网络,网络的连 ...
- OpenStack核心组件-neutron网络服务
1. neutron 介绍 1.1 Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能 ...
- openstack核心组件——neutron网络服务(8)
云计算openstack核心组件——neutron网络服务(8) 一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云 ...
随机推荐
- kubernets之控制器之间的协作以及网络
一 创建一个deployment的时候整个kubernets集群的资源和事件的调用链 1.1 创建一个deployment的资源,在提交的时候,集群中的调度器,控制器以及node节点上kubele ...
- Py层次递进与文件修改大程序,模块,name与file
层次的递进与返回 #输入quit的时候返回上一阶层,输入exit退出所有的循环 tag=True while tag==True: level1=input('level1:') if level1= ...
- 六个你不知道的PR快捷键,拯救你的剪辑效率
5G时代到来,会剪辑视频的人,无论在校园还是未来步入职场都很吃香.对于普通人来说,视频处理也成为了一个通用技能.PR是我们大多数人剪辑中,经常会用到的剪辑工具,之前的文章中已经给大家总结了pr的一些提 ...
- 在原生开发中控制HTML5视频!
在原生开发中控制HTML5视频! PC端 视频如何自动播放! 在video标签中添加 autoplay + muted(静音属性!) 温馨提醒: video是一个块级元素! 但是唯一的缺陷就是视频没有 ...
- history附上时间戳,history命令_Linux history命令:查看和执行历史命令
起因是这样的,一台机器客户反馈连接不上,说没有任何操作.好吧,排查吧. 1.第一步先看网络是否通: 从图中可以看到一开始是一直不通的.然后就通了,问了客户有没操作重启什么的结果说没有任何操作,还让给个 ...
- Jmeter5.1.1 把默认语言调整为中文
进入安装目录:apache-jmeter-5.1.1\bin\ 找到 jmeter.properties文件 搜索" language=en ",前面带有"#" ...
- Spring Data JPA基本增删改查和JPQL查询(含完整代码和视频连接)
问题:SpringDataJPA怎么使用? 一.考察目标 主要考核SpringDataJPA的用法 二.题目分析 spring data jpa 的使用步骤(下面有具体实现细节) 1.创建maven工 ...
- autocommit 隔离级别 next lock gap lock 事务隔离级别和锁
autocommit 隔离级别 https://www.ibm.com/developerworks/cn/opensource/os-mysql-transaction-isolation-leve ...
- Feign配置日志的打印级别
一.细粒度的配置Feign的日志级别(针对每个微服务配置) 1.java代码方式 (1)在Feign接口注解上面配置configuration /** * @author : maybesuch * ...
- Excel 常用数据类型、自定义格式、特殊值等等
常用数据类型: 常规: 常规单元榴格式不包含慑拍H靛的数字格式. 数值: 可以设置小数位数,是否使用千位分割符,以及负数样式 货币: 可以设置小数位数,货币符号,以及负数样式 会计专用: 可以设置小数 ...