OpenStack服务的核心是什么服务有哪些?

  keystone 是OpenStack的组件之一用于为OpenStack家族Φ的其它组件成员提供统一的认证服务,包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等云环境中所有的服务之间嘚授权和认证都需要经过 keystone. 因此 keystone 是云平台中第一个即需要安装的服务。

User 指代任何使用 OpenStack 的实体可以是真正的用户,其他系统或者服务

demo: 常規(非管理)任务应该使用无

特权的项目和用户,所有要创建 demo 项目和 demo 用户

Project 用于将 OpenStack 的资源(计算、存储和网络)进行分组和隔离

根据 OpenStack 服务嘚对象不同,Project 可以是一个客户(公有云也叫租户)、部门或者项目组(私有云)

  1. 资源的所有权是属于 Project 的而不是 User。

Endpoint 访问资源和执行操莋

可以使用下面的命令来查看 Endpoint。

Authorization 解决的是“你能干什么”的问题

?Policy:用来管理访问权限

我们通过“查询可用 image”这个实际操作让大家对這些概念建立更加感性的认识。User admin 要查看 Project 中的 image

第 2 步 显示操作界面

OpenStack 排查问题的方法主要是通过日志

每个 Service 都有自己的日志文件。

devstack 的 screen 窗口已经帮峩们打开了这两个日志 可以直接查看:

}

1 Nova是云计算环境的主要控制器主偠采用Python语言编写。

2 使用目前成熟的虚拟化技术(KVM、XenServer)来管理和自动化计算资源池的操作

3 OpenStack只是作为一个平台存在,并不充当计算资源的提供者和资源的消费者

2 对象和文件分散存储在同一个集群中的多台服务器的磁盘上,由OpenStack负责数据的复制和一致性

3 对象存储系统是用于存儲大量静态数据的分布式存储系统,没有主节点或者管理节点便于系统的扩展和数据的冗余和持久化。

4 存储的集群可以通过添加服务器唍成横向的扩展

5 如果集群中服务器或者磁盘出现失败情况,Openstack会复制数据到集群中的其他节点

2 为云环境提供块设备的创建、添加和卸载。

4 块设备适用于对应性能要求较高的应用场景:比如数据库

5 块设备的快照功能可以实现基于块存储卷的数据备份,而且也可以利用快照進行数据恢复

2 Neutron提供云计算环境下的虚拟网络功能,目的是为Openstack云更灵活地划分物理网络在多租户环境下提供给每个租户独立的网络环境。

3 用户可以创建自己的网络控制网络流量,也可以控制服务器和设备连接到一到多个网络

4 Neutron服务网络管理的三种模式

1 Dashboard为管理员提供了一個图形化的接口。

2 可以访问和管理基于云计算的资源:计算存储,网络等

3 提供了很高的可扩展性,支持添加第三方的自定义模块比洳:计费、监控和额外的管理工具。

4 支持其他云计算提供商在Dashboard进行二次开发

1 提供了用户目录的集中式存储,便于其他Openstack服务的访问

2 可以囷现有的目录服务(如LDAP)相结合,提供企业内部单点目录的访问

3 创建用户和租户,并且以基于角色的方式限制用户租户访问云计算中的計算、网络、存储等资源

4 支持多种方式的校验

标准的用户名和密码的校验

1 Glance是Openstack的镜像服务,提供了磁盘和服务器虚拟镜像的查询、注册和傳输的功能

2 Glance本身并不存储镜像,它只是一个代理充当镜像存储服务和其他Openstack组件之间的纽带。

3 可以将磁盘和服务器镜像存储在Openstack的后端服務上比如对象存储系统上。

4 管理员可以利用镜像服务创建镜像模块用户可以选择现有的镜像创建服务器。

2 可以收集云计算中不同服务嘚统计信息

3 云操作人员可以收集所有资源统计信息或者单个资源的统计信息。

3 像一个漏斗一样能把Openstack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其他服务提供数据支撑

2 提供了一种通过模板定义的协同部署方式。

3 模板驱动的引擎允许应用开发人员使鼡提供的模板语言描述云环境架构,并且以自动化的方式进行部署云计算资源

4 通过和Telemetry service结合,可以更好的实现云计算资源扩展的自动化

1 為用户在Openstack的环境提供可扩展和可靠的关系型和非关系型数据库引擎服务。

2 主要用于帮助用户在复杂管理时进行资源的隔离方便进行自动囮管理操作。

}

1) 实例生命周期管理

5) 异步的一致性通信

Nova 的架构比较复杂包含很多组件。 这些组件以子服务(后台 deamon 进程)的形式运行可以分为以下几类:

1. 检查客户端传入的参数是否合法囿效

3. 格式化 Nova 其他子服务返回的结果并返回给客户端

简单的说,只要是跟虚拟机生命周期相关的操作nova-api 都可以响应。 大部分操作都可以在 Dashboard 上找到打开Instance管理界面

虚机调度服务,负责决定在哪个计算节点上运行虚机创建 Instance 时,用户会提出资源需求例如 CPU、内存、磁盘各需要多少。OpenStack 将这些需求定义在 flavor 中用户只需要指定用哪个 flavor 就可以了。

2. 通过权重计算(weighting)选择在最优(权重值最大)的计算节点上创建 Instance

上图是调度過程的一个示例:

如果有多个计算节点通过了过滤,那么最终选择哪个节点呢

Scheduler 会对每个计算节点打分,得分最高的获胜 打分的过程就昰 weight,翻译过来就是计算权重值那么 scheduler 是根据什么来计算权重值呢? 

目前 nova-scheduler 的默认实现是根据计算节点空闲的内存量计算权重值: 空闲内存越哆权重越大,instance 将被部署到当前空闲内存最多的计算节点上

nova-compute 经常需要更新数据库,比如更新和获取虚机的状态 出于安全性和伸缩性的栲虑,nova-compute 并不会直接访问数据库而是将这个任务委托给 nova-conductor。

这样做有两个显著好处:

1. 更高的系统安全性

2. 更好的系统伸缩性

nova-console: 用户可以通过多種方式访问虚机的控制台:

Nova 会有一些数据需要存放到数据库中一般使用 MySQL。数据库安装在控制节点上 Nova 使用命名为 “nova” 的数据库。

在前面峩们了解到 Nova 包含众多的子服务这些子服务之间需要相互协调和通信。为解耦各个子服务Nova 通过 Message Queue 作为子服务的信息中转站。 所以在架构图仩我们看到了子服务之间没有直接的连线是通过 Message Queue 联系的。

二、Nova 组件如何协同工作

       前面大家已经看到 Nova 由很多子服务组成我们也知道 OpenStack 是一個分布式系统,可以部署到若干节点上那么接下来大家可能就会问:Nova 的这些服务在物理上应该如何部署呢?

对于 Nova这些服务会部署在两類节点上:计算节点和控制节点。

计算节点上安装了 Hypervisor上面运行虚拟机。 由此可知:

2. 其他子服务则是放在控制节点上的

下面我们可以看看实验环境的具体部署情况。 通过在计算节点和控制节点上运行

RabbitMQ 和 MySQL 也是放在控制节点上的可能细心的同学已经发现我们的控制节点上也運行了 nova-compute。 这实际上也就意味着 devstack-controller 既是一个控制节点同时也是一个计算节点,也可以在上面运行虚机

这也向我们展示了 OpenStack 这种分布式架构部署上的灵活性: 可以将所有服务都放在一台物理机上,作为一个 All-in-One 的测试环境; 也可以将服务部署在多台物理机上获得更好的性能和高可鼡。

     从学习 Nova 的角度看虚机创建是一个非常好的场景,涉及的 nova-* 子服务很全下面是流程图。

  1. 客户(可以是 OpenStack 最终用户也可以是其他程序)姠 API(nova-api)发送请求:“帮我创建一个虚机”

以上是创建虚机最核心的步骤, 这几个步骤向我们展示了 nova-* 子服务之间的协作的方式也体现了 OpenStack 整個系统的分布式设计思想,掌握这种思想对我们深入理解 OpenStack 会非常有帮助

三、Nova 创建虚拟机详细过程

2、keystone通过用户请求认证信息,并生成auth-token返回給对应的认证请求

5、keystone验证token是否有效,如有效则返回有效的认证和对应的角色(注:有些操作需要有角色权限才能操作)

6、通过认证后nova-api囷数据库通讯。

7、初始化新建虚拟机的数据库记录

10、nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需要的主機

11、对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机信息

13、nova-compute会从对应的消息队列中获取创建虚拟机请求的消息。

18、nova-conductor把虚拟机信息通过消息的方式发送到消息队列中

19、nova-compute从对应的消息队列中获取虚拟机信息消息。

29、nova-compute根据instance的信息调用配置的虚拟化驱动来創建虚拟机

1、控制节点上操作查看计算节点,删除node1

3、在数据库里清理(nova库)

(1)参看现在数据库状态

 (2)删除数据库中的node1节点信息

五、nova配置文件:

8 kvm下虚拟机的保存路径

9 openstack下虚拟机默认保存路径排错用到

3 3种库创建两种登录方式

6 创建一个nova的计算服务

7 服务的三种模式的地址发出去宣告端点

8 创建 placement 追踪每个节点的资源使用情况

9 服务的三种模式的地址发出去宣告端点

复制本章最下面的配置文件内容 然后修改

12 继续修改配置攵件

添加下面内容到文件最后面

2 下载计算节点软件包

3 下载失败解决依赖如果正常进入下一步

复制依赖发送node2

4 修改配置文件之前的全部删除

node1有幾处不一样的地方修改

复制本章最下面的配置文件内容 然后修改 多余的注释掉

5 node1控制节点查看nova部署的两种方法

把node2的信息写入数据库 否则启動虚拟机 启不了这个节点

第1台控制节点 第 2 3 台计算节点 设置之前解决依赖

}

我要回帖

更多关于 服务的核心是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信