neutron组件

    技术2024-06-19  81

    本文介绍了OpenStack网络,该网络管理其他OpenStack项目之间的连接。

    在不包含任何特定于网络的功能的情况下,有可能开发出一种可弹性伸缩的工作负载管理系统。 当然,计算节点将需要它们之间的连接性以及对外界的访问,但是有可能利用现有的网络基础结构来分配IP地址并在节点之间中继数据。 在多租户环境中,这种方法的最大问题在于,现有的网络管理系统将无法高效,安全地隔离用户之间的流量,这对于同时构建公共云和私有云的组织来说是一个大问题。

    解决此问题的一种方法是让OpenStack建立一个精心设计的网络管理堆栈,以处理所有与网络相关的请求。 这种方法的挑战在于,每个实现都可能具有一组独特的要求,其中包括与各种其他工具和软件的集成。

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

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

    从历史上看,OpenStack的网络组件位于OpenStack Nova(计算)项目中。 随着Folsom发行版,其中大多数被拆分为一个单独的项目。 这个新项目最初称为Quantum,但后来更名为Neutron,以避免与Quantum Corporation的商标混淆。 因此,不要惊讶地看到名称Nova,Quantum和Neutron都出现在对OpenStack Networking的引用中。

    模型

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

    子网是IP版本4或6地址及其相关配置的一部分。 它是一个地址池,OpenStack可以从该地址池为虚拟机(VM)分配IP地址。 每个子网都指定为“无类域间路由”范围,并且必须与网络关联。 与子网一起,租户可以选择指定网关,域名系统(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插件负责与底层基础结构进行交互,以便根据逻辑模型路由流量。

    越来越多的具有不同功能和性能参数的插件可用。 该列表当前包括以下插件:

    打开vSwitch 思科UCS / Nexus Linux桥 Nicira网络虚拟化平台 Ryu OpenFlow控制器 NEC OpenFlow

    插件的选择由云管理员决定,云管理员可以评估这些选项并使它们适应特定的安装要求。

    建筑

    neutron-server是OpenStack网络服务器的主要过程。 它是一个Python守护程序,它将来自OpenStack Networking API的用户请求中继到已配置的插件。 OpenStack Networking还包括三个通过消息队列或标准OpenStack Networking API与主要Neutron进程进行交互的代理:

    neutron-dhcp-agent为所有租户网络提供动态主机配置协议(DHCP)服务。 neutron-l3-agent执行L3 /网络地址转换转发,以使租户网络上的VM能够进行外部网络访问。 可选的特定于插件的代理程序( neutron-*-agent )在每个虚拟机管理程序上执行本地虚拟交换机配置。

    注意OpenStack网络与其他OpenStack组件之间的交互非常重要。 与其他OpenStack项目一样,OpenStack仪表板(Horizo​​n)提供了图形用户界面,供管理员和租户用户访问功能-在这种情况下,可以创建和管理网络服务。 该服务还遵循OpenStack身份验证(Keystone)进行任何API请求的身份验证和授权。

    与OpenStack Compute(Nova)的集成更为具体。 当Nova启动虚拟实例时,该服务将与OpenStack Networking通信,以将每个虚拟网络接口插入特定的端口。

    设定

    实际的安装说明在发行版和OpenStack发行版之间有很大差异。 通常,它们是发行版的一部分。 但是,必须完成相同的基本任务。 本节使您对所涉及的内容有所了解。

    系统要求

    OpenStack依赖于64位x86架构; 否则,它是为商品硬件设计的,因此最低的系统要求是适度的。 可以在具有8GB RAM的单个系统上运行整个OpenStack项目套件,但是对于任何严肃的工作,值得拥有一个至少具有8GB RAM,两个2TB磁盘和两个Gbit网络适配器的专用计算节点。 。 通常使用控制器主机来运行集中式OpenStack Compute组件。 在这种情况下,OpenStack网络服务器可以在同一主机上运行,​​但也可以将其部署在单独的服务器上。

    安装

    安装说明取决于发行版,更具体地取决于您选择的软件包管理实用程序。 在许多情况下,必须声明存储库。 因此,例如,在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网络设置可能很复杂,最多具有四个不同的物理网络。 管理网络用于OpenStack组件之间的内部通信。 数据网络处理实例之间的数据通信。 API网络将所有OpenStack API公开给租户。 此外,您通常需要一个外部网络,该网络可以授予对VM的Internet访问权限。

    在这些物理网络之上,有许多方法可以配置租户所需的虚拟网络。 最简单的方案是单个平面网络。 也可能有多个平面网络,专用的每个租户网络以及提供商和每个租户路由器的组合来管理网络之间的流量。

    为了了解如何在实践中使用OpenStack Networking,让我们看一个简单的场景,在此场景中,租户创建网络,定义路由器以转发来自专用网络的流量,将子网与网络关联,然后启动实例与网络相关联。

    以具有成员角色的用户身份登录到OpenStack仪表板。 在导航窗格中的管理网络下,单击网络 ,然后单击创建网络 。
    图1.访问网络窗口
    填写网络名称以及第一个子网。
    图2.创建一个网络

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

    图3.创建子网
    您还可以配置DHCP和DNS。
    图4.子网详细信息
    作为可选步骤,通过单击“管理网络”下的“ 路由器” ,然后单击“ 创建路由器” , 创建路由器 。 然后,您可以连接路由器的接口以定义流量的流向。
    图5.路由器详细信息
    启动映像时,将进行IP地址端口分配。 Nova与Neutron联系,以在子网上创建端口。 每个虚拟实例都会自动接收一个专用IP地址。 您可以选择使用浮动IP地址的OpenStack概念为实例分配公共IP地址。
    图6.管理浮动IP关联
    项目从池请求浮动IP地址后,它拥有该地址,并可以将其与该实例解除关联并将其附加到另一个实例。
    图7.访问和安全

    结论

    我希望这次简短的介绍可以让您对OpenStack提供的联网选项有所了解。 请记住,OpenStack实际上并没有提供很多网络功能:例如,路由,交换和名称解析是由基础网络基础结构处理的。 相反,OpenStack的作用是将这些组件的管理结合在一起,并将它们连接到计算工作负载。

    这与OpenStack在其大多数项目(包括存储)中使用的方法相同,本系列的下一篇文章将对此进行介绍。


    翻译自: https://www.ibm.com/developerworks/cloud/library/cl-openstack-neutron/index.html

    相关资源:Openstack Neutron介绍
    Processed: 0.012, SQL: 9