murano原理解析

murano原理解析转自 https iaaslee blogspot com 2015 10 openstack application catalog murano html view snapshot 如题 本文的着重点在于讨论 Murano 的工作原理和设计 所以内容较为晦涩和枯燥 根据前面的内容

大家好,我是讯享网,很高兴认识大家。

转自:https://iaaslee.blogspot.com/2015/10/openstack-application-catalog-murano.html?view=snapshot

如题,本文的着重点在于讨论Murano的工作原理和设计。所以内容较为晦涩和枯燥。根据前面的内容,我们很容易得出Murano在OpenStack环境中的数据流,在整个创建、构建、直到虚拟机/集群开始运行的整个过程,可以由下面两张图来清晰的表达:
0、OpenStack UI 中Murano的操作:
在这里插入图片描述
讯享网
正如我们所讲的,murano是Heat的更加接近人类的理解的产物,所以所有的提交、定制最后都会汇集为Heat的模版,尤其是需要其它OpenStack服务做配合的时候。

1、deploy键按下之后,其它OpenStack服务的数据流向和处理:
在这里插入图片描述

  1. 用户通过Murano图形界面发送请求给Murano python客户端。
  2. Murano python客户端再发送请求给Murano API服务。
  3. Murano API 服务再发送请求到RabbitMQ。
  4. Murano Conductor从队列里挑选出请求信息。
  5. Murano conductor解析信息,重组为Heat模版,并交给Heat引擎。
  6. Murano conductor会将真正的执行计划发送给rabbitmq,这将是交给Murano代理执行的任务。
  7. Heat通过各个OpenStack的服务部署整个的IaaS级别的基础设施。
  8. OpenStack服务部署虚拟机实例,此实例会激活murano代理。
  9. 在虚拟机内部,Murano代理从rabblitmq中挑出原先murano conductor所分配的执行计划,然后通过各种脚本或程序引擎来执行它们。

2、看完运行时的数据流图后,我们再看下其设计时的组件架构考量:
在这里插入图片描述
Murano主要是利用现有的项目和服务。Murano通过Heat直接或间接的整合了其它的OpenStack服务。Celimeter服务所收集到用户信息,Murano-API会用此信息到计费规则处理中,从而计算出计费信息。

先来解释下这些主要组件的功能或定义:

  • 元数据服务:存储应用描述和服务的元数据。包括有应用相关的Heat模版、软件配置、部署脚本以及UI的元素定义。
  • API服务:UI所使用。此API可让管理员来操纵应用的元数据、可让开发者发布和管理应用,还可让最终用户执行应用配置和自我部署。API提供了RBAC的能力,来对各个组件和应用做访问控制。
  • 环境控制:集成OpenStack的部署引擎,如Heat,Trove,Savanna等,来执行实际的应用部署。
  • 计费:为已经部署的应用,和Ceilmeter的使用数据一起合作来生成计费信息,每个应用都可拥有自身的计费规则。由创建它的开发者来设置。

再来看下Murano中需要解释的术语、角色或定义:

  • 环境:用于组织应用到一个单一到部署的逻辑实体。
  • 应用:一个拥有自身的配置和部署脚本的软件组件。一个应用或许会用到多个虚拟机来部署,举例来说,如一个Galera集群,或者是SQL集群,又或者是本系列所用到的Mesos集群。
  • 应用定义:一个应用的描述,其包含了应用将如何部署的元数据描述,应用的前提条件,应用的UI元素等等。
  • RBAC:基于角色的访问控制。
  • Murano:一组提供了控制程序的管理和部署的组件。它通过所定义的端点来访问,可能指向一个或多个应用目录实例,例如,它可能是指向一个本地的实例、也可能是一系列的实例集合、也可能是远端的实例、也可能是上述三种情况的任意组合。
  • 应用目录实例:Murano服务的实例,托管服务目录组件,管理一个或多个应用的定义。应用目录实例可以是本地的,也可以一个单一的云中相关联的,或者是远端的,为多个openStack环境提供服务。
  • 应用发布者:一个独立的个体或者公司,发布应用到应用目录。
  • 最终用户:一个独立到个体或公司,在应用目录中尝试自行部署一个应用。
  • 目录管理者:一个独立的个体或公司,维护应用目录,并决定任何有关其用途的相关政策。

3、最后我们再来看下murano代理的数据流工作原理图:
在这里插入图片描述

  1. Heat从rabbitmq中拿到消息
  2. heat会使用cloudinit来生成murano-agent.conf
  3. murano代理,会使用此murano-agnet.conf来查找相应的rabbitmq服务以及输入队列。
  4. Murano代理会从rabbitmq挑选出正确的消息。
  5. murano代理会执行消息中的执行计划。

总结:

小讯
上一篇 2025-03-08 10:55
下一篇 2025-03-05 22:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39569.html