openstack
什么是云计算(资源和服务的交互方式)
云:云计算中的云,代表循环利用的意思(云多了变成雨,落到地面,云减少,水蒸发到空中,云增加)。
计算:云计算中的计算,代表计算资源,涵盖虚机、存储、网络等。
云计算:代表计算资源向云水循环一样,按需分配,循环利用。
附:企业数据中心部署在云计算分布式平台上,类似于从原来单台发电机转向电厂集中供电模式,它意味着访问计算机和存储系统也可以作为一种商品流通,就像煤气、水电一样,取用方便,费用低廉,只不过它是通过互联网传输的,云就是互联网的一种比喻
二、云计算分类:
狭义:IT基础设施的交互和使用模式,通过网络以按需,易扩展的方式获取资源
广义:服务(IT基础设施、软件等)的交互和使用模式,通过网络以按需、易扩展的方式获取资源。
三:云服务模式
一、IaaS:基础设施即服务
用户通过网络获取虚机、存储、网络,然后用户根据自己的需求操作获取的资源。 典型应用:亚马逊AWS等
二、PaaS:平台即服务
将软件研发平台作为一种服务, 如Eclipse/Java编程平台,服务商提供编程接口/运行平台等。典型应用:Google AppEngine、Force.com、微软等
三、SaaS:软件即服务
将软件作为一种服务通过网络提供给用户,如web的电子邮件、HR系统、订单管理系统、客户关系系统等。用户无需购买软件,而是向提供商租用基于web的软件,来管理企业经营活动。典型应用:Google Doc、Saleforce.com、Oracle CRM On Demand、Office Live Workspace等
四:云应用形式
一.私有云
将基础设施与软硬件资源构建于防火墙内,基于iaas构建私有云平台供企业内部使用,开源组件有:openstack(最为出色),cloudstack等
二.云存储
云存储系统是一个以数据存储和管理为核心的云计算系统
三.云游戏
游戏运行云平台服务端,云平台将游戏画面解压缩后传给用户,用户端无需高配置处理器和显卡,只需要基本的视频解压缩能力即可。
四.云物联
基于云平台实现物物相连的互联网。
五.云安全
通过网状的大量客户端检测网络中软件的异常,获取木马,恶意程序的最新信息,推送到云平台服务端自动分析和处理,再把解决方案发送给每一个客户端。云平台使用者越多,越安全。
六.公有云
云平台对外开放,主要以Iaas和Paas为主,较为成熟的是Iaas,如阿里云,腾讯云,青云,ucloud,首都在线等
七.混合云
公有云和私有云的结合,即对企业内部又对企业外部,例如AWS
五:传统应用与云感知应用
一、传统应用 传统应用像养宠物,宠物病了要细心呵护 每个应用都是独特的、专门的 专门的服务器、硬件和软件保证可靠性 资源不够,增加cpu、内存、磁盘 专门的技术支持
二、云感知应用 应用跑在一个或多个虚拟机里 资源不够,增加新的虚拟机 应用挂起,重启或创建新的虚拟机
六:openstack与及其相关组件介绍
一、openstack由来
openstack最早由美国国家航空航天局NASA研发的Nova和Rackspace研发的swift组成。后来以apache许可证授权,旨在为公共及私有云平台建设。openstack主要用来为企业内部实现类似于Amazon EC2和S3的云基础架构服务(Iaas),基本与ubuntu同步,命名是以A-Z作为首字母来的。
二、openstack项目与组件(服务名是项目名的别名)
核心项目3个
1.控制台
服务名:Dashboard
项目名:Horizon
功能:web方式管理云平台,建云主机,分配网络,配安全组,加云盘
2.计算
服务名:计算
项目名:Nova
nbsp; 功能:负责响应虚拟机创建请求、调度、销毁云主机
3.网络
服务名:网络
项目名:Neutron
功能:实现SDN(软件定义网络),提供一整套API,用户可以基于该API实现自己定义专属网络,不同厂商可以基于此API提供自己的产品实现
存储项目2个
1.对象存储
服务名:对象存储
项目名:Swift
功能:REST风格的接口和扁平的数据组织结构。RESTFUL HTTP API来保存和访问任意非结构化数据,ring环的方式实现数据自动复制和高度可以扩展架构,保证数据的高度容错和可靠性
2.块存储
服务名:块存储
项目名:Cinder
功能:提供持久化块存储,即为云主机提供附加云盘。
共享服务项目3个
1.认证服务
服务名:认证服务
项目名:Keystone
功能:为访问openstack各组件提供认证和授权功能,认证通过后,提供一个服务列表(存放你有权访问的服务),可以通过该列表访问各个组件。
2.镜像服务
服务名:镜像服务
项目名:Glance
功能:为云主机安装操作系统提供不同的镜像选择
3.计费服务
服务名:计费服务
项目名:Ceilometer
功能:收集云平台资源使用数据,用来计费或者性能监控
高层服务项目1个
1.编排服务 服务名:编排服务 项目名:Heat 功能:自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas
openstack新建云主机流程图:
OpenStackd开源项目由社区维护,包括OpenStack计算(代号为Nova),OpenStack对象存储(代号为Swift),并OpenStack镜像服务(代号Glance)的集合。 OpenStack提供了一个操作平台,或工具包,用于编排云。
虚拟机启动过程如下:
-
界面或命令行通过RESTful API向keystone获取认证信息。
-
keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求。
-
界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token)。
-
nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token。
-
keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)。
-
通过认证后nova-api和数据库通讯。
-
初始化新建虚拟机的数据库记录。
-
nova-api通过rpc.call向nova-scheduler请求是否有创建虚拟机的资源(Host ID)。
-
nova-scheduler进程侦听消息队列,获取nova-api的请求。
-
nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主机。
-
对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息。
-
nova-scheduler通过rpc.cast向nova-compute发送对应的创建虚拟机请求的消息。
-
nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。
-
nova-compute通过rpc.call向nova-conductor请求获取虚拟机消息。(Flavor)
-
nova-conductor从消息队队列中拿到nova-compute请求消息。
-
nova-conductor根据消息查询虚拟机对应的信息。
-
nova-conductor从数据库中获得虚拟机对应信息。
-
nova-conductor把虚拟机信息通过消息的方式发送到消息队列中。
-
nova-compute从对应的消息队列中获取虚拟机信息消息。
-
nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求glance-api获取创建虚拟机所需要镜像。
-
glance-api向keystone认证token是否有效,并返回验证结果。
-
token验证通过,nova-compute获得虚拟机镜像信息(URL)。
-
nova-compute通过keystone的RESTfull API拿到认证k的token,并通过HTTP请求neutron-server获取创建虚拟机所需要的网络信息。
-
neutron-server向keystone认证token是否有效,并返回验证结果。
-
token验证通过,nova-compute获得虚拟机网络信息。
-
nova-compute通过keystone的RESTfull API拿到认证的token,并通过HTTP请求cinder-api获取创建虚拟机所需要的持久化存储信息。
-
cinder-api向keystone认证token是否有效,并返回验证结果。
-
token验证通过,nova-compute获得虚拟机持久化存储信息。
-
nova-compute根据instance的信息调用配置的虚拟化驱动来创建虚拟机。
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署)
其中:
控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等等
控制节点架构:
控制节点包括以下服务
管理支持服务
基础管理服务
扩展管理服务
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:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
控制节点一般来说只需要一个网络端口用于通信/管理各个节点
网络节点架构
网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等
网络节点包含三个网络端口
eth0:用于与控制节点进行通信
eth1:用于与除了控制节点之外的计算/存储节点之间的通信
eth2:用于外部的虚拟机与相应网络之间的通信
计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务
1)基础服务
Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信服务
2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
计算节点包含最少两个网络端口
eth0:与控制节点进行通信,受控制节点统一调配
eth1:与网络节点,存储节点进行通信
存储节点架构
存储节点包含Cinder,Swift等服务
Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等等
Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件
存储节点包含最少两个网络接口
eth0:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
eth1:与计算/网络节点进行通信,完成控制节点下发的各类任务
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面说一说Openstack的各个组件作用及关系
Openstack发展至今,总共集成了下面几个组件:
Nova - 计算服务
Neutron-网络服务
Swift - 对象存储服务
Cinder-块存储服务
Glance - 镜像服务
Keystone - 认证服务
Horizon - UI服务
Ceilometer-监控服务
Heat-集群服务
Trove-数据库服务
组件间的关系图如下:
重要组件介绍
OpenStack认证服务(Keystone)
Keystone为所有的OpenStack组件提供认证和访问策略服务,它依赖自身REST(基于Identity API)系统进行工作,主要对(但不限于)Swift、Glance、Nova等进行认证与授权。事实上,授权通过对动作消息来源者请求的合法性进行鉴定。下图显示了身份认证服务流程:
Keystone采用两种授权方式,一种基于用户名/密码,另一种基于令牌(Token)。
除此之外,Keystone提供以下三种服务:
令牌服务:含有授权用户的授权信息
目录服务:含有用户合法操作的可用服务列表
策略服务:利用Keystone具体指定用户或群组某些访问权限
keystone认证服务注意点:
服务入口:如Nova、Swift和Glance一样每个OpenStack服务都拥有一个指定的端口和专属的URL,我们称其为入口(endpoints)。
区位:在某个数据中心,一个区位具体指定了一处物理位置。在典型的云架构中,如果不是所有的服务都访问分布式数据中心或服务器的话,则也称其为区位。
用户:Keystone授权使用者
PS:代表一个个体,OpenStack以用户的形式来授权服务给它们。用户拥有证书(credentials),且可能分配给一个或多个租户。经过验证后,会为每个单独的租户提供一个特定的令牌。
服务:总体而言,任何通过Keystone进行连接或管理的组件都被称为服务。举个例子,我们可以称Glance为Keystone的服务。
角色:为了维护安全限定,就云内特定用户可执行的操作而言,该用户关联的角色是非常重要的。
PS:一个角色是应用于某个租户的使用权限集合,以允许某个指定用户访问或使用特定操作。角色是使用权限的逻辑分组,它使得通用的权限可以简单地分组并绑定到与某个指定租户相关的用户。
租间:租间指的是具有全部服务入口并配有特定成员角色的一个项目。
PS:一个租间映射到一个Nova的“project-id”,在对象存储中,一个租间可以有多个容器。根据不同的安装方式,一个租间可以代表一个客户、帐号、组织或项目。
OpenStack计算设施----Nova
Nova是OpenStack计算的弹性控制器。OpenStack云实例生命期所需的各种动作都将由Nova进行处理和支撑,这就意味着Nova以管理平台的身份登场,负责管理整个云的计算资源、网络、授权及测度。虽然Nova本身并不提供任何虚拟能力,但是它将使用libvirt API与虚拟机的宿主机进行交互。Nova通过Web服务API来对外提供处理接口,而且这些接口与Amazon的Web服务接口是兼容的。
功能及特点:
实例生命周期管理
计算资源管理
网络与授权管理
基于REST的API
异步连续通信
支持各种宿主:Xen、XenServer/XCP、KVM、UML、VMware vSphere及Hyper-V
Nova弹性云(OpenStack计算部件)包含以下主要部分:
API Server(nova-api)
消息队列(rabbit-mq server)
运算工作站(nova-compute)
网络控制器(nova-network)
卷管理(nova-volume)
调度器(nova-scheduler)
解释如下:
1)API服务器(nova-api)
API服务器提供了云设施与外界交互的接口,它是外界用户对云实施管理的唯一通道。通过使用web服务来调用各种EC2的API,接着API服务器便通过消息队列把请求送达至云内目标设施进行处理。作为对EC2-api的替代,用户也可以使用OpenStack的原生API,我们把它叫做“OpenStack API”。
2)消息队列(Rabbit MQ Server)
OpenStack内部在遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。Nova对请求应答进行异步调用,当请求接收后便则立即触发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。例如,启动一个实例或上传一份镜像的过程较为耗时,API调用就将等待返回结果而不影响其它操作,在此异步通信起到了很大作用,使整个系统变得更加高效。
3)调度器(nova-scheduler)
调度器负责把nova-API调用送达给目标。调度器以名为“nova-schedule”的守护进程方式运行,并根据调度算法从可用资源池中恰当地选择运算服务器。有很多因素都可以影响调度结果,比如负载、内存、子节点的远近、CPU架构等等。强大的是nova调度器采用的是可插入式架构。
目前nova调度器使用了几种基本的调度算法:
随机化:主机随机选择可用节点;
可用化:与随机相似,只是随机选择的范围被指定;
简单化:应用这种方式,主机选择负载最小者来运行实例。负载数据可以从别处获得,如负载均衡服务器。
4)运算工作站(nova-compute)
运算工作站的主要任务是管理实例的整个生命周期。他们通过消息队列接收请求并执行,从而对实例进行各种操作。在典型实际生产环境下,会架设许多运算工作站,根据调度算法,一个实例可以在可用的任意一台运算工作站上部署。
5)网络控制器(nova-network)
网络控制器处理主机的网络配置,例如IP地址分配,配置项目VLAN,设定安全群组以及为计算节点配置网络。
6)卷工作站(nova-volume)
卷工作站管理基于LVM的 实例卷,它能够为一个实例创建、删除、附加卷,也可以从一个实例中分离卷。卷管理为何如此重要?因为它提供了一种保持实例持续存储的手段,比如当结束一个 实例后,根分区如果是非持续化的,那么对其的任何改变都将丢失。可是,如果从一个实例中将卷分离出来,或者为这个实例附加上卷的话,即使实例被关闭,数据 仍然保存其中。这些数据可以通过将卷附加到原实例或其他实例的方式而重新访问。
因此,为了日后访问,重要数据务必要写入卷中。这种应用对于数据服务器实例的存储而言,尤为重要。
OpenStack镜像服务器----Glance
OpenStack镜像服务器是一套虚拟机镜像发现、注册、检索系统,我们可以将镜像存储到以下任意一种存储中:
本地文件系统(默认)
S3直接存储
S3对象存储(作为S3访问的中间渠道)
OpenStack对象存储等等。
功能及特点:
提供镜像相关服务。
Glance构件:
1)Glance-API:
主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增,删除,更新等)。默认绑定端口是9292。
2)Glance-Registry:
主要负责接收响应镜像元数据命令的Restful请求。分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。默认绑定的端口是9191。
OpenStack存储设施----Swift
Swift为OpenStack提供一种分布式、持续虚拟对象存储,它类似于Amazon Web Service的S3简单存储服务。Swift具有跨节点百级对象的存储能力。Swift内建冗余和失效备援管理,也能够处理归档和媒体流,特别是对大数据(千兆字节)和大容量(多对象数量)的测度非常高效。
swift功能及特点:
海量对象存储
大文件(对象)存储
数据冗余管理
归档能力-----处理大数据集
为虚拟机和云应用提供数据容器
处理流媒体
对象安全存储
备份与归档
良好的可伸缩性
Swift组件
Swift账户
Swift容器
Swift对象
Swift代理
Swift RING
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。
OpenStack管理的Web接口----Horizon
Horizon是一个用以管理、控制OpenStack服务的Web控制面板,它可以管理实例、镜像、创建密匙对,对实例添加卷、操作Swift容器等。除此之外,用户还可以在控制面板中使用终端(console)或VNC直接访问实例。
总之,Horizon具有如下一些特点:
实例管理:创建、终止实例,查看终端日志,VNC连接,添加卷等
访问与安全管理:创建安全群组,管理密匙对,设置浮动IP等
偏好设定:对虚拟硬件模板可以进行不同偏好设定
镜像管理:编辑或删除镜像
查看服务目录
管理用户、配额及项目用途
用户管理:创建用户等
卷管理:创建卷和快照
对象存储处理:创建、删除容器和对象
为项目下载环境变量