Openstack基础知识.ppt

块设备卷完全与Openstack Compute集成,并支持云用户在Dashboard中管理数据 ... 除了支持简单的Linux服务器本地存储之外,还支持众多的存储平台, ... 的块设备服务厂商在Cinder 中实现其驱动支持以与OpenStack 进行整合。
展开查看详情

1.Openstack 基础知识介绍

2.OpenStack 概念架构  Horizon(Dashboard) 与其他主要模块的关联 (包括 Nova,Cinder,Glance,Swift,Neutron,keystone)  通过 Ceilometer( 监控功能)可以监控的 模块 ( 包括 Nova,Glance,Cinder,Neutron)  Keystone (身份验证功能)模块可以对其他模 块进行相应操作进行身份及权限验证 ( 包括 Nova,Glance,Cinder,Swift,Neutron,Ceilometer)  Nova 为 VM 提供计算资源  Glance 为 VM 提供镜像 VM  Cinder 为 VM 提供块存储资源  Neutron 为 VM 提供网络资源及网络连 接  Cinder 连接 VM 后所产生的数据可以备份到 Swift 对象存储中  Glance 提供镜像可以保存在 Switf 对象存储中 2

3.OpenStack 核心系统架构图  Horizon  Keystone  Nova  Glance  Cinder  Swift  Neutron 3

4.OpenStack 最简物理架构 2 个节点:  Cloud Controller Node:  Keystone( 身份验证服务 )  Glance( 镜像管理服务 )  Nova ( 计算资源管理服务 )  数据库服务 (MySQL)  消息服务 (RabbitMQ 或 QPid)  Compute Node:  Nova-Compute  Nova-Network  KVM 虚拟化系统 2 种网络:  Internal Network( 内部网络 )  用于提供 Provider 网络 (VM to Provider)  用于 tenant 网络 (VM to VM)  External Network( 外部网络)  用于外部用户与 VM 通信及控制 (VM to 4 Internet)

5.OpenStack 主要逻辑模块– Horizon Dashboard 服务 在整个 Openstack 应用体系框架中, Horizon 就是整个应用的入口。它提供了一个模 块化的,基于 web 的图形化界面服务门户。用户可以通过浏览器使用这个 Web 图形 化界面来访问、控制他们的计算、存储和网络资源,如启动实例、分配 IP 地址、设 置访问控制等。 基于 Django 框架实现 5

6.OpenStack 主要逻辑模块– Horizon 两种功能界面 Horizon 为以下两种角色的用户提供了不同的功能及使用界面:  云管理员: 提供一个整体视图,可以总览整个云的资源规模及运行状况 . 可以创建终端用户 和项目,想终端用户分配项目并进行项目可使用的资源配额管理。  终端用户 ( 云用户 ) : 提供了一个自助服务门户,可以在由云管理分配的项目中,在不超过配额限制的 范围内,自由的操作、使用和分配资源。 云 6 云管理员 用 户

7.OpenStack 主要逻辑模块– Keystone 身份验证服务 Keystone 作为 Openstack 的核心模块,为 Nova( 计算 ),Glance( 镜像 ),Swift( 对象存 储 ),Cinder( 块存储 ),Neutron( 网络 ) 以及 Horizon(Dashboard) 提供认证服务 7

8.Keystone 基本概念介绍之一 User    User 即用户,他们代表可以通过 keystone 进行访问的人或程序。 Users 通过认证信息 ( credentials ,如密码、 API Keys 等)进行验证。 Tenant    Tenant即租户,它是各个服务中的一些可以访问的资源集合。例如,在 Nova 中一个 tenant 可以是一些机器,在 Swift 和 Glance 中一个 tenant 可以是一些镜像存储,在 Neutron 中一个 tenant 可以是一些网络资源。 Users 默认的总是绑定到某些 tenant 上。 Role    Role 即角色, Roles 代表一组用户可以访问的资源权限,例如 Nova 中的虚拟机、 Glance 中 的镜像。 Users 可以被添加到任意一个全局的或租户的角色中。在全局的 role 中,用户的 role 权限作用于所有的租户,即可以对所有的租户执行 role 规定的权限;在租户内的 role 中,用户 仅能在当前租户内执行 role 规定的权限。 Service    Service 即服务,如 Nova 、 Glance 、 Swift 。根据前三个概念( User , Tenant 和 Role ) 一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个 user 尝试着访问其租户内 的 service 时,他必须知道这个 service 是否存在以及如何访问这个 service ,这里通常使用一些 不同的名称表示不同的服务。 8

9.Keystone 基本概念介绍之二 Endpoint   Endpoint,翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个 服务,则必须知道他的 endpoint 。因此,在 keystone 中包含一个 endpoint 模板,这个模板提供 了所有存在的服务 endpoints 信息。一个 endpoint template 包含一个 URLs 列表,列表中的每个 URL 都对应一个服务实例的访问地址,并且具有 public 、 private 和 admin 这三种权限。 public url 可以被全局访问(如 http://compute.example.com ), private url 只能被局域网访问(如 http://compute.example.local ), admin url 被从常规的访问中分离。 Token Token 是访问资源的钥匙。它是通过 Keystone 验证后的返回值,在之后的与其他服务交互中 只需要携带 Token 值即可。每个 Token 都有一个有效期, Token 只在有效期内是有效的。 9

10.各种概念之间关系解释 1 、租户下,管理着一堆用户(人,或程 序)。 2 、每个用户都有自己的 credentials (凭 证)用户名 + 密码或者用户名 +API key , 或其他凭证。 3 、用户在访问其他资源(计算、存储)之 前,需要用自己的 credential 去请求 keystone 服务,获得验证信息(主要是 Token 信息)和服务信息(服务目录和它们 的 endpoint )。 4 、用户拿着 Token 信息,就可以去访问特 点的资源了。 10

11.Keystone 在 OpenStack 中的访问流程范例 11

12.OpenStack 主要逻辑模块 - Nova • 计算管理 (codenamed “Nova”) 基于用户需求为 VM 提供计算资 源管理 .  基于 Python 语言编写。 • Nova-API: 对外统一提供标准化接口 . 接受和响应最终用户 Compute API 的请求 , 同时还实现与 Openstack 其他各逻辑模块 的通讯与服务提供 • Nova-Scheduler: 从队列上得到一个虚拟机实例请求并且决定它 应该在哪里运行 ( 使用多种过滤器或算法调度 ) • Queue :提供了一个守护进程之间传递消息的中央枢纽。消息 队列系统作用还可以实现与 Openstack 其他各逻辑模块之间的通 信建立连接枢纽 • Nova-Database: 存储云基础设施的编译时和运行时的状态 , 从 理论上讲, OpenStack Nova 可以支持任何 SQL-Alchemy 支持的 数据库,但是目前被广泛使用的数据库有 sqlite3 (只适用于测 试和开发工作), MySQL 和 PostgreSQL 。 • Nova-Compute: 主要是一个人工守护进程,它可以通过虚拟机 管理程序的 API ( XenAPI for XenServer/XCP, libvirt for KVM or QEMU, VMwareAPI for VMware 等)来创建和终止虚拟机实例。 支持多种虚拟化平台 • Nova 还提供控制台的服务,让最终用户通过代理服务器访问他 们的虚拟实例的控制台。这涉及到多个守护进程 (nova- 12 console , nova-novncproxy 、 nova-xvpnvncproxy 和 nova- consoleauth)

13.Nova 的架构 13

14.Nova 处理过程 14

15.请求一个虚拟机实例过程 15

16.Nova 支持的虚拟化平台 Openstack KVM 支持的 Xen 虚拟化技术 LXC vSphere QEMU UML 16 http://docs.openstack.org/admin-guide-cloud/content/section_hypervisors.html

17.Nova 支持的调度器和过滤器 Nova 支持的过滤器 • All HostFilter • ImagePropertiesFilter Nova 支持的调度器 •ChanceScheduler 随机调度器 • AvailabilityZoneFilter • SimpleScheduler 简单调度器 • ComputeFilter • FilterScheduler 过滤调度器 • CoreFilter • MultiScheduler 多重调度器 • IsolateHostFilter • RamFilter • SimpleCIDRAffinityFilter • DifferentHostFilter • SameHostFilter 17

18.OpenStack 主要逻辑模块 - 块存储 Cinder • 块存储管理模块 (codenamed “Cinder”) 提供到虚拟机的永久 性块存储卷 . 类似 AWS 的 EBS 块存储服务 • 多个卷可以被挂载到单一虚拟机实例,同时卷可以在虚拟机 实例间移动,单个卷在同一时刻只能被挂载到一个虚拟机实 例 • 块存储系统管理块设备到虚拟机的创建,挂载以及卸载 . • 块设备卷完全与 Openstack Compute 集成 , 并支持云用户在 Dashboard 中管理数据自己的存储 . • 除了支持简单的 Linux 服务器本地存储之外,还支持众多的存 储平台 , 包括 Ceph, NetApp, Nexenta, SolidFire, Zadara. • 快照管理提供了强大的在块存储上实现数据备份的功能可以 用来作为引导卷使用 • 块存储适合性能敏感性业务场景 , 例如数据库存储 大规模可 扩展的文件系统或服务器需要访问到块级裸设备存储 . 18

19.Cinder 的架构 19

20.Cinder 架构解释  API Service :负责接受和处理 Rest 请求,并将请求放入  RabbitMQ 对列。  Scheduler Service: 处理任务队列的任务,并根据预定策略选择合适的 Volume Service 节点来执行任务。目前版本的 Cinder 仅仅提供了一个 Simple Scheduler, 该调度器选择卷数量最少的一个活跃节点来创建卷。  Volume Service: 该服务运行在存储节点上,管理存储空间。每个存储节点都有一个 Volume Service ,若干个这样的存 储节点联合起来可以构成一个存储资源池。为了支持不同类型和型号的存储,均通过 Drivers 的形式为 Cinder 的 Volume Service 提供相应的 Cinder-Volume 。 Cinder 目前支持的存储类型 • 本地存储: LVM, Sheepdog • 网络存储: NFS, RBD(Ceph) • HP:3PAR (iSCSI/FC),LeftHand (iSCSI) • IBM: Storwize family/SVC (iSCSI/FC) , XIV (iSCSI) , GPFS , zVM • Netapp: NetApp(iSCSI/NFS) • EMC: VMAX/VNX (iSCSI) , Isilon(iSCSI) • Solidfire: Solidfire cluster(iSCSI) 20

21.Cinder 补充 Cinder 主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管 理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现 其驱动支持以与 OpenStack 进行整合。在 CinderSupportMatrix中可以看到众多存储厂商如 HP 、 NetAPP 、 IBM 、 SolidFire 、 EMC 和众多开源块存储系统对 Cinder 的支持。 Havana 版本中 Cinder 新增特性如下:  Volume-Resize :在可用情况下调整卷大小。  Volume-Backup-To-Ceph :现在卷可以备份到 Ceph 集群中。  Volume-Migration :现在不同用户间可以透明地转移和交换卷。  QoS :增加限速相关的元信息供 Nova 和其 Hypervisor 使用。  More-Drivers :更多的存储厂商加入和完善了自己的 Cinder 驱动。 21

22.Cinder 如何支持典型存储 1. 本地存储 2.HP 块存储 对于本地存储, cinder-volume 可以使用 LVM 驱动,该驱动当 前的实现需要在主机上事先用 LVM 命令创建一个 cinder- volumes 的卷组 , 当该主机接受 到创建卷请求的时候, cinder- volume 在该卷组 上创建一个逻 辑卷 , 并且用 openiscsi 将这个 卷当作一个 iscsi tgt 给输出 . 当 然还可以将若干主机的本地存储 用 sheepdog 虚拟成一个共享存 储,然后使用 sheepdog 驱动。 22

23.HP 存储系统对于的 Cinder 的支持 CinderSupportMatrix  OpenStack Block Storage (aka Cinder) Drivers https://wiki.openstack.org/wiki/CinderSupportMatrix 23

24.OpenStack 主要逻辑模块 - 对象存储 Swift • 分布式对象存储系统,类似于 AWS 的 S3 • 通过采用基于标准化服务器的 集群架构提供冗余 , 可扩展的 对象存储 • 具有良好的扩展性 , 可以实现 PB 级别数据的存储 • 支持存储对象写入的多份拷贝 , 并且支持当拷贝丢失后的自 我修复功能 . 确保数据的一致 性 • 提供每 GB 高性价比的极佳的 可用性和数据耐久性 • 支持原生的 OpenStack™ API 24 以及 S3 compatible API

25.对象存储 Swift 数据模型 Swift 采用层次数据模型,共设三层逻辑结构: Account/Container/Object (即 账户 / 容器 / 对象 ) ,每层节点数均没有限制,可以任意扩展。数据存储基于 NWR 理论  Account 对应租户 , 用于隔离  Container 对应某 个租户数据的存 储区域  Object 对应存储 区域中具体的 block 类似文件存储过程 : Touch fileA 在对应的磁盘块组中对应的元数据区域产生对应的 inode ,基于这个 inode 存储数据到数据区中对应 的块组中的 block 25

26.对象存储 Swift 系统架构 ※ Swift 采用完全对称、面向资源的分布 式系统架构设计 ※ 所有组件都可扩展,避免因单点失效而 扩散并影响整个系统运转 ※ 通信方式采用非阻塞式 I/O 模式,提 高了系统吞吐和响应能力 26

27.对象存储 Swift 系统组件  代理服务( Proxy Server ):对外提供对象服务 API ,会根据环的信息来查找服务地址并转发用户请求至相应的账户 、容器或者对象服务;由于采用无状态的 REST 请求协议,可以进行横向扩展来均衡负载。  认证服务( Authentication Server ):验证访问用户的身份信息,并获得一个对象访问令牌( Token ),在一定的时 间内会一直有效;验证访问令牌的有效性并缓存下来直至过期时间。  缓存服务( Cache Server ):缓存的内容包括对象服务令牌,账户和容器的存在信息,但不会缓存对象本身的数据; 缓存服务可采用 Memcached 集群, Swift 会使用一致性散列算法来分配缓存地址。  账户服务( Account Server ):提供账户元数据和统计信息,并维护所含容器列表的服务,每个账户的信息被存储在 一个 SQLite 数据库中。  容器服务( Container Server ):提供容器元数据和统计信息,并维护所含对象列表的服务,每个容器的信息也存储 在一个 SQLite 数据库中。  对象服务( Object Server ):提供对象元数据和内容服务,每个对象的内容会以文件的形式存储在文件系统中,元 数据会作为文件属性来存储,建议采用支持扩展属性的 XFS 文件系统。  复制服务( Replicator ):会检测本地分区副本和远程副本是否一致,具体是通过对比散列文件和高级水印来完成, 发现不一致时会采用推式( Push )更新远程副本,例如对象复制服务会使用远程文件拷贝工具 rsync 来同步;另外一 个任务是确保被标记删除的对象从文件系统中移除。  更新服务( Updater ):当对象由于高负载的原因而无法立即更新时,任务将会被序列化到在本地文件系统中进行排 队,以便服务恢复后进行异步更新;例如成功创建对象后容器服务器没有及时更新对象列表,这个时候容器的更新操作 就会进入排队中,更新服务会在系统恢复正常后扫描队列并进行相应的更新处理。  审计服务( Auditor ):检查对象,容器和账户的完整性,如果发现比特级的错误,文件将被隔离,并复制其他的副 本以覆盖本地损坏的副本;其他类型的错误会被记录到日志中。  账户清理服务( Account Reaper ):移除被标记为删除的账户,删除其所包含的所有容器和对象。 27

28.对象存储 Swift 系统支持的操作 Swift RESTful API 总结 资源类型 URL GET PUT POST DELETE HEAD 账户 / 获取容器 - - - 获取账户 account/ 列表 元数据 容器 / 获取对象 创建容器 更新容器 删除容器 获取容器 account/ 列表 元数据 元数据 container 对象 / 获取对象 创建、更 更新对象 删除对象 获取对象 account/ 内容和元 新或拷贝 元数据 元数据 container 数据 对象 28 /object

29.对象存储 Swift 补充 29