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 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云 ...
随机推荐
- 【Linux】ssh反映特别慢,但是网络没有问题的时怎么办
用crt连接服务器的时候,感觉很久才有反映,大约持续2秒以上,这种情况下,是解析的问题 这里有一个方法可以优化ssh cd /etc/ssh/ cp sshd_config sshd_config.b ...
- 单元测试:单元测试中的mock
公司要求提升单元测试的质量,提高代码的分支覆盖率和行覆盖率,安排我研究单元测试,指定方案分享并在开发部普及开.整理完资料后,同步一下到博客. 单元测试中的mock的目的 mock的主要目的是让单元测试 ...
- USB限流芯片,4.8A最大,过压关闭6V
PW1503,PW1502是超低RDS(ON)开关,具有可编程的电流限制,以保护电源源于过电流和短路保护.它具有超温保护以及反向闭锁功能. PW1503,PW1502采用薄型(1毫米)5针薄型SOT2 ...
- Failed to start LSB: starts php-fpm
跟nginx一样都是进程占用,记录下 [root@localhost pazzn]# systemctl status php-fpm.service ● php-fpm-72.service - L ...
- IEEE Standard 754 for Binary Floating-Point Arithmetic
IEEE 754-2008 - IEEE Standard for Floating-Point Arithmetic https://standards.ieee.org/standard/754- ...
- # from tall import b from tall import * print(b) __all__ 模块 引用管理
├── __init__.py├── tall2.py└── tall.pytall.pya = 23b = 34class I: def __init__(self): print(444)clas ...
- BZOJ2120 数颜色(带修改的莫队算法)
Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...
- nodejs如何下载指定版本
浏览了一下nodejs的官网,但是官网没有下载低版本的下载地址,所以找了一个可以下载指定版本node的下载地址https://nodejs.org/download/release/v8.9.4/
- Linux命令之Crontab定时任务,利用Crontab定时执行spark任务
Linux命令之Crontab定时任务,利用Crontab定时执行spark任务 一.Linux命令之Crontab定时任务 1.1 常见Crontab任务 1.1.1 安装crontab 1.1.2 ...
- WAMP3.1.3自定义根目录
1.首先找到httpd.conf 文件,搜索documentroot 修改前:DocumentRoot "${INSTALL_DIR}/www" <Directory &qu ...