什么是云?云的核心特征是什么?
云是一种服务,其本质就是为用户提供优质服务,利用虚拟化技术,分布式技术,软件定义等技术为客户提供:便捷,简单,准确,可用,按需的服务
必须具备:
1. 云具备超强的计算能力(大量的CPU和内存进行池化)
2. 云具备弹性扩展能力 (无停机扩容等)
Open Stack服务组件功能:
1. Keystone 为各服务组件提供用户认证和权限验证功能
2. Celometer 为各服务组件提供监控,检索和计量功能
3. Horizon 为用户据操作Open Stack项目中的各服务组件提供Web形式的图型界面
4. Glance 为虚拟机实例提供镜像服务,同事Glance服务中的镜像可存放于Swift中
5. Neutron 为虚拟机实例提供网络连接服务,同事也为Ironic提供PXE网络
6. Ironic 提供物理机的添加,删除,电源管理和安装部署
7. Nova 为虚拟机实例提供计算资源
8. Trove 为虚拟机镜像提供注册服务;使用Vova启动数据库实例; 依附虚拟机实例;提供数据存储,操作和管理;可以备份数据库实例到Swift (数据库,提供高稳定性和可扩展性非关系型数据库服务)
9. Cinder 为虚拟机实例提供块设备,同时备份块设备数据到Swift
10. Sahara 通过Heat编排集群配置;再Swift中保存数据或二进制文件;将任务分配给虚拟机实例处理;通过Nova进行数据处理实例;再Glance中注册Hadoop镜像
11. Heat 可以编排Cinder,Neutron, Glance和Nova各种资源
1. Nova计算服务组件:
计算服务组件是Open Stack的核心部分,负责承载和管理云计算系统,与其他的组件紧密联系
1.1 Nova计算服务组件包括:
1. nova-api service: 负责对终端用户调用Compute API的接收和反馈,支持Open Stack Compute API, the Amazon EC2 API 和其他admin API,运行策略和编排活动
2. nova-api-metadata service: 负责接手虚拟机实例对metadata的访问请求,一般部署nova-network的多主机模式才会使用nova-api-metadata service
3. nova-compute service: 该服务通过Hypervisor APIs创建和中止虚拟机实例。Hypervisor APIs包括XenAPI for XenServer/XCP,libvirt for KVM for QEMU和VMwareAPI for VMware。该服务接收消息队列中的信息,执行一系列操作明领,如创建和更新虚拟机实例状态,过程很复杂
4. nova-scheduler service: 该服务接手信息队列中的请求,从而决定虚拟机是运行在哪个计算节点上
5. nova-conductor module: 该服务部署支持横向扩展。出于安全考虑,不能和nova-compute部署在同一个节点上,因为nova-compute不能直接访问数据库,所以需要nova-conductor module置于他们中间,与他们交互,通信,传递信息
6. nova-cert module: 该服务事一个守护进程,用于X509整数的认证服务,通常为euca-bundle-image(打包好将要上传的镜像)生成整数。仅EC2 API需要次module
7. nova-network worker daemon: 类似于nova-compute,从小心队列中接手和处理关于网络的请求,如配置桥接网络端口,修改防火墙规则等
8. nova-consoleauth daemon: 该进程必须和控制台管理程序(novncproxy,spicehtml5proxy,xvpncproxy)共同使用,起安全作用
9. nova-novncproxy daemon: 通过VNC连接Open Stack环境中正在运行的虚拟机实例。无需安装VNC客户端,可以使用浏览器访问
10. nova-spicehtml5proxy daemon: 通过SSPICE连接Open Stack环境中正在运行的虚拟机实例。需要使用HTML5访问
11. nova-xvpvncproxy daemon: 通过VNC连接Open Stack环境中正在运行的虚拟机实例。使用Open Stack指定的Java客户端访问
12. nova-cert daemon: X509证数
13. euca2ools client: 用于管理amazon EC2云资源,不属于Open Stack项目
14. nova-client: 用户通过nova client提交请求,包括管理员和非管理员
15. The queue: 用于进程和服务间传输信息。支持RabbitMQ, Apache Qpid,和ZeroMQ
16. SQL database: 用于存储各种信息。只要是python语言支持的数据库,nova计算服务组件都可以使用。比较常见的数据库mysql,postgre,sqlite3等
2. Neutron网络服务组件:
为虚拟机实例提供网络连接
2.1 Neutron网络服务组件:
1. neutron-server: 接收和路由API请求i到Open Stack中的网络plug-in
2. OpenStack Neuworking plug-ins and agents: 创建端口,网络,和子网,提供IP地址,plus-ins和agents根据不同的厂商和技术而应用于不同的云环境中,Open Stack中的plus-ins一般支持Cisco Virtual and Phytual and Physical Switches, NEC OpenFlow Products,Open vSwitch,LinuxBridging和VMware NSX Product。常见的agents包括Layer3,DHCP和plug-in agent
3. Messaging queue: 在nuetron-server和agents之间路由信息,同时也会作为一个数据库存储plug-ins的网络连接状态
3. Cinder块存储服务组件
为虚拟机实例提供块存储能力,同时提供整套的方案:快照,卷类型等等。块存储的类型是由驱动或者后i段设备配置的驱动所决定的,如:NAS,NFS,SAN,ISCSI,Ceph等等
3.1 Cinder服务组件:
1. cinder-api: 接手API请求,并将请求转发到cinder-volume
2. cinder-volume: 与块存储直接进行交互通信,处理一些任务,如cinder-scheduler分配的任务,同时通过消息队列与这些任务进行交互通信。cinder-volume还会维护块存储的状态,通过驱动与各种类型的存储进行交互通信
3. cinder-scheduler daemon: 选择最佳存储节点创建卷。具有相似功能的是nova-scheduler
4. cinder-backup daemon: 提供任意类型卷的备份
5. messaging queue: 负责各进程之间传递信息
4. Swift对象存储服务组件
Swift对象存储组件通过REST API提供对象存储和检索,不能独立使用,至少需要Keystone身份认证服务配合使用
4.1 Swift对象存储组件:
1. proxy servers: 接手对象存储的API和HTTP请求,修改metadata,创建containers;在web图型界面上提供文件或者containers列表;使用MemCached提供缓存功能,提高性能
2. Account servers: 管理对象存储内的账户
3. Container server: 管理对象存储内containers和文件夹之间的映射
4. Object servers: 管理真正的对象数据,文件等
5. various periodic processes: 执行日常事务,其中的复制服务能够保证数据的连接性和有效性,还包括审核符合,更新服务和删除服务
6. WSGI middleware: 处理认证相关的问题,与Keystone身份认证服务组件连接
7. swift client: 允许各种具有权限的用户在该客户端上提交明领,执行操作
8. swift-init: 初始化Ring文件的较笨,需要守护进程名字做参数,并提供操作明领
9. swift-recon: CLI工具,用于检索集群各种性能指标和状态信息
10. swift-ring-builder: 创建和重平衡Ring的工具
5. Ceilometer计量服务组件
计量服务组件以标准格式收集数据存储和系统资源的使用信息而进行统计和计费,也可以获取操作执行产生的信息,触发通知等
5.1 计量服务组件
1. A compute agent: 运行在每个计算节点上,循环查询资源使用统计情况
2. A central agent: 运行在管理服务器上,循环查询资源使用统计情况
3. A notification agent: 运行在管理服务器上,使用消息队列中的信息记录时间和计量数据
4. A controller agent: 运行在管理服务器上,使用小心队列中的信息记录时间和计量数据
5. An alarm evaluator: 运行在管理服务器上,根据设置的阈值定义确定何时进行报警
6. An alarm notifier: 运行在管理服务器上,允许报警阈值在合适的范围内进行调整,设置
7. An API server: 运行在管理服务器上,提供数据访问
6. Keystone身份认证服务组件
认证服务组件提供了认证,授权和目录的服务,其他的Open Stack组件都需要使用它。当彼此之间相互协作,服务组件收到用户的请求时,首先要交给Keystone进行身份认证和权限验证
6.1 身份认证组件
1. Server: 使用一个程序接口提供认证和授权服务
2. Drivers: 集成到服务器中,用做OpenStack项目职外和已经再项目内(SQL Database)的程序访问身份认证信息
3. Modules: 运行再使用认证服务的OpenStack服务组件中,监听服务请求,提取用户凭证,发送这些信息去服务器验证并对其授权
6.2 组件中概念
1. Authentication: 对用户进行身份确认的过程,对于一个操作请求,Keystone身份认证服务组件回验证发其请求的用户所提供的凭证,该凭证可以实用户名密码,也可以是用户名和API KEY
.当Keystone身份认证服务组件验证用户凭证正确后,回发出一个认证令牌,再后续的请求中,用户回提供该认证令牌
2. Credential: 确认用户身份的数据,例如:用户名密码等等Keystone身份认证服务组件提供的认证令牌
3. Domain: 项目和用户的集合,为认证实体定义了管理界限,域是个人,运营或公司所拥有的空间,用户可以直接再域中进行管理操作,用户可以获得域管理员角色,创建项目。用户和组。分配角色给用户和组
4. Endpoint: 一个网络访问地址,通过地址可以访问耨个服务组件。URL
5. Group: 组是域拥有的所有用户的集合。角色授予 域 或 项目,应用于该组中所有的用户
6. OpenStackClient: 项目中服务组件的命令行接口
7. Project: 集合或分离资源或对象的容器,根据不同的操作管理员,一个项目可以映射到客户,用户,组织,和租户
8. Region: 分区区域,可以关联多个子区域到一个区域
9. Role: 用户的权力和权限,具备执行一系列操作的特性,调用其他组件服务时,该服务回分析用户的角色设置,验证权限
10. Service:OpenStack项目中的服务组件: 如:nova,swift等,这些服务组件提供一个endpoint,用户通过endpoint可以访问资源和执行操作
11. Token: 允许访问OpenStack项目APIs及各种资源的密钥,认证令牌可以随时被撤销,并且具有时效性
12. User: 使用OpenStack云服务系统或服务的一个凭证信息
7. Glance镜像服务组件
7.1 镜像服务组件
1. glance-api: 接手发现,检索和存储镜像API
2. glance-registry: 存储,处理,和检索镜像元数据
3. Database:存储镜像元数据。Glance镜像服务组件支持多种数据库,大部分使用Mysql
4. Storage repository for image files: 虚拟机镜像文件的存储解之支持多种类型,包括普通文件系统,对象存储,分布式存储,http,amazon S3.再使用这些存储解之时,无比确认存储解之是否只支持只读使用
8. Heat编排服务组件
8.1 编排组件
1. heat command-line client: 提供命令行客户端,域heat-api交互通信运行,AWS CloudFormation APIs。开发可以直接使用Heat编排服务组件REST API
2. heat-api component: 通过使用RPC将请求发送到heat-engine处理API请求
3. heat-api-cfn component: 与AWS CloudFormation兼容的AWS Query API,通过使用RPC将请求发送到heat-engine处理这些API
4. heat-engine: 编排模板运行,并提供日志,时间输出给管理员