1.5 开源云计算——OpenStack技术架构
OpenStack是一个开源的云平台架构,一方面与各个物理服务器上的主机虚拟化管理软件Hypervisor进行交互,实现对集群的物理服务器进行管理和控制;另一方面为用户开通满足配置的云主机。它是通过一系列的相关服务组件形成了一个IaaS层的云平台搭建方案,每个组件都提供了相应的API,从而实现了各个组件的集成。OpenStack官方组件关系图如图1-4所示。
图1-4 OpenStack官方组件关系图
OpenStack的每个主版本系列以字母表顺序(A~Z)命名,以年份及当年内的排序做版本号。主要组件的作用如下:
Nova:负责虚拟机的生命周期管理,并兼顾部分网络,主要是虚拟机相关的;
Neutron:负责虚拟环境下的网络,在早期版中称为Quantum,新的版本改名为Neutron;
Keystone:负责整个OpenStack各个组件和服务之间的安全认证机制方面的工作;
Swift:负责对象存储;
Cinder:负责块存储(block storage);
Glance:为云主机安装操作系统提供不同的镜像选择;
Horizon:为OpenStack提供交互页面;
还有负责监控的Ceilometer,负责编排的Heat,负责消息队列相关内容的RabbitMQ等些组件。
通过上述组件可以看出,Nova实现了OpenStack下的虚拟机的生成,Swift和Cinder提供了虚拟机的存储,网络组件是OpenStack的重要组件之一,如果没有网络,任何虚拟机无法与外部进行通信,只是计算孤岛。因此,为了实现混合组网的研究,需要通过Neutron组件进行详细分析。
OpenStack具有模块松耦合、组件配置灵活、易二次开发的特点。
1.5.1 Nova
Nova是OpenStack计算的弹性控制器。OpenStack云实例生命周期所需要的各种动作都将由Nova进行处理和支撑,Nova负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任务虚拟能力,但是它使用Libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口。
Nova提供了一种配置计算实例(即虚拟服务器)的方法,支持创建虚拟机、裸机服务器,并且对系统容器提供有限的支持。Nova在现有Linux服务器之上作为一组守护进程运行。
Nova的主要功能包括:实例生命周期管理、计算资源的管理、向外提供REST风格的API。这三个组件通过消息中间件传输通信。
Nova需要以下额外的OpenStack服务来实现基本功能:Keystone为OpenStack服务提供身份和身份验证;Glance提供了计算镜像存储库,所有计算实例都是从Glance镜像启动的;Neutron负责提供计算机实例在引导时连接到的虚拟或物理网络。
1.5.2 Neutron
Neutron是OpenStack中提供网络服务的核心组件,基于软件定义网络的思想,实现软件化的网络资源管理,在实现上充分利用了Linux系统中各种网络相关技术,支持第三方插件。
OpenStack所在的物理网络中,Neutron被统称为网络资源池,其能够对物理的网络资源进行灵活划分和管理,并能够对云平台上的每个用户提供独立的VPC(Virtuar Private Cloud,虚拟私有云),该功能类似于物理拓扑环境中的Vlan。
在OpenStack环境中,基于Neutron组件创建私有网络的过程就是创建Neutron中的各个资源对象并把对象进行连接的过程,因此,利用Neutron进行网络搭建完全可以参照物理网络的搭建方案进行规划,如图1-5所示。
如图1-5所示,首先需要创建一个外部可连接的网络对象来满足云平台的虚拟网络与互联网进行互通,然后云平台中的不同租户(租户1、租户2)可以在虚拟网络中创建私有网络subnet1和subnet2,每个私有网络可以创建云主机。为了使每个云主机都能够访问到互联网,需要通过vSwitch(虚拟交换机)将各自的私有网络与外部网络进行互通。
整个组网过程,Neutron提供了基于三层网络(L3)的虚拟路由器vRouter与一个基于二层网络(L2)的与外部互联网互通的真实路由器,该路由器为用户提供路由、NAT等服务。subnet类似于物理网络中的二层局域网(LAN),每个subnet供平台上的租户独享。
图1-5 典型Neutron组网架构
Neutron最核心的功能是针对整个云资源池中的物理二层网络进行抽象和管理,在传统网络架构下,每台物理服务器上的应用之间的通信需要利用物理服务器的网卡进行互通,将物理资源进行云化后,每台物理服务器上的各个应用可以利用虚拟机共享到一台物理服务器之中,这样多个虚拟机之间的互通则由虚拟网卡提供,物理服务器的虚拟化层——Hypervisor可以为每个虚拟机创建一个或者多个虚拟网卡(vNIC),交换机同样也可以被虚拟出来(即vSwitch),每个虚拟网卡与虚拟交换机的端口互联,这些虚拟交换机再通过物理服务器的物理网卡与外部的网络互通。OpenStack的Neutron组件主要基于以下技术来实现:
1)TAP:该技术是Linux内核实现的一对虚拟网络设备,基于TAP驱动就可以实现虚拟网卡功能,虚拟机的每个vNIC都与Hypervisor层中的一个TAP设备相连;
2)Linux Bridge(网桥):该功能是基于二层的虚拟网络设备,其功能类似于物理交换机,它的核心功能是将真实的宿主物理服务器的物理端口与虚拟机的虚拟设备TAP进行绑定;
3)Open vSwitch:该功能可以像配置物理交换机一样对接入到Open vSwitch上的各个虚拟机实现vlan的隔离,同样也可以基于Open vSwitch可以实现流量的监控功能,Open vSwitch也提供了对Open Flow的支持,可以接受Open Flow Controller的管理,实现基于流表的数据转发。
综上所述,这些功能是实现虚拟机与物理网络互通的基础,Neutron通过三层的抽象可以实现路由器的功能,通过二层的抽象可以实现网络映射的功能。这个功能是实现网络互通的基本功能,因此,在混合组网具体研究中将充分利用上述功能进行实现。
1.5.3 Keystone
1.Keystone功能特点介绍
Keystone是OpenStack中负责管理身份验证、服务规则和服务令牌功能的模块。用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过Keystone来处理。Keystone类似一个服务总线,其他服务通过Keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用,需要经过Keystone的身份验证,来获得目标服务的Endpoint来找到目标服务。
Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖资深REST(基于Identity API)系统进行工作主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。
2.Keystone的三种服务
1)令牌服务:含有授权用户的授权信息;
2)目录服务:含有用户合法操作的可用服务列表;
3)策略服务:利用Keystone具体制定用户或群组某些访问权限。
3.Keystone认证服务内容
1)服务入口:与Nova、Swift和Glance一样,每个OpenStack服务都拥有一个指定的端口和专属的URL,可以称其为入口(Endpoints);
2)区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务器的话,则也称其为区位;
3)用户:Keystone授权使用者;
4)服务:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。例如,可以称Glance为Keystone的服务;
5)角色:为了维护安全限定,就云内特定用户可执行的操作而言,该用户关联的角色是非常重要的;
6)租间:租间指的是具有全部服务入口并配有特定成员角色的一个项目。
1.5.4 Swift
Swift是OpenStack提供的一种分布式的持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象存储的能力。Swift内建冗余和失效备援管理,也能处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
Swift具有海量对象存储、大文件(对象)存储、数据冗余管理、归档能力(处理大数据集)、为虚拟机和云应用提供数据容器、处理流媒体、对象安全存储、备份与归档和良好的可伸缩性等功能特点。
Swift采用完全对称、面向资源的分布式存储架构设计,所有组件都可扩展,避免因单点失效而扩散并影响整个系统运转;通信方式采用非阻塞式I/O模式,提高了系统吞吐和响应能力,如图1-6所示。
图1-6 Swift架构
1.5.5 Cinder
Cinder是OpenStack块存储服务,用于为Nova虚拟机、Ironic裸机主机、容器等提供卷。
Cinder功能特点:
1)基于组件体系结构:快速添加新的行为;
2)高度可用:扩展到非常严重的工作负载;
3)容错:隔离进程避免级联失败;
4)可恢复的:故障应该易于诊断、调试和纠正;
5)开放标准:成为社区驱动API的参考实现。
Cinder的所有功能都是通过REST API公开,可用于使用Cinder构建更复杂的逻辑或自动化,这可以直接使用或者通过各种SDK使用。
Cinder服务通过一系列守护进程的交互来工作,这些进程(名称为“cinder-*”)永久驻留在主机或机器上,可以从单个节点运行所有二进制文件,也可以分布在多个节点上,还可以在与其他OpenStack服务相应的节点上运行。
1.5.6 Glance
Glance是OpenStack的镜像管理模块,负责镜像的上传、下载等管理。Glance项目提供虚拟机镜像的查找、注册和重现,使用Restful接口接受虚拟机镜像管理的查询请求。
OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,可以将镜像存储到以下任意一种存储中:
1)本地文件系统(默认);
2)S3直接存储;
3)S3对象存储(作为S3访问的中间渠道);
4)OpenStack对象存储等。
1.5.7 Horizon
1.Horizon功能特点介绍
Horizon是一个用于管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密钥对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(Console)或VNC(Virtual Network Console,虚拟网络控制台)直接访问实例。
(1)Horizon具备的功能
1)实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等;
2)访问与安全管理:创建安全群组,管理密钥对,设置浮动IP等;
3)偏好设定:对虚拟硬件模板可以进行不同偏好设定;
4)镜像管理:编辑或删除镜像;
5)查看服务目录;
6)管理用户、配额及项目用途;
7)用户管理:创建用户等;
8)卷管理:创建卷和快照;
9)对象存储处理:创建、删除容器和对象;
10)为项目下载环境变量。
(2)Horizon具备的特点
1)Dashboard为管理员提供了图形化的接口;
2)可以访问和管理基于云计算的资源:计算,存储,网络等;
3)提供了很高的可扩展性,支持添加第三方的自定义模块,比如计费、监控和额外的管理工具;
4)支持其他云计算提供商在Dashboard进行二次开发。
2.通过Horizon创建虚拟机的步骤
1)图形界面输入用户名密码到Keystone进行认证,认证通过之后会分配一个Token,然后使用该Token即可访问其他服务;
2)将创建虚拟机的Rest API请求发送给Nova-API(携带Token);
3)Nova-API拿着此Token到Keystone查询是否合法;
4)Nova-API和数据库进行交互,将要创建的虚拟机信息写入到数据库;
5)Nova-API发送请求至RabbitMQ消息队列;
6)Nova Scheduler监听消息队列,获取请求信息,根据算法指定的具体的计算节点,将虚拟机生成信息放入消息队列;
7)Nova Scheduler和数据库进行交互,将虚拟机生成的信息写入到数据库;
8)被指定的Nova Computer监听消息队列,获取Nova Scheduler消息,进行虚拟机创建;
9)Nova Computer到数据库查询需要经过Nova Conductor、Nova Computer与Nova Conductor,通过消息队列进行交互;
10)Nova Conductor更新数据库信息,然后Nova Computer从数据库获取到虚拟机的创建信息后进行下一步创建虚拟机的操作;
11)联系Glance获取镜像;
12)Glance联系Keystone进行认证;
13)联系Neutron获取网络;
14)Neutron联系Keystone进行认证;
15)Nova Computer联系Cinder获取磁盘;
16)Cinder联系Keystone进行认证;
17)Nova Computer调用KVM(Kernel-Based Virtual Machine,基于内核的虚拟机,通指内核级虚拟化技术)创建虚拟机。
1.5.8 Ceilometer
1.Ceilometer功能特点介绍
Ceilometer能把OpenStack内部发生的事件收集起来,为计费和监控以及其他服务提供数据支撑。
Ceilometer主要功能:提供测量服务;可以收集云计算中不同服务的统计信息;云操作人员可以收集所有资源统计信息或者单个资源的统计信息;收集汇总OpenStack内部发生的所有事件,然后为计费和监控以及其他服务提供数据支撑服务。
2.Ceilometer架构原理介绍
Ceilometer架构如图1-7所示。Ceilometer使用了两种数据采集的方式,其中一种是消费了OpenStack内各个服务自动发出的Notification消息,对应图中的灰色箭头,另一种是通过调用各个服务的API去主动轮询获取数据,对应图中的黑色细箭头。
在OpenStack内部,大部分事件都会发出Notification消息,比如创建、删除Instance实例时,这些计量、计费的重要信息都会发出对应的Notification消息,而作为Ceilometer组件,就是Notification消息的最大消费者,因此第一种方式是Ceilometer组件的首要数据来源,但也有一些计量消息通过Notification获取不到,如实例的CPU运行时间,CPU一些计量消息通过Notification获取不到,如实例的CPU运行时间、CPU使用率等,这些信息不会通过Notification发出,因此Ceilometer增加了第二种方式,即周期性的调用相关的API去轮询这些消息。
图1-7 Ceilometer架构
1.5.9 Heat
1.编排
所谓编排,就是按照一定的目的依次排列。在IT的世界里,一个完整的编排一般包括设置服务器上机器,安装CPU、内存、硬盘,通电,插入网络接口,安装操作系统,配置操作系统,安装中间件,配置中间件,安装应用程序,配置应用发布程序。对于复杂的需要部署在多台服务器上的应用,需要重复这个过程,而且需要协调各个应用模块的配置,比如配置前面的应用服务器连上后面的数据库服务器。图1-8所示为一个典型应用需要编排的项目。
管理虚拟机(VM)所需要的各个资源要素和操作系统本身就成了IaaS这层编排的重点。操作系统本身安装完后的配置也是IaaS编排所覆盖的范围。除此之外,提供能够接入PaaS和SaaS编排的框架也是IaaS编排的范围。
图1-8 编排
2.Heat功能介绍
Heat是一个基于模板来编排复合云应用的服务。模板的使用简化了复杂基础设施、服务和应用的定义和部署。模板支持丰富的资源类型,不仅覆盖了常用的基础架构,包括计算、网络、存储、镜像,还覆盖了像Ceilometer的警报、Sahara的集群、Trove的实例等高级资源。Heat和其他模块的关系如图1-9所示。
图1-9 Heat和其他模块的关系
3.Heat的应用价值
Heat采用了业界流行使用的模板方式来设计或者定义编排。用户只需要打开文本编辑器,编写一段基于Key-Value的模板,就能够方便地得到想要的编排。为了方便用户的使用,Heat提供了大量的模板例子,大多数时候用户只需要选择想要的编排,通过复制—粘贴的方式来完成模板的编写。
1.5.10 RabbitMQ
1.RabbitMQ功能特点介绍
(1)消息队列(MQ)的概念
MQ全称为Message Queue,即消息队列,是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用链接来连接它们。
消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信。直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
(2)AMQP的概念
AMQP的全称为Advanced Message Queuing Protocol,即高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
(3)RabbitMQ的概念
RabbitMQ是一个流行的开源消息队列系统,属于AMQP标准的一个实现,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
(4)RabbitMQ的特点
1)使用Erlang编写;
2)支持持久化;
3)支持HA;
4)提供C#、Erlang、Java、Perl、Python、Ruby等的客户开发端。
(5)RabbitMQ的概念名词
1)Broker:简单来说就是消息队列服务器实体;
2)Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列;
3)Queue:消息队列载体,每个消息都会被投入到一个或多个队列;
4)Binding:绑定,作用是将Exchange和Queue按照路由规则绑定起来;
5)Routing Key:路由关键字,Exchange根据这个关键字进行消息投递;
6)Vhost:虚拟主机,一个Broker里可以开设多个Vhost,用作不同用户的权限分离;
7)Producer:消息生产者,就是投递消息的程序;
8)Consumer:消息消费者,就是接受消息的程序;
9)Channel:消息通道,在客户端的每个连接里,可建立多个Channel,每个Channel代表一个会话任务。
1.5.11 分布式存储系统Ceph
1.Ceph背景介绍
目前Inktank公司掌控Ceph的开发,但Ceph是开源的,遵循LGPL协议。Inktank还积极整合Ceph及其他云计算和大数据平台,目前Ceph支持OpenStack、CloudStack、OpenNebula、Hadoop等。
目前Ceph最大的用户案例是Dreamhost的Object Service,目前总容量是3PB,可靠性达到99.99999%,数据存放采用三副本。
2.Ceph功能特点介绍
Ceph用统一的系统提供了对象、块和文件存储功能,它可靠性高、管理简便,并且开源Ceph可提供极大的伸缩性——供成百上千用户访问PB乃至EB级的数据。Ceph节点以普通硬件和智能守护进程作为支撑点,Ceph的存储集群组织起了大量节点,它们之间靠相互通信来复制数据,并动态地重分布数据。在OpenStack中,可以使用Ceph、Sheepdog、GlusterFS作为云硬盘的开源解决方案。
Ceph是统一存储系统,支持三种接口:Object、Block、File:Posix接口。
Ceph也是分布式存储系统,它的特点是:
1)高扩展性:使用普通X86服务器,支持10~1000台服务器,支持TB到PB级扩展;
2)高可靠性:没有单点故障,多数据副本,自动管理,自动修复;
3)高性能:数据分布均衡,并行化程度高。对于Objects Storage和Block Storage,不需要元数据服务器。
3.Ceph与OpenStack的集成
Ceph可与Cinder、Glance和Nova集成。
Ceph提供统一的横向扩展存储,使用带有自我修复和智能预测故障功能的商用X86硬件。它已经成为软件定义存储的事实上的标准。因为Ceph是开源的,它使许多供应商能够提供基于Ceph的软件定义存储系统。Ceph不仅限于Red Hat、Suse、Mirantis、Ubuntu等公司,SanDisk、富士通、惠普、戴尔、三星等公司现在也提供集成解决方案。甚至还有大规模的社区建造的环境(如CERN),为10000个虚拟机提供存储服务。
(1)Ceph是一个横向扩展的统一存储平台
OpenStack最需要的存储能力的两个方面:能够与OpenStack本身一起扩展,并且扩展时不需要考虑是块(Cinder)、文件(Manila)还是对象(Swift)。传统存储供应商需要提供两个或三个不同的存储系统来实现这一点。它们不同样扩展,并且在大多数情况下仅在永无止境的迁移周期中纵向扩展。它们的管理功能从来没有真正实现跨不同的存储用例集成。
(2)Ceph具有成本效益
Ceph利用Linux作为操作系统,而不是专有的系统。
(3)Ceph是开源项目,允许更紧密的集成和跨项目开发
架构图显示了所有需要存储的不同OpenStack组件。它显示了这些组件如何与Ceph集成,以及Ceph如何提供一个统一的存储系统,扩展以满足所有这些用例。
1.5.12 软件定义网络
1.SDN概述
SDN(Software Defined Network,软件定义网络)的意义是试图摆脱硬件对网络架构的限制,这样便可以像升级、安装软件一样对网络进行修改,便于更多的APP(应用程序)能够快速部署到网络上。SDN的本质是网络软件化,提升网络可编程能力,是一次网络架构的重构,而不是一种新特性、新功能。SDN将比原来网络架构更好、更快、更简单地实现各种功能特性。
2.SDN的体系架构
SDN的体系架构由下到上(由南到北)分为数据平面、控制平面和应用平面,具体如图1-10所示。
图1-10 SDN体系结构图
其中,数据平面由交换机等网络通用硬件组成,各个网络设备之间通过不同规则形成的SDN数据通路连接;控制平面包含了逻辑上为中心的SDN控制器,它掌握着全局网络信息,负责各种转发规则的控制;应用平面包含着各种基于SDN的网络应用,用户无需关心底层细节就可以编程、部署新应用。
控制平面与数据平面之间通过SDN CDPI(Control-Data-Plane Interface,控制数据平面接口)进行通信,它具有统一的通信标准,主要负责将控制器中的转发规则下发至转发设备,最主要应用的是OpenFlow协议。控制平面与应用平面之间通过SDN北向接口进行通信,而北向接口并非统一标准,它允许用户根据自身需求定制开发各种网络管理应用。
SDN中的接口具有开放性,以控制器为逻辑中心,南向接口负责与数据平面进行通信,北向接口负责与应用平面进行通信,东西向接口负责多控制器之间的通信。最主流的南向接口CDPI采用的是OpenFlow协议。OpenFlow最基本的特点是基于流(Flow)的概念来匹配转发规则,每一个交换机都维护一个流表(Flow Table),依据流表中的转发规则进行转发,而流表的建立、维护和下发都是由控制器完成的。针对北向接口,应用程序通过北向接口编程来调用所需的各种网络资源,实现对网络的快速配置和部署。东西向接口使控制器具有可扩展性,为负载均衡和性能提升提供了技术保障。
3.基于OpenFlow的SDN关键组件及架构
OpenFlow最初作为SDN的原型提出时,主要由OpenFlow交换机、控制器两部分组成。OpenFlow交换机根据流表来转发数据包,代表着数据平面;控制器通过全网络视图来实现管控功能,其控制逻辑表示控制平面。随着SDN概念的不断推广,ONF也对SDN的定义和架构进行了详细介绍,进一步论述了OpenFlow和SDN的相互关系。下面首先介绍基于OpenFlow的SDN关键组件,包括OpenFlow交换机和控制器,然后对SDN的技术架构进行详细说明。
(1)OpenFlow交换机
OpenFlow交换机负责数据转发功能,主要技术细节由3部分组成:流表(Flow Table)、安全信道(Secure Channel)和OpenFlow协议,如图1-11所示。
图1-11 OpenFlow交换机结构
每个OpenFlow交换机的处理单元由流表构成,每个流表由许多流表项组成,流表项则代表转发规则,进入交换机的数据包通过查询流表来取得对应的操作。为了提升流量的查询效率,目前的流表查询通过多级流表和流水线模式来获得对应操作。流表项主要由匹配字段(Match Fields)、计数器(Counters)和操作(Instructions)3部分组成。匹配字段的结构包含很多匹配项,涵盖了链路层、网络层和传输层大部分标识。随着OpenFlow规约的不断更新,VLAN、MPLS和IPv6等协议也逐渐扩展到OpenFlow标准当中。由于OpenFlow交换机采取流的匹配和转发模式,因此在OpenFlow网络中将不再区分路由器和交换机,而是统称为OpenFlow交换机。另外,计数器用来对数据流的基本数据进行统计,操作则表明了与该流表项匹配的数据包应该执行的下一步操作。
安全通道是连接OpenFlow交换机和控制器的接口,控制器通过这个接口,按照OpenFlow协议规定的格式来配置和管理OpenFlow交换机。目前,基于软件实现的OpenFlow交换机主要有两个版本,都部署于Linux系统:基于用户空间的软件OpenFlow交换机操作简单,便于修改,但性能较差;基于内核空间的软件OpenFlow交换机速度较快,同时提供了虚拟化功能,使得每个虚拟机能够通过多个虚拟网卡传输流量,但实际的修改和操作过程较复杂。另外,斯坦福大学基于NetFPGA实现了硬件加速的线速OpenFlow交换机,而网络硬件厂商如NEC、HP等公司也已相继推出了支持OpenFlow标准的硬件交换机。
(2)OpenStack控制器
在控制器中,NOS(Network Operating System,网络操作系统)实现控制逻辑功能。NOX最早引入这个概念的是美国加利福尼亚大学伯克利分校和斯坦福大学开发的NOS平台——NOX,NOX是OpenFlow网络中对网络实现可编程控制的中央执行单元。可见NOS指的是SDN概念中的控制软件,通过在NOS之上运行不同的应用程序能够实现不同的逻辑管控功能。
在基于NOX的OpenFlow网络中,NOX是控制核心,OpenFlow交换机是操作实体,如图1-12所示,NOX通过维护网络视图(Network View)来维护整个网络的基本信息,如拓扑、网络单元和提供的服务,运行在NOX之上的应用程序,通过调用网络视图中的全局数据,进而操作OpenFlow交换机来对整个网络进行管理和控制。从NOX控制器完成的功能来看,NOX实现了网络基本的管控功能,为OpenFlow网络提供了通用API的基础控制平台,但在性能上并没有太大优势,没有提供充分的可靠性和灵活性来满足可扩展的需求。不过,NOX在控制器设计方面实现得最早,目前已经作为OpenFlow网络控制器平台实现的基础和模板。
为了使控制器能够直接部署在真实网络中,解决多控制器对OpenFlow交换机的控制共享问题,同时满足网络虚拟化的现实需求,FlowVisor在控制器和OpenFlow交换机之间实现了基于OpenFlow的网络虚拟层,它使得硬件转发平面能够被多个逻辑网络切片(Slice)共享,每个网络切片拥有不同的转发逻辑策略。在这种切片模式下,多个控制器能够同时管理一台交换机,多个网络实验能够同时运行在同一个真实网络中,网络管理者能够并行地控制网络,因此网络正常流量可以运行在独立的切片模式下,从而保证正常流量不受干扰,如图1-13所示。
图1-12 基于NOX的OpenFlow网络
图1-13 基于FlowVisor的OpenFlow虚拟化
目前,支持OpenFlow协议的多种控制软件已经得到开发和推广。NOX已经发布了多个版本,如NOX、Destiny、NOX Zach、POX等,它们对NOX进行了性能上的优化,并逐渐支持更多的功能,如控制台操作、SNMP控制等,其余的控制软件也得到广泛应用。
1.5.13 OpenStack的技术特点
1.OpenStack的技术特性
OpenStack是以Python编程语言编写的,整合Tornado网页服务器、Nebula运算平台,使用Twisted软件框架。在标准上,OpenStack遵循Open Virtualization Format、AMQP、SQLAlchemy等标准。虚拟机器软件包括:KVM、Xen、VirtualBox、QEMU、LXC等。
OpenStack的两个主要模块Nova和Swift,前者是NASA开发的虚拟服务器部署和业务计算模块,后者是Rackspack开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack是开源项目,除了有Rackspace和NASA的大力支持外,后面还有包括Dell、Citrix、Cisco、Canonical这些重量级公司的贡献和支持,发展速度非常快。
OpenStack的技术呈现了多样化状态,比如计算虚拟化、存储虚拟化、网络虚拟化、容器和超融合等都需要有相应的涉猎和技术储备,同时这些技术基于传统基础架构体系,但是又有别于传统解决方案。这就要求我们需要具有识别OpenStack平台本身的能力、理解所承载应用以及优化云平台的能力、改造迁移现有应用的能力。
2.OpenStack平台技术优势
1)控制性:开源的平台意味着不会被某个特定的厂商绑定和限制,而且模块化的设计能把第三方的技术进行集成,从而来满足自身业务需要。
2)兼容性:OpenStack公共云的兼容性可以使企业在将来很容易地将数据和应用迁移到基于安全策略的、经济的和其他关键商业标准的公共云中。
3)可扩展性:目前,主流的Linux操作系统,包括Fedora、SUSE等都将支持OpenStack。OpenStack在大规模部署公有云时,在可扩展性上有优势,而且也可用于私有云,一些企业特性也在逐步完善中。
4)灵活性:灵活性是OpenStack最大的优点之一,用户可以根据自己的需要建立基础设施,也可以轻松地为自己的集群增加规模。
5)行业标准:来自全球10多个国家的60多家领军企业,包括Cisco、Dell、Intel以及微软都参与到了OpenStack的项目中,并且在全球使用OpenStack技术的云平台在不断地上线。
6)实践检验:实践是检验真理的唯一标准,OpenStack的云操作系统,已被全球正在运营的大型公有云和私有云技术所验证过,比如,Dell公司已经推出了OpenStack安装程序Crowbar,不仅如此,OpenStack在中国的发展趋势也非常好,包括物联网用户、国内高校以及部分大小企业,都开始利用OpenStack建立云计算环境,整合企业架构以及治理公司内部的IT基础架构。