Openstack服务组件
名称 Openstack中 简明
Dashboard(仪表板) Horizon 提供基于web与内部各服务组件进行交互的界面(创建虚拟机实例,分配IP等)
Compute (计算) Nova 管理Openstack项目中虚拟机实例计算资源的生命周期(创建、调度、结束)
Networking(网络) Neutron 为组件提供网络连接功能,提供API给用户使用
ObjectStorage(对象存储) Swift 存储和检索随机非结构化的数据对象
Block Storage(块存储) Cinder 为虚拟机实例提供持久性存储
Identity(认证) Keystone 提供身份认证和授权
Image(镜像) Glance 存储和检索虚拟机实例磁盘镜像
Telemetry(计量) Geilometer 监控和计量Openstack项目中各服务组件的费用标准、扩展和统计
Onhestration(编排) Heat 通过Openstack-native REST API和CloudFormation-compatible Ouery 两个API按照Hot
或CloudFormation模板编排各种服务组件
Database(数据库) Trove 提供稳定性和可扩展的关系型或非关系型数据库服务
Data Procossing Service Sahara 通过配置相关参数,提供和扩展Openstack的Hadoop集群能力
(数据分析)
Nova服务
Nova使用基于消息、无共享、松耦合、无状态的架构,采用异步调用的机制
包含
nova-api service:负责对终端用户调用Compute AIP的接受和反馈
nova-api-metadata:负责接收虚拟机实例对metadata的访问请求(一般部署nova-network的多主机模式才会使用)
nova-compute:通过Hypervisor APIs创建和终止虚拟机实例
nova-scheduler:接收消息队列中的请求,从而决定虚拟机实例运行在哪个计算节点
nova-conductor:可横向扩展,安全考虑不能和nova-compute部署在同一节点上。nova-compute不能直接访问数据库,需要nova-conductor置于中间负责交互通信
nova-cert module:是一个守护进程,同于X509证书的认证。通常为euca-bundle-image(打包好将上传的镜像生产证书)
nova-consoleauth:必须和控制台管理程序共同使用
nova-novncproxy:通过VNC连接虚拟机实例,可使用浏览器访问
nova-spicohtml5proxy:通过SPICE连接虚拟机实例,需要通过HTML5访问
nova-xvpncproxy:通过VNC连接虚拟机实例,使用Openstack指定的Java客户端访问
nova-cert:X509证书
nova client:用户通过nova client 提交请求 。包括管理员和非管理员
The queue:用于进程和服务间传输信息
SQL database:存储各种信息。只要Python支持的数据库,Nova计算服务组件皆可用
存储服务
存储分有:临时存储,持久存储 (持久存储包含对象存储、块存储和文件存储)
Cinder块存储服务
Openstack项目中的Cinder块存储服务组件为虚拟机实例提供服务。Cinder的API和cinder-scheduler服务通常运行在控制节点,cinder-volume服务可在控制节点、计算节点或独立的存储节点上。
组成
cinder-api:接收API请求,并将请求转发到cinder-volume
cinder-volume:与块存储直接进行交互通信,处理一些任务并且维护块存储的状态。通过驱动与各种类型的存储进行交互通信
cinder-schedular daemon:选择最佳存储节点创建卷
cinder-backup daemon:提供任意类型卷的备份
messaging queue:负责在各进程间传递信息
Cinder存储服务组件也支持用文件作为块设备
Swift对象存储
Openstack项目中Swift对象存储服务组件通过REST API提供对象数据存储和检索,需要和Keystone身份认证服务一起
使用。因此需要先部署好Keystone再使用Swift
组成
Proxy services(swift-proxy-server):接受对象存储的API和HTTP请求,修改metadata,创建containers;在Web图形界面上提供文件或containers列表。使用MemCached提供缓存功能
swift-account-server:管理对象存储内的账户
swift-container-server:管理对象存储内containers和文件夹之间的映射
swift-object-server:管理真正的对象数据
Various periodic process:执行日常事务。有复制服务、删除服务、审核服务、更新服务
WSGI middleware:处理认证相关的问题,与Keystone身份认证服务组件连接
swift client:允许各种具有权限的用户在该客户端提交命令,执行操作
swift-init:初始化Ring文件脚本,需要守护进程名字作为参数,并且提供操作命令
swift-recon:CLI工具,用于检索集群各种性能指标和状态信息
swift-ring-builder:创建和重平衡Ring的工具
Swift对象存储特点
1.所有的数据存放和访问都有一个URL
2.所有的数据保存三份副本,分布在不同的Zone中
3.所有数据都有自己的元数据
4.数据随机存放在集群
5.集群添加存储节点不产生性能损耗,横向扩张不是纵向叠加
6.数据不需要一次性迁移到新存储
Swift对象存储运行在标准的x86服务器上
组成
Proxy Server:接受和处理各种传入的API请求
Ring:将数据名称映射到磁盘具体位置上
Zone:用于隔离副本数据,各区域独立
Account和Container:每个Account和Container都是一个独立的数据库,分布在集群节点上。每个Account数据库包含属于他的Container列表,每个Container数据库包含属于它的对象数据列表
Object:数据
Partition:每个Partiton中保存对象数据、Account数据库和Container数据库,管理着对象数据在集群中的存放位置
详述
Proxy Server:是Swift的公共接口,接受并且处理说所有传入的请求。当Proxy Server接收到请求后,根据对象数据的URL定位到相应的存储节点上。采用共享无状态架构,能够扩展最小Proxy Server集群应包含2个主机节点
Ring:使用Zone、Partition、磁盘和数据副本构成映射。Ring中Partition都有多个副本,默认三个。每个Partiton在不同的Zone中
当Partiton进行移动时,Ring需要确认移动数量,一次只允许移动一个副本的Parition
Zone:最小单位,可是一块或一组磁盘
Account和Container:有自己的独立SQL数据库。SQList数据库采用分布式,部署在集群各个节点
Partition:类似于目录,有自己的哈希表。关联着属于该Partition的Account和Container和对象数据
Replicator:通过检查哈希表,确认是否需要进行数据重同步。新数据优先级较高
、
作者:Qin-Jin
Swift
nova
openstack