Cloudify基本介绍

介绍

Cloudify 是开源的云编排框架,管理应用的整个生命周期,主要功能包括:

  • 应用编排:blueprint,部署和管理
  • 应用维护:工作流,事件和日志管理
  • 可插拔:使用插件垒起来的
  • 标准:基于TOSCA的DSL(领域描述语言)
  • 术语

    • blueprint:cloudify 用blueprint 来定义应用,blueprint 是应用的逻辑展示,包括配置脚本、和其他资源的关联等应用需要的一切;
    • workflow:cloudify 用 workflow 来提供和管理应用,workflow 用来定义对应用执行动作的流程,默认为 install;
    • plugin:cloudify 用 plugin 实现应用的部署,比如 “home-grown script-plugin” 是执行一堆脚本来部署 web server,对应不同的blueprint,需要安装相应的plugin,安装方式”cfy local install-plugins -p BLUEPRINT_PATH”;
    • model:保存应用的整个结构
    • deployment:blueprint 的实例,model 的一部分
    • node:blueprint 中定义的每个逻辑实体,包含多个node实例(比如multiple virtual machines),对应 blueprint 中的 “node_templates”
    • Cloudify Manager:包括开源栈的环境,用户可以 
      • 利用其不同的插件(例如Docker,脚本,Chef和Puppet插件)来管理应用程序的主机
      • 维护 blueprints 目录
      • 创建blueprint的多个部署,并安装
      • 应用的恢复、扩展和其他定制workflow
      • 并发多个workflow
      • 使用其Web UI查看指标、搜索日志、查看应用程序的拓扑结构和执行的不同任务
      • 通过认证和授权插件为应用管理提供安全环境
      • 保留指标和事件的历史
      • 管理运行应用程序的主机上的代理

Cloudify Manager 架构

包括三部分: 
* Manager:集中控制中心 
* Agents:各个节点的代理,负责执行具体的工作 
* Web UI:对外展示


Cloudify基本介绍_第1张图片


Cloudify核心组件

Cloudify的技术栈:

Nginx:HTTP和 反向代理 服务器,接收来自GUI界面的请求,并转发给后端的RestAPI(Swagger)。

Elasticsearch:Blueprint、instance、metrics、log、events的全文检索。

Logstash:日志进行收集、分析。

RabbitMQ:metrics、events、task的异步执行。

Riemann:metrics stream processor(基于Java),一个规则引擎,可以基于metrics进行内存级的过滤、处理。

InfluxDB:分布式时序数据库InfluxDB,用于存储metrics。

Grafana:仪表盘图形化展示组件,用于展示influxDB的数据。

Flask:a microframework for Python,整合Swagger提供Restful API。

Gunicorn:Python WSGI UNIX的HTTP服务器。

Celery:Python Distributed Task engine,通过RabbitMQ实现异步分布式任务处理,用于实现Cloudify的工作流。

Fabric: SSH Library。

Diamond:Python监控组件,提供Monitoring Agent。

===========================================================================================

  • Nginx:REST 服务和UI 的代理;文件服务器(保存一些资源)
  • Gunicorn and Flask:Gunicorn为WSGI HTTP服务,Flask为web框架
  • Elasticsearch:保存应用的models,存储日志和事件
  • Logstash:日志收集,并push到Elasticsearch保存
  • RabbitMQ:消息中间件,应用之间通信使用
  • Riemann:基于策略的事件流处理器
  • Celery:分布式的任务队列
  • InfluxDB and Grafana:InfluxDB 存储监控到metrics,Grafana是InfluxDB的图形dashboard

关键特征

 

 

Any App, Any Stack

任何应用程序,任何堆栈

使用配方为基础机制, 部署任何中间件堆栈

 

Automatic Self-Healing

自动自我修复

跟据配方定义, 宕机系统或机器能自动被新的取代

 

Auto-Scale, Your Way

自动伸缩

根据框或自定的指标, 自动伸缩应用程序

 

Any Cloud

任何云

支持所有主要的云计算和虚拟平台

 

Automation of the Entire Life-Cycle

整个生命周期的自动化

使用一个单一的平台来部署, 管理和更新应用程序

 

Cluster-Aware Monitoring & Management

群集感知的监控管理

可插拔的监控, 自定义的警报, 和应用程序感知的监视控制台

 

Fully Testable on Your Laptop

在笔记本上就可以提供全套功能的云模拟环境:简单的开始,调试,测试。

 

l        版本功能

       虽然cloudify提供开源的是社区版本,一些高级功能(我们很想拥有的)并不提供,但这不妨碍我对cloudify敬意。除了CF,开源社区有了更多的选择,而且提供了新的思路和方式。CF也有2种版本,CF只是vmware的开源版本,vwmare也有商业版本。

 

功能

社区版功能

商业版本(技术层面)

Paas基础能力

任何语言任何技术栈

另外:大数据服务:Cassandra,MongoDB,

应用程序容器:Tomcat, Jboss,weblogic

部署结构

支持复合/多层结构的应用部署

同左

部署模式

连续部署支持

同左

Console控制台

交互式shell

 

负载均衡能力

 

动态负载均衡 / 动态HTTP负载均衡

高可用

高度可用的云控制器

同左

自我管理

自动自我修复

同左

监控

拓扑感知的监控和管理

同左

节点个数

无限制

同左

Cloud驱动

Amazon,Rackspace,Azure

还支持:OpenStack,vSphere,CloudStack

接口

Open cloud driver interface

同左

Api

Rich Management API

同左

源代码

社区版源代码和编译后的文件

不提供

4.5.2            总体架构

       Cloudify是基于java来实现的,在它的设计思想中,并没有一个paas平台的边界,而是把各种服务器理解为一个个的网格,然后有管理节点分别去关联计算节点,还是典型的C/S模式,这和它的设计它之前的XAP的设计理念一脉相承。

       这样的方式使得cloudify总工程很轻薄,但也具有相当的能力,抛去了硕大的PaaS支架的躯体,保留了paas最核心的本质。这种架构和之前的CF大相径庭,但这也是一种不错的思路,因为把这块撇给了DSL来定义,用人工定义的方式解决了服务和应用的定位和绑定功能,底层还是依赖iaas提供的对vm的控制能力,并把整体paas的管理功能封装在当前管理节点和与之相关的计算节点的管理。Cloudify抛弃了外壳,简化了架构,强化了DSL,终于换来了它轻盈的身姿。


你可能感兴趣的:(Cloudos)