如何安装、配置和使用Neutron的各个组件

本文将介绍 OpenStack Networking,它管理着其他 OpenStack 项目之间的连接性。

可以开发一个不包含任何特定于网络的功能的、可弹性扩展的工作负载管理系统。当然,计算节点需要在彼此之间建立连接,并能访问外部世界,但它也可以利用现有的网络基础架构来分配 IP 地址和在节点之间传输数据。在多租户环境中,这样一种方法的最大问题是,已有的网络管理系统无法高效、安全地在用户之间隔离流量 — 这同时也是构建公共和私有云的组织面临的一个巨大问题。

OpenStack 解决此问题的一种方式是,构建一个详尽的网络管理堆栈,用它来处理所有网络相关请求。此方法面临的挑战是,每个实现都可能拥有一组独特的需求,包括与其他各种各样的工具和软件的集成。

OpenStack 因此采取了创建抽象层的方法,这个抽象层被称为 OpenStack Networking,可容纳大量处理与其他网络服务的集成的插件。它为云租户提供了一个应用编程接口 (API),租户可使用它配置灵活的策略和构建复杂的网络拓扑结构 — 例如用它来支持多级 Web 应用程序。

OpenStack Networking 支持使用第三方编写插件来引入高级网络功能,比如 L2-in-L3 隧道和端到端服务质量支持。它们还可以创建网络服务,比如负载平衡、虚拟专用网或插入 OpenStack 租户网络中的防火墙。

在过去,OpenStack 的网络组件位于 OpenStack Nova (Compute) 项目中。其中大部分组件被拆分为一个包含 Folsom 版的单独项目。这个新项目最初称为 Quantum,但后来重命名为 Neutron,以避免与公司 Quantum Corporation 的任何商标混淆。所以,如果看到 OpenStack Networking 参考资料中同时出现了名称 Nova、Quantum 和 Neutron,不要感到奇怪。

模型

OpenStack Networking API 基于一个简单的模型(包含虚拟网络、子网和端口抽象)来描述网络资源。网络是一个隔离的 2 层网段,类似于物理网络世界中的虚拟 LAN (VLAN)。更具体来讲,它是为创建它的租户而保留的一个广播域,或者被显式配置为共享网段。网络也是 Neutron API 的主要目标。换句话说,端口和子网始终被分配给某个特定的网络。

子网是一组 IPv4 或 IPv6 地址以及与其有关联的配置。它是一个地址池,OpenStack 可从中向虚拟机 (VM) 分配 IP 地址。每个子网指定为一个无类别域间路由 (Classless Inter-Domain Routing) 范围,必须与一个网络相关联。除了子网之外,租户还可以指定一个网关、一个域名系统 (DNS) 名称服务器列表,以及一组主机路由。这个子网上的 VM 实例随后会自动继承该配置。

端口是一个虚拟交换机连接点。一个 VM 实例可通过此端口将它的网络适配器附加到一个虚拟网络。在创建之后,一个端口可从指定的子网收到一个固定 IP 地址。API 用户可从地址池请求一个特定的地址,或者 Neutron 可以分配一个可用的 IP 地址。OpenStack 还可以定义接口应使用的媒体访问控制地址。在取消分配该端口后,所有已分配的 IP 地址都会被释放并返回到地址池。

插件

最初的 OpenStack Compute 网络实现采用了一种基本模型,通过 Linux® VLAN 和 IP 表执行所有隔离操作。OpenStack Networking 引入了插件的概念,插件是 OpenStack Networking API 的一种后端实现。插件可使用各种不同的技术来实现逻辑 API 请求。

一些 OpenStack Networking 插件可能使用基本的 Linux VLAN 和 IP 表。这些插件对于小型和简单的网络通常已经足够,但更大型的客户可能拥有更复杂的需求,涉及到多级 Web 应用程序和多个私有网络之间的内部隔离。它们可能需要自己的 IP 地址模式(这可能与其他租户使用的地址重复)— 例如,用来允许应用程序在无需更改 IP 地址的情况下迁移到云中。在这些情况下,可能需要采用更高级的技术,比如 L2-in-L3 隧道或 OpenFlow。

插件架构使云管理员可以非常灵活地自定义网络的功能。第三方可通过 API 扩展提供额外的 API 功能,这些功能最终会成为核心 OpenStack Networking API 的一部分。

Neutron API 向用户和其他服务公开虚拟网络服务接口,但这些网络服务的实际实现位于一个插件中,插件向租户和地址管理等其他服务提供了隔离的虚拟网络。任何人都应该能够通过 Internet 访问 API 网络,而且该网络实际上可能是外部网络的一个子网。前面已经提到过,Neutron API 公开了一个网络连接模型,其中包含网络、子网和端口,但它并不实际执行工作。Neutron 插件负责与底层基础架构交互,以便依据逻辑模型而传送流量。

现在已有大量包含不同功能和性能参数的插件,而且插件数量仍在增长。目前包含以下插件:

Open vSwitch Cisco UCS/Nexus Linux Bridge Nicira Network Virtualization Platform Ryu OpenFlow Controller NEC OpenFlow

云管理员可自行选择插件,他们可评估各个选项并根据具体的安装需求而调整它们。

架构

neutron-server 是 OpenStack Networking 服务器的主要流程。它是一个 Python 后台进程,将用户请求从 OpenStack Networking API 中继到配置的插件。OpenStack Networking 还包含 3 个代理,它们通过消息队列或标准 OpenStack Networking API 与主要 Neutron 进程交互:

neutron-dhcp-agent 向所有租户网络提供动态主机配置协议 (Dynamic Host Configuration Protocol, DHCP) 服务。 neutron-l3-agent 执行 L3/网络地址转换 (Network Address Translation) 转发,以支持网络网络访问租户网络上的 VM。 一个特定于插件的可选代理 (neutron-*-agent) 在每个虚拟机管理程序上执行本地虚拟交换机配置。

一定要知道 OpenStack Networking 与其他 OpenStack 组件之间的交互方式。与其他 OpenStack 项目一样,OpenStack Dashboard (Horizon) 提供了图形用户界面,以便管理员和租户用户能够访问功能 — 在这里,是访问用来创建和管理网络服务的功能。这些服务也依照 OpenStack Identity (Keystone) 对所有 API 请求执行身份验证和授权。

与 OpenStack Compute (Nova) 的集成更加特殊。Nova 启动了一个虚拟实例时,该服务会与 OpenStack Networking 通信,将每个虚拟网络接口插入到一个特定的端口中。

设置

实际安装指令在发行版与 OpenStack 版本之间有很大区别。一般而言,它们都包含在发行版中。但是,必须完成同样的基本任务。本节介绍了涉及到的一些信息。

系统要求

OpenStack 依赖于一种 64 位 x86 架构;另外,它是为商用硬件而设计的,所以具有极低的系统要求。它可以在配有包含 8GB RAM 的单个系统上运行整套 OpenStack 项目,但对于任何重大的工作,有必要拥有一个包含至少 8GB RAM、两个 2TB 磁盘和两个 Gbit 网络适配器的专用计算节点。常常会使用一个控制器主机来运行集中化的 OpenStack Compute 组件。在这种情况下,OpenStack Networking 服务器可在同一个主机上运行,但同样可以将它部署在一个独立的服务器上。

安装

安装指令取决于发行版本,更具体来讲,取决于您选择的包管理实用程序。在许多情况下,必须声明存储库。所以,举例而言,如果您使用的是 Zypper,那么您要用 zypper ar 向 libzypp 公开:

# zypper ar -f http://download.opensuse.org/repositories/Cloud:/OpenStack:/Grizzly/SLE_11_SP3/Cloud:OpenStack:Grizzly.repo

出于演示之目的,以下是 Ubuntu、Red Hat (Red Had Enterprise Linux、CentOS、Fedora)和 openSUSE 的主要命令:

Ubuntu:安装 neutron-server 和访问该 API 的客户端: $sudo apt-get install neutron-server python-neutronclient

安装插件:

$sudo apt-get install neutron-plugin-<plugin-name>

例如:

$sudo apt-get install neutron-plugin-openvswitch-agent Red Hat:类似于 Ubuntu,您必须同时安装 Neutron 服务器和插件 — 例如: $sudo yum install openstack-neutron$sudo yum install openstack-neutron-openvswitch openSUSE:使用以下命令: $sudo zypper install openstack-neutron$sudo zypper install openstack-neutron-openvswitch-agent

配置

大部分插件都需要一个数据库。OpenStack Networking 的 Fedora 包包含服务器设置实用程序脚本,负责数据库的完整安装和配置:

$sudo neutron-server-setup --plugin openvswitch

但也可以手动配置这些数据库。例如,在 Ubuntu 上,您可使用以下命令安装数据库:

$sudo apt-get install mysql-server python-mysqldb python-sqlalchemy

如果已经为其他 OpenStack 服务安装了一个数据库,那么您只需要创建一个 Neutron 数据库:

$
mysql-u <user> -p <pass> -e "create database neutron"

必须在插件的配置文件中指定该数据库。为此,在 /etc/neutron/plugins/plugin-name 中找到插件配置文件(例如 /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini),然后设置连接字符串:

sql_connection = mysql://<user>:<password>@localhost/neutron?charset=utf8

使用场景

一个典型的 OpenStack Networking 设置可能很复杂,包含多达 4 个不同的物理网络。使用一个管理网络在 OpenStack 组件之间执行内部通信。一个数据网络处理实例之间的数据通信。API 网络向租户公开了所有 OpenStack API。此外,通常需要一个外部网络来授予访问 VM 的 Internet 的权限。

在这些物理网络之上,可通过许多方式配置租户需要的虚拟网络。最简单的场景是单个平面网络。也可以有多个平面网络、每个租户的私有网络,并提供商和每租户路由器的组合来管理网络之间的流量。

为了了解如何在实际中使用 OpenStack Networking,我们来看一个简单的场景,其中一个租户创建了一个网络,定义了一个路由器来将从私有网络转发流量,分配该网络的一个子网,并启动一个要与该网络有关联的实例。

以具有 Member 角色的用户身份登录到 OpenStack Dashboard。在导航窗格中的 Manage Network 下方,单击 Networks,然后单击 Create Network。

图 1. 访问 Networks 窗口

填入网络名称以及第一个子网。

图 2. 创建一个网络

提到子网,我指的是网络地址范围(例如 10.2.0.0/16)和默认网关。

图 3. 创建子网

也可配置 DHCP 和 DNS。

图 4. 子网细节

作为一个可选步骤,请单击 Manage Network 下方的 Routers,然后单击 Create Router 来创建一个路由器。然后可连接到路由器的接口来定义流量应如何流动。

图 5. 路由器细节

IP 地址端口分配在启动一个镜像时执行。Nova 联系 Neutron 来创建一个端口(在子网上)。每个虚拟实例自动接收一个私有 IP 地址。您可以使用 OpenStack 的浮动 IP 地址概念像
实例分配公共 IP 地址,此操作是可选的。

图 6. 管理浮动 IP 关联

项目从池中请求一个浮动 IP 地址之后,它就拥有该地址,您可以自由地解除与该实例的关联,并将它附加到另一个实例。

图 7. 访问和安全

结束语

希望这篇简短的介绍能让您大致了解 OpenStack 提供的针对网络的选项。请记住,OpenStack 实际上并未提供许多网络功能:举例而言,路由、交换和名称解析是由底层的网络基础架构处理的。OpenStack 的作用是将这些组件的管理捆绑在一起,并将它们连接到计算工作负载。

时间: 2024-12-06 18:12:06

如何安装、配置和使用Neutron的各个组件的相关文章

安装配置bugzilla笔记

因为自己在安装配置的时候走了些弯路,所以一方面自己提个醒,另一方面可以让有这方面需要的朋友做个参考 bugzilla是一个可以发布bug以及跟踪报告bug进展情况的开源软件,有关的官方文档可以查看:http://www.bugzilla.org/docs/ 本人是在RH9上安装配置成功bugzilla-2.18rc3的,事先也成功安装配置过2.16.7,后来发现在2.18中加入了图表的功能,觉得蛮有意思的,所以升级了一下.在安装前先确定自己机器上一些软件版本的情况:perl(5.6 or abo

Winodws下IIS/Apache+PHP+MySQL的安装配置

apache|iis|mysql 我写过的教程不多,而且大部分都是来源于别人的教程,不过,这里所介绍的,都是融入我所总结的经验.--引言 PHP的执行效率是有目共睹的,这也是我喜欢它的原因之一,和它称为绝妙搭档的Mysql以及Apache想融合,不能不惊叹其效率了.PHP更新也很快,这里列举了目前最新版本PHP4.3.2RC4(几乎没有BUG了,估计写完这篇不久后正式版就出了),和最新版本的Mysql4.0.13的安装过程. PHP的安装文件可以直接到 http://www.php.net/ 下

Oozie-3.3.2安装配置运行实践

Oozie是一个开源的工作流调度系统,它能够管理逻辑复杂的多个Hadoop作业,按照指定的顺序将其协同运行起来.例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示: 通过Hadoop先将原始数据同步到HDFS上: 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中: 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表: 将明细数据进行复杂的统计分析,得到排序后的报表信息

Hue安装配置实践

Hue是一个开源的Apache Hadoop UI系统,最早是由Cloudera Desktop演化而来,由Cloudera贡献给开源社区,它是基于Python Web框架Django实现的.通过使用Hue我们可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job等等.很早以前就听说过Hue的便利与强大,一直没能亲自尝试使用,下面先通过官网给出的特性,通过翻译原文简单了解一下Hue所支持的功能特性集合: 默认基于轻量级sq

Cacti安装配置及使用

工作原理图: 整个系统有四部分组成: 1.Cacti系统平台用于用户设置与查看图表:Cacti需要LAMP环境的支持. 2.snmp用于采集数据给rrdtool绘制成图,使用161.162端口,用MIB数据库来保持数据信息,根据OID定位数据(类似1.3.6.1.2.1):Linux下使用net-snmp自带的snmpget和snmpwalk等程序,Windows下使用php的snmp功能. 3.RRDTool绘图引擎用于性能数据的存储和绘画图像. 4.Mysql数据库用来存储RRDTool绘图

Windows系统下XAMPP的安装配置图文教程

  这是关于在windows下XAMPP的安装配置图文教程,XAMPP 是什么?在linux ubuntu系统下安装配置LAMP时提到了XAMPP,XAMPP为我们提供了一种在Linux.Solaris.Windows和Mac OS X系统下简易安装Apache服务器发行版的快捷方法. XAMPP(X-系统,A-Apache,M-Mysql,P-php,P- Phpmyadmin/Perl)这个缩写名称说明了XAMPP安装包所包含的文件:Apache web 服务器, MySQL数据库, PHP

php5.3.10的安装配置步骤详解

在linux中php安装配置与windows中有不小的区别了,在linux中几乎都是代码形式了,下面我们一起来看看php5.3.10的安装配置步骤详解,希望下文可帮助到各位. 下面以最新的php-5.3.10为例进行安装. wget http://cn.php.net/distributions/php-5.3.10.tar.gz tar -zxvf php-5.3.10.tar.gz cd php-5.3.10 ./configure --prefix=/usr/local/php --wit

Grunt安装配置教程:前端自动化工作流

文章简介:Grunt 打造前端自动化工作流. Grunt这货是啥? 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能帮我们干啥? 在开始介绍前,先向大家描述下面的场景: [场景1:项目开始前] 先建立一个 projA 的文件夹 再建 html css js images (建5个或以上文件夹,花费1分钟) 拷贝 CSS库(Yui Reset bootstrap)JS库(Requiet.js Seajs jQuery jQuery插件 ) 进

CssGaga安装配置:运行环境/下载/配置

文章简介:CssGaga安装配置:运行环境/下载/配置. 1. 安装Microsoft .NET Framework 3.5 下载 Microsoft .NET Framework 3.5 注:Windows Vista. Windows 7已集成 2. 下载CssGaga最新绿色版并解压到本地 CssGaga Download 3. 更改配置文件CssGaga.exe.config <!-- 本地路径 --> <add key="pathSource" value=