云计算(cloud computing)是基于互联网的相关服务的增长、使用和交付模式,一般涉及经过互联网来提供动态易扩展且常常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中每每用云来表示电信网,后来也用来表示互联网和底层基础设施的抽象。所以,云计算甚至可让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力能够模拟核爆炸、预测气候变化和市场发展趋势。用户经过电脑、笔记本、手机等方式接入数据中心,按本身的需求进行运算。
美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源可以被快速提供,只需投入不多的管理工做,或与服务供应商进行不多的交互。XenSystem,以及在国外已经很是成熟的Intel 和IBM,各类“云计算”的应用服务范围正日渐扩大,影响力也无可估量。
不一样的“云”对应着不一样的基础设施。下面是三种广义的“云”:html
openstack是(infrastructure as a service,基础设置即服务)IAAS架构的实现,OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合做研发并发起的,以Apache许可证受权的自由软件和开放源代码项目。
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工做。OpenStack支持几乎全部类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack经过各类互补的服务提供了基础设施即服务(IaaS)的解决方案,每一个服务提供API以进行集成。
OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与我的都将OpenStack做为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文但愿经过提供必要的指导信息,帮助你们利用OpenStack前端来设置及管理本身的公共云或私有云。
OpenStack云计算平台,帮助服务商和企业内部实现相似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,二者能够一块儿用,也能够分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度很是快,有取代另外一个业界领先开源云平台 Eucalyptus 的态势。
前端
openstack的核心组件是计算、网络和存储,是为了简化资源的管理和分配,把资源划分为三个比较大的资源池,对外经过API进行交互,openstack相似于一个开源的AWS,有不少功能和API和AWS是相同的,所以AWS底层也是使用的KVM虚拟化,当前最新的是N版,每半年更新一次新版本,已经从A-N,从G版之后国内的使用用户愈来愈多,一下是历史版本更新时间:
html5
各组件的功能:
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。
其中:
控制节点负责对其他节点的控制,包含虚拟机创建,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通讯
存储节点负责对虚拟机的额外存储管理等等node
控制节点架构:
控制节点包括如下服务web
1)管理支持服务包含MySQL与Qpid两个服务
MySQL:数据库做为基础/扩展服务产生的数据存放的地方
Qpid:消息代理(也称消息中间件)为其余各类服务之间提供了统一的消息通讯服务算法
2)基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
Keystone:认证管理服务,提供了其他全部组件的认证信息/令牌的管理,建立,修改等等,使用MySQL做为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制做相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通讯
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对全部节点的全部服务的管理,一般把该服务称为DashBoard数据库
3)扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操做,也能够解决自动收缩,负载均衡等高级特性。
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在必定条件下触发相应动做swift
控制节点通常来讲只须要一个网络端口用于通讯/管理各个节点后端
网络节点架构
网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通讯,以及管理虚拟机网络之间的通讯/拓扑,管理虚拟机之上的防火等等api
网络节点包含三个网络端口
eth0:用于与控制节点进行通讯
eth1:用于与除了控制节点以外的计算/存储节点之间的通讯
eth2:用于外部的虚拟机与相应网络之间的通讯
计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务
1)基础服务
Nova:提供虚拟机的建立,运行,迁移,快照等各类围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通讯服务
2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的状况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
eth0:与控制节点进行通讯,受控制节点统一调配
eth1:与网络节点,存储节点进行通讯
存储节点架构
存储节点包含Cinder,Swift等服务
Cinder:块存储服务,提供相应的块存储,简单来讲,就是虚拟出一块磁盘,能够挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来讲,这个操做就像是新加了一块硬盘,能够完成对磁盘的任何操做,包括挂载,卸载,格式化,转换文件系统等等操做,大多应用于虚拟机空间不足的状况下的空间扩容等等
Swift:对象存储服务,提供相应的对象存储,简单来讲,就是虚拟出一块磁盘空间,能够在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件
存储节点包含最少两个网络接口
eth0:与控制节点进行通讯,接受控制节点任务,受控制节点统一调配
eth1:与计算/网络节点进行通讯,完成控制节点下发的各种任务
openstack经过Nova调用KVM/XEN/VMWARE等虚拟机化技术建立虚拟机,即openstack是一个管理平台框架,支持众多的虚拟化管理,cinder存储支持GlusterFS、ISCSI、MFS等存储技术给虚拟机使用,即openstack不会绑定某一个应用,而是兼容众多的相关技术,所以火的一塌糊涂!
Keystone为全部的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工做,主要对(但不限于)Swift、Glance、Nova等进行认证与受权。事实上,受权经过对动做消息来源者请求的合法性进行鉴定。
重要组成:
下图显示了身份认证服务流程:
Keystone采用两种受权方式,一种基于用户名/密码,另外一种基于令牌(Token)。
除此以外,Keystone提供如下三种服务:
keystone认证服务注意点:
Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需的各类动做都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、受权及测度。虽然Nova自己并不提供任何虚拟能力,可是它将使用libvirt API与虚拟机的宿主机进行交互。Nova经过Web服务API来对外提供处理接口,并且这些接口与Amazon的Web服务接口是兼容的。
功能及特色:
Nova弹性云(OpenStack计算部件)包含如下主要部分:
euca-bundle-image
生成证书。仅仅是在EC2 API的请求中使用OpenStack镜像服务是IaaS的核心服务,如同 :ref:get_started_conceptual_architecture
所示。它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
OpenStack镜像服务包括如下组件:
OpenStack Networking(neutron),容许建立、插入接口设备,这些设备由其余的OpenStack服务管理。插件式的实现能够容纳不一样的网络设备和软件,为OpenStack架构与部署提供了灵活性。
它包含下列组件:
OpenStack网络主要和OpenStack计算交互,以提供网络链接到它的实例。
网络服务提供网络,子网以及路由这些对象的抽象概念。每一个抽象概念都有本身的功能,能够模拟对应的物理设备:网络包括子网,路由在不一样的子网和网络间进行路由转发。
对于任意一个给定的网络都必须包含至少一个外部网络。不想其余的网络那样,外部网络不只仅是一个定义的虚拟网络。相反,它表明了一种OpenStack安装以外的能从物理的,外部的网络访问的视图。外部网络上的IP地址可供外部网络上的任意的物理设备所访问
外部网络以外,任何 Networking 设置拥有一个或多个内部网络。这些软件定义的网络直接链接到虚拟机。仅仅在给定网络上的虚拟机,或那些在经过接口链接到相近路由的子网上的虚拟机,能直接访问链接到那个网络上的虚拟机。
若是外部网络想要访问实例或者相反实例想要访问外部网络,那么网络之间的路由就是必要的了。每个路由都配有一个网关用于链接到外部网络,以及一个或多个链接到内部网络的接口。就像一个物理路由同样,子网能够访问同一个路由上其余子网中的机器,而且机器也能够访问路由的网关访问外部网络。
另外,你能够将外部网络的IP地址分配给内部网络的端口。无论何时一旦有链接链接到子网,那个链接被称做端口。你能够给实例的端口分配外部网络的IP地址。经过这种方式,外部网络上的实体能够访问实例.
网络服务一样支持安全组。安全组容许管理员在安全组中定义防火墙规则。一个实例能够属于一个或多个安全组,网络为这个实例配置这些安全组中的规则,阻止或者开启端口,端口范围或者通讯类型。
每个Networking使用的插件都有其自有的概念。虽然对操做VNI和OpenStack环境不是相当重要的,但理解这些概念能帮助你设置Networking。全部的Networking安装使用了一个核心插件和一个安全组插件(或仅是空操做安全组插件)。另外,防火墙即服务(FWaaS)和负载均衡即服务(LBaaS)插件是可用的。
Dashboard(horizon)是一个web接口,使得云平台管理员以及用户能够管理不一样的Openstack资源以及服务。
Horizon具备以下一些特色:
块存储服务(cinder)为实例提供块存储。存储的分配和消耗是由块存储驱动器,或者多后端配置的驱动器决定的。还有不少驱动程序可用:NAS/SAN,NFS,ISCSI,Ceph等。
典型状况下,块服务API和调度器服务运行在控制节点上。取决于使用的驱动,卷服务器能够运行在控制节点、计算节点或单独的存储节点。
OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷。此服务也会激活管理卷的快照和卷类型的功能。
块存储服务一般包含下列组件:
cinder-volume
执行。cinder-scheduler
的进程进行直接交互。它也能够与这些进程经过一个消息队列进行交互。cinder-volume
服务响应送到块存储服务的读写请求来维持状态。它也能够和多种存储提供者在驱动架构下进行交互。nova-scheduler
组件相似。cinder-backup
服务提供任何种类备份卷到一个备份存储提供者。就像cinder-volume
服务,它与多种存储提供者在驱动架构下进行交互。Swift为OpenStack提供一种分布式、持续虚拟对象存储,它相似于Amazon Web Service的S3简单存储服务。Swift具备跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也可以处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度很是高效。
swift功能及特色:
Swift代理服务器
用户都是经过Swift-API与代理服务器进行交互,代理服务器正是接收外界请求的门卫,它检测合法的实体位置并路由它们的请求。
此外,代理服务器也同时处理实体失效而转移时,故障切换的实体重复路由请求。
Swift对象服务器
对象服务器是一种二进制存储,它负责处理本地存储中的对象数据的存储、检索和删除。对象都是文件系统中存放的典型的二进制文件,具备扩展文件属性的元数据(xattr)。
注意:xattr格式被Linux中的ext3/4,XFS,Btrfs,JFS和ReiserFS所支持,可是并无有效测试证实在XFS,JFS,ReiserFS,Reiser4和ZFS下也一样能运行良好。不过,XFS被认为是当前最好的选择。
Swift容器服务器
容器服务器将列出一个容器中的全部对象,默认对象列表将存储为SQLite文件(译者注:也能够修改成MySQL,安装中就是以MySQL为例)。容器服务器也会统计容器中包含的对象数量及容器的存储空间耗费。
Swift帐户服务器
帐户服务器与容器服务器相似,将列出容器中的对象。
Ring(索引环)
Ring容器记录着Swift中物理存储对象的位置信息,它是真实物理存储位置的实体名的虚拟映射,相似于查找及定位不一样集群的实体真实物理位置的索引服务。这里所谓的实体指帐户、容器、对象,它们都拥有属于本身的不一样的Rings。
裸金属服务(ironic)
裸金属服务是提供管理和准备物理硬件支持的组件的集合。
容器的基础设施管理服务(magnum)
容器的基础设施管理服务(magnum)是OpenStack API服务,它使容器编排引擎(COE),好比Docker Swarm, Kubernetes和Mesos,成为了OpenStack头等资源。
数据库服务(trove)
数据库服务(trove)提供了数据库引擎的云部署功能。
DNS service (designate)
The DNS service (designate) provides cloud provisioning functionality for DNS Zones and Recordsets.
秘钥管理器服务
密钥管理服务为存储提供了RESTful API,以及密钥数据,好比口令、加密密钥和X.509证书。
云消息服务(zaqar)
云消息服务容许开发人员共享分布式应用组件间的数据来完成不一样任务,而不会丢失消息或要求每一个组件老是可用。
对象存储服务(swift)
对象存储服务(swift)经过REST API提供对象存储和检索的访问入口。
编排服务(heat)
The Orchestration service (heat) uses a Heat Orchestration Template (HOT) to create and manage cloud resources.
共享文件系统服务(manila)
共享文件系统服务(manila)提供了共享或分布式文件系统的协同访问。
监测告警服务(aodh)
当收集到的测量或事件数据符合预约义的规则时,监测告警服务就会触发告警。
Telemetry 数据收集服务(ceilometer)
Telemetry 数据收集服务提供以下功能:
这里以建立一个虚拟机为例来了解 OpenStack 是如何工做的,下面的图是 OpenStack 建立虚拟机整个工做过程:
虚拟机建立过程:
参考资料:
https://docs.openstack.org/ocata/zh_CN/install-guide-rdo/common/conventions.html
http://www.javashuo.com/article/p-oyhvpgwy-ew.html
http://www.javashuo.com/article/p-cbtcxhln-z.html