博威---云架构决胜云计算

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2560|回复: 0

OpenStack Atlanta Summit 视频解析之Neutron架构

[复制链接]
发表于 2014-5-16 13:35:55 | 显示全部楼层 |阅读模式
OpenStack Atlanta Summit 视频解析之Neutron架构


近日,Mark McClain在OpenStack summit发表演讲,详细介绍了Neutron的架构,包括创建Neutron项目的初衷,Neutron架构设计目标,Neutron基本部署架构及Neutron各组件的详细介绍,包括neutron-server, L2 agent, DHCP agent, L3 agent, metadata agent, LBaaS, VPNaaS等。Mark还提到了一些Juno中会加入的新功能。演讲内容比较适合Neutron开发人员,或希望对Neutron有进一步了解的相关技术人员。

Mark McClain

Neutron项目Core developer, Havana/Grizzly/IceHouse PTL, TC member,Yahoo 架构师。(https://www.linkedin.com/in/markmcclain

演讲视频请点击此处

以下是对Mark演讲内容的一个回顾。

Neutron背景介绍

为什么创建Neutron项目

  • 更丰富的拓扑结构

nova-network只提供了一组静态的网络拓扑,所以创建Neutron的动机之一就是提供创建丰富的拓扑结构的能力,包括多层网络,以及重建现实世界的拓扑结构。

  • 具体技术不可知性

nova-network只提供了静态的部署选项,只有VLAN可以使用,而VxLAN, GRE等技术也是用户所需要的。

  • 可扩展性OpenStack

网络应提供易于扩展的能力,方便各厂商进行支持。

  • 高级服务的支持

nova-network中提供的唯一的高级服务是cloudpipe,为tenant提供VPN服务。Neutron提供LBaaS,VPNaaS,FWaaS。

用户眼中的OpenStack
  • API

对于OpenStack用户来说,看到的是一组API,计算API,网络API,存储API等,这些API背后的具体技术对用户来说是不可只的,如KVM,ML2Plugin,Ceph等。

  • 抽象资源

Neutron为用户提供了一组抽象的资源(Virtual Interface, Virtual Port, L2 Virtual Network, Virtual Subnet),这些资源可以对应到物理世界中的实体,如Virtual Interface可以对应NIC,Virtual Port可以对应交换机的端口等。

Neutron架构

介绍了以上背景知识,Mark开始详细介绍Neutron架构。

设计目标

  • Unified API

Neutron希望会End User提供一组一致性的API。

  • Small Core

对于small core,用户可以期待特定的一组资源,而且各厂商比较容易共享社区并开发自己的插件。

插件式开放架构

插件式开放架构不会限制厂商的部署方式,网络设计,不会限制社区进行创新。

可扩展性

可扩展性是创新的驱动力。

OpenStack总体架构

可以点击此链接查看大图:http://docs.openstack.org/admin-guide-cloud/content/figures/2/figures/openstack-arch-havana-logical-v1.jpg

其中最右侧是Neutron的架构。

Neutron基本部署架构

下图展示了Neutron基本的部署架构及包含的组件。


  • neutron-server

提供REST API服务,后端使用关系数据库。

  • Message Queue

neutron-server使用Message Queue与其他Neutron agents进行交换消息,但是这个Message Queue不会用于neutron-server与其他OpenStack组件如nova进行交换消息。

  • L2 Agent

负责连接端口(ports)和设备,使他们处于共享的广播域(broadcast domain)。通常运行在Hypervisor上。

  • DHCP agent

用于配置虚机主机的网络(某些情况可能不需要DHCP agent,例如使用config drive来配置虚拟主机的情况)。

  • L3 Agent

负责连接tenant网络到数据中心,或连接到Internet。在真实的部署环境中,一般都需要多个L3 Agent同时运行。

Neutron各组件详细介绍
  • neutron-server

neutron-server组件由REST API Service,RPC SErvice,Plugin几部分组成。

  • REST API Service

neutron-server本身是WSGi应用,提供REST API服务,使用9696端口,对用户暴露基本的逻辑资源,如network, subnet, port等,同时负责HTTP request和response的序列化。

  • RPC Service

使用AMQP, 基于oslo messaging模块,用于agents之间的双向通信

  • Plugin

使用Python编写。同时只能使用一个plugin,plugin必须实现V2 APIs,可以提供数据库访问或者扩展支持。例如ML2 Plugin。

  • Plugin Extensions

Plugin提供了扩展机制,这种机制可以为REST API增加更多的逻辑资源,如router,security group等。Pplugin的扩展点由neutron-server在启动的时候发现和加载。常见的扩展点如Binding,DHCP,L3,Provider,Quota, Security,其他的扩展点如Allowed Addresses, Extra Routes,Metering等。

  • Monolithic Plugin

Monolithic Plugin的特征是实现所有的Core资源。Neutron中包含两种类型Monolithic Plugin,一种是Proxy Plugin,将功能代理到其他实际管理data plane的拓扑的服务器,例如BigSwitch Plugin,另一种是Direct Control Plugin,例如Linux Bridge或Open vSwitch Plugin,实际操作虚机设备。

  • ML2 Plugin drivers

目前Neutron已经默认使用ML2 Plugin,ML2 Plugin使用户能够同时利用数据中心中各种L2网络技术。ML2 Plugin提供两种Drivers,一种是Typer Driver, 维护网络状态,验证provider network和分配tenant网络,目前,支持的网络类型包括local, float, vlan, gre, vxlan。另一种是Mechanism Driver, 负责使用Type Driver提供的信息,实现具体的网络机制,例如通过Open vSwitch实现VLAN网络。

  • L2 Agent

L2 Agent通常运行在Hypervisor,与neutron-server通过RPC通信,监听并通知设备的变化,创建新的设备来确保网络segment的正确性,应用security groups规则等。例如,OVS Agent,使用Open vSwitch来实现VLAN, GRE,VxLAN来实现网络的隔离。

  • L3 Agent

在介绍L3 Agent之前,Mark介绍了Linux network namespace,这时实现L3 agent的技术基础,特别是overlapping ip,必须依赖namespace来实现。每一个namespace是一个独立的IP Stack,namespace之间通过虚拟设备之间的link来实现。关于linux network namespace的信息可以参照这篇文章:http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/

L3 Agent运行在网络结点,负责连接tenant网络到数据中心,或连接到Internet。如上所述使用namespaces,通过独立的IP Stacks,启用Forward,静态路由和metadata proxy来实现。

  • Configuration Agents: DHCP

DHCP Agent用于配置虚拟主机的网络。基于RPC通知实现(来自neutron-server的notifications),使用dnsmasq实现IP地址分配及域名服务器的设置,通过namespace实现不同网络之间DHCP服务的隔离,支持多个DHCP Agent同时运行以支持Active-Active的HA。

  • Configuration Agents: Metadata Proxy

将metadata请求代理到Nova。

除此之外,Mark亦简要介绍了LBaaS,VPNaaS,FWaaS等Neutron的Service Plugin组件。也提到Juno当中正在开发的一个新功能:在创建虚机时,Nova等待Neutron创建虚机设备,设备创建成功后通知nova继续虚机的部署。

总体来说,Mark的介绍非常详尽,不过需要具有一定的网络,OpenStack,Linux背景才能够完全吸收,尽管如此,可以从这个介绍入手去进一步熟悉Neutron的架构细节。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|boway Inc. ( 冀ICP备10011147号 )

GMT+8, 2024-12-27 09:00 , Processed in 0.087228 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表