Cloudify基本介绍

摘要:
l版本功能虽然cloudify提供开源的是社区版本,一些高级功能并不提供,但这不妨碍我对cloudify敬意。这样的方式使得cloudify总工程很轻薄,但也具有相当的能力,抛去了硕大的PaaS支架的躯体,保留了paas最核心的本质。Cloudify抛弃了外壳,简化了架构,强化了DSL,终于换来了它轻盈的身姿。

介绍

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,终于换来了它轻盈的身姿。


免责声明:文章转载自《Cloudify基本介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇视频H265格式压缩,软件压缩方法,硬件的没有条件,没法测试。运放PID控温电路 (转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用mathjax在博客中完美显示数学公式,支持PC,手机浏览器

在博客园的设置选项里 有页头HTML的框内输入: <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script> 然后就支持tex,latex输入公式了! 如果不懂tex的朋友...

小程序与WebRTC联姻能擦出怎样的火花?

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯视频云终端团队发表于云+社区专栏 腾讯视频云终端技术总监,rexchang(常青), 2008 年毕业加入腾讯,一直从事客户端研发相关工作,先后参与过 PC QQ、手机QQ、QQ物联 等产品项目,目前在腾讯视频云团队负责音视频终端解决方案的优化和落地工作,帮助客户在可控的研发成本投入之下...

WebAPI常见的鉴权方法,及其适用范围

在谈这个问题之前,我们先来说说在WebAPI中保障接口请求合法性的常见办法: API Key + API Secret cookie-session认证 OAuth JWT  当然还有很多其它的,比如 openid connect (OAuth 2.0协议之上的简单身份层),Basic Auth ,Digest Auth 不一一例举了 1、API Ke...

API的理解

API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 通俗的讲API就是接口,就是通道,负责一个程序和其他软件的沟通,本质是预先定义的函数。 API通常是以Http的形式提供,它隐...

ubuntu和centos操作命令对比

ubuntu和centos操作命令对比 1,安装软件,比如安装jdk CentOS : rpm -i jdk-XXX_linux-x64_bin.rpm 进行安装, Ubuntu : dpkg -i jdk-XXX_linux-x64_bin.deb 进行安装。 其中 -i 就是 install 的意思。 2,管理软件 查询已安装的软件 rpm -qa...

Node.js server使用

一、创建项目 #创建项目目录 cd /data mkdir webroot cd webroot #初始化git git init vim .gitignore 输入: node_modules/ 保存: :wq #初始化npm,生成package.json npm init #安装express npm install -D express #...