`
timeson
  • 浏览: 146424 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

从项目开发到云端架构(14)

 
阅读更多

4.5  Cloudify

       Cloud foundry作为业务第一个开源的paas,给我们带来了难得的学习和借鉴的机会,得以窥视paas的盒子内部的构造。Cloud foundry是基于ruby开发的,ruby相比之下比java开发的速度更快,这也是CF发展很快的原因之一把(原因之二,架构稳健,容易扩展)。如果把CF看作是大象,功能齐全,结构完整,那cloudify就是灵活的豹子,号称上手最快的平台。

       Cloudifygigaspaces公司推出的基于javapaas平台。从语言习惯上看基于javacloudify更贴近我们的开发习惯(其实我也愿意花点时间学点ruby或者groovy,赚点零花钱)。Gigaspaces是业界非常著名的paas提供商,也是高端产品XAP的厂家(eXtreme Application Platform,高端的Java 应用服务器)。有意思的是gigaspaces-cloudify-2.1.0-gagigaspaces-xap-premium-9.0.0-ga lib库是相同的。也就是说在同一个基本库的基础上开发了2套针对不同场景的应用。      

4.5.1            简单介绍

       Cloudify通过提供基于Groovy的领域特定语言,为创建部署脚本准备应用,同时基于out-of-the-box模式,从而推出云端Java元素,这个元素包括Apache服务器、Cassandra分布式数据库、Spring框架、XAP内存数据网格等。和CF相比,cloudify非常的精巧。那Cloudify提供了哪些功能呢:

  • 在无需更改代码的情况下, 部署任何企业应用程序到任何虚拟环境
  • 在云平台的应用程序提供企业级的生产环境:
    • 持续的可用性
    • 弹性和可扩展性
    • 完全自动化的部署
  • 无与伦比的控制和可视化
    • 应用程序和群集感知的详细监测
  • 无厂商锁定
    • 保持现有的软件开发方式和过程
    • 支持任何应用程序堆栈

 

1、基于资源定制的配置(Recipe-based configuration:

       基于Groovy的领域特定语言,扩展和自定义很容易并直观,内部绑定了常用中间件组件,比如:JBoss, Tomcat, MySQL, Cassandra, MongoDB等。对于资源定制,CF有个概念:Droplet,指提交的源代码 + 配套好的运行环境 +管理脚本,在cloudify中这个概念被深化,Recipe包括的更多,包括应用生命周期脚本,服务的关联设定等。

 

 



 

45-01 内建的资源定制

2、通用服务适配器(USAUniversal Service Adapter:

       该组件运行在每个节点上,并把recipe 在本地节点转化为动作来执行(比如安装,服务初始化,服务监控)。它可以被视为Cloudify的每个节点上的本地代表,只要在recipe文件中配置正确,不需要对服务进行特别管理(Tomcat, MySQL, Cassandra, JBoss, Apache with mod_php)。

 

3、插件式集群感知控制台(Pluggable cluster-aware monitoring:

       监测框架是用来创建通用的监督协议插件集合(比如JMX, SNMP, JDBC/SQL)。USA激活在本地每个服务节点上的插件,然后插件连接到本地服务,并开始收集从它的信息。这些数据指标,会传递给Cloudify运行时环境,cloudify会根据recipe中的定义规则来控制系统的自动扩展能力,并通过各种用户接口暴露给用户。

 

4、移植性

       Cloudify 提供一个抽象能力功能:Cloud Driver,该层被设计成抽象方式来隔离我们的应用和云环境,并提供公用方法来集成了业界所有的主要云和虚拟机(采取的是jclouds的组件,支持业界众多的云环境)

       GigaSpaces Cloudify 已经集成了Microsoft Windows Azure Amazon EC2 clouds,并且马上集成其他的云平台。 比如Citrix CloudStackOpenStackRackspaceGoGridCitrix XenServer

 

支持的IaaS平台

 

公开云

 windows azure

 amazon

 rackspace

 terremark

 vmware vcloud

私有云

 openstack

 cloud.com

 jcloud

 eucalyptus

 vmware vsphere

 

5、关键特征

 

 

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基础能力

任何语言任何技术栈

另外:大数据服务:CassandraMongoDB

应用程序容器:Tomcat Jbossweblogic

部署结构

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

同左

部署模式

连续部署支持

同左

Console控制台

交互式shell

 

负载均衡能力

 

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

高可用

高度可用的云控制器

同左

自我管理

自动自我修复

同左

监控

拓扑感知的监控和管理

同左

节点个数

无限制

同左

Cloud驱动

AmazonRackspaceAzure

还支持:OpenStackvSphereCloudStack

接口

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

 

 



 

45-02 Cloudify 体系结构

       cloudify中,cloudcontrol处于绝对控制地位,解释dsl,调用jclouds,寻找合适的vm,根据规则部署应用,并对应用进行监控和管理。Cloudify ccvm之间是有状态联系,这种关系和cf的无状态cc模式有极大的区别。

l         cf中,cc是无状态的,可以有很多无状态CC节点,并通过一个消息机制和各个组件进行交互,其优势就是能构建巨大的云平台环境,从目前掌握的资料而言,一些公共开源云环境均采用这种模式,但结构复杂,运维和管理相对困难。

l         而在cloudify中,ccvm/应用是有状态模式,这种方式劣势为不能管理数量众多的应用,优势是和vm/应用的关系很紧密,方便控制和管理,这点其实对于基于项目类型的云环境是有优势的,CC个数有限,每个CC对应Nvm/应用数量,分区画域,部署方便,管理容易。

4.5.3           组件说明

1.         dsl:脚本部署语言,解决部署依赖以及环境配置

 

 



 

45-03DSL描述(领域定义语言,用来部署云端应用)

 

2.         cli:提供基于console的客户端环境

 

 



 

45-04cli控制台(提供服务生命周期的管理)

 

3.         webui:提供for web的用户管理界面

 

 



 

45-05:控制台界面

 

4.         usm:统一服务管理

5.         rest:对客户端提供基于rest的接口风格

6.         openapiruntime的抽象层,用于2次开发使用

7.         runtime:核心包,实现agent,containerserver manager

8.         jclouds:云端资源抽象层

 

4.5.4           业务流程

       Cloudify使用boostrapping进行管理,部署应用所需的服务机(vm或物理),安装需要提供的Cloudify组件。在Cloudify shell提示符运行相关的安装命令的时候初始化boostrapping。在一般来说,bootrapping的进程执行以下任务:

1.         在模板中定义中分配一台可用机器。有关模板的更多信息,参阅Cloudify驱动程序文件。

2.         连接到分配的机器通过SSH* nix中)或WinRM的(WINDOWS

3.         安装并启动相关的组件

 

       一旦的boostrapping连接到分配的机器,它上传来引导机器所需的文件。这些通常包括一个启动脚本和上传文件夹中的任何所需的文件,如SSH密钥文件。一旦文件被上传,有关bootstrap脚本运行。

       在启动cloudify的控制进程,Bootstrapping开始管理机器,并推出Cloudify agantCloudify代理程序激活Cloudify controller去使用服务实例节点的机器去安装或者扩展服务。

 

Cloudify管理机的配置

       当有关的云驱动程序接收到一个请求启动云,它执行以下任务:

1.         在管理节点模板定义中的资源池中,分配一台可用的机器(使用特定的cloud api

2.         通过SSH* nix中)或WinRM的(WINDOWS)连接到分配的机器。

3.         安装和开始的Cloudify的管理组件(Cloudify controllercloud driver

 

 

 



 

45-06 Cloudify管理节点的调用时序

 

应用服务的配置

       Cloudify controller接受请求去安装一个应用,就会要求cloud driver提供机器以便运行该应用所需的服务。为了获取到具体的节点,cloud driver需要行以下任务:

1.         在管理节点的模板定义中的资源池中,分配一台可用的机器(使用特定的cloud api

2.         连接到分配的机器通过SSH* nix中)或WinRM的(windows

3.         安装和启动Cloudify agent

4.         启动服务的安装,使用有关服务​​的安装脚本

 

 



 

45-07 Cloudify计算节点的调用时序

 

下面用一张图来示意cloudify的内部工作流程。

1.         用户提交写好recipe的应用,cc根据recipe的配置,通过cloud dirver寻找需要的vm

2.         cloud diriver透过jclouds调用iaas api,通过iaas的计算服务得到新的vm

3.         cc通过安装程序把agent部署在新的vm上,并执行一系列引导处理,使得该vm成为新的计算节点,并被cc所监控。

4.         透过计算节点的agent,安装应用,启动服务,新的节点启动完毕。

 

 



 

45-08 cc启动应用服务

 

4.5.5           安装部署

 

       相对其他的paas平台来说,Cloudify的安装和配置较为简单,一般来说分为4个步骤:

l         配置底层云平台(Configure Clouds

   每个云的实现是不同的。因此,为Cloudify工作与你的云,你可能需要配置您的云,如SSH安全方面。有关配置云提供商与Cloudify工作的信息,是指对有关主题,从下面的列表支持云: AzureEC2OpenStackTraditional Data Center等。

 

l         创建云端镜像盘(Create Cloud Images

   Cloudify在启动过程中需要配置机器的时候,就需要使用云端镜像。根据配置,由cloud service为某台机器创建特定的云端镜像盘,当然了镜像盘需要满足起码的最低要求。

   软件方面:

ü         每个镜像盘预必须安装JDK 1.6或更高,

ü         以及SSH守护进程必须启动并运行22端口;

   网络方面:

ü         在相同的服务,彼此之间的机器端口要开放;

ü         管理机和节点机之间的所有端口打开;

ü         管理虚拟机上,80998100端口必须是从互联网开放的沟通,通过虚拟机的公网IP地址。以便允许Cloudify shellREST服务器交互,并允许用户访问管理Web应用程序。

 

l         配置云端驱动(Configure Cloud Drivers

   Cloudify通过抽象层来屏蔽底层云平台的差异,所以在不同的云平台进行切换的时候,不必改变我们为应用写的资源定制(recipe)。但是在私有云上工作,需要在配置云端驱动之前额外做点工作。

 

1.         在私有云Cloudify分布文件存储。由于私有云经常断开与互联网连接,或者是加快Cloudify配置过程,cloudify推荐在本地存储Cloudify分发文件。分发文件引导Cloudify管理机时,使用的Cloudify云端驱动时安装上的应用机器Cloudify代理。一些私有云平台提供了存储服务,从中获取分发文件,在云端驱动的序配置文件中指定此服务的URI位置即可。如果使用Cloudstack,必须创建一个虚拟机上存储Cloudify的分发文件。

2.         需要创建镜像盘。Cloudify分发文件带有内置在Cloudify镜像盘。如果应用需要额外的图像,你可以创建它们使用私有云的控制台。

 

l         创建资源定制(Create Recipes

       在部署应用程序之前,用Recipes对应用进行配置并部署

 

 

Cloudify的快速范例,参看《补充资料_cloudify快速上手.doc

 

4.5.6           开发方式

 

参看《补充资料_Cloudify开发上手.doc

 

4.5.7            后续工作

 

 

上一篇 从项目开发到云端架构(13)  : http://timeson.iteye.com/blog/1696300  

 

 

 

下一篇 从项目开发到云端架构(15)  :  http://timeson.iteye.com/blog/1701957

  • 大小: 20.1 KB
  • 大小: 27.3 KB
  • 大小: 15 KB
  • 大小: 43.6 KB
  • 大小: 73 KB
  • 大小: 30.9 KB
  • 大小: 25.5 KB
  • 大小: 30 KB
1
3
分享到:
评论
16 楼 huyang406 2016-03-28  
楼主写的太好了!顶一个,最近刚好要做一个clouify相关的项目,看了楼主的文章对cloudify有了一定的认识,不过离做项目还比较远,不知道楼主方不方便把clouify快速上手和clouify开发上手,两个文档给发下!邮箱huyang406@163.com谢谢!
15 楼 fengqiao678 2014-05-20  
看了楼主写的loudify的文章,感觉楼主理解的好透彻,我们最近也在研究cloudify,很多东西不知道从何入手,请问楼主有cloudify相关的中文资料吗?可否发我一份,谢谢啦!fengqiao678@126.com
14 楼 fakey 2014-02-27  
楼主,你写的文章太精彩了,学习了,非常感谢!能否把补充资料打包发送给我呢?
非常感谢!!
zhangying20@foxmail.com
13 楼 chenenbang 2014-01-23  
好文,必须顶下。
能不能把cloudify入门上手和开发上手发给我啊 万分感谢 邮箱:39077057@qq.com
12 楼 chenenbang 2014-01-23  
好文,必须顶下。
能不能把cloudify入门上手和开发上手发给我啊 万分感谢 邮箱:39077057@qq.com
11 楼 viso8888 2013-08-26  
非常感谢楼主,刚刚准备开始学cloudify,正愁找不到材料,请楼主把cloudify入门上手、开发上手发给我吧,如果还有其他材料也请发给我,十分感谢! 邮箱:faj8018@163.com
10 楼 jeast 2013-07-20  
楼主,写得非常到位,难得一见关于PAAS好博文,楼主能否分享些辅助资料,如《cloudify快速上手》, 邮箱:openitmi@163.com,谢谢!
9 楼 shuaizhihu 2013-04-22  
非常感谢楼主的精彩剖析,能不能把cloudify入门上手和开发上手发给我啊 万分感谢 邮箱:342315465@qq.com
8 楼 wxz859681117 2013-04-16  
楼主,写得很透彻啊,学习啦,全看完了,希望能发一下《辅助文档》参阅一下,多谢啦!我的邮箱:wxz859681117@yahoo.com.cn
7 楼 lifuqiong00 2013-01-25  
写的很透彻清晰,能否给我一份?lifuqiong00@126.com
6 楼 hjswust001 2013-01-10  
timeson 写道
呵呵,是其他文档,没有包含在这里

如果你需要,你留下邮箱地址,我发给你

huangjunswust@foxmail.com
5 楼 hjswust001 2012-12-21  
求PaaS、架构的各种资料
huangjunswust@foxmail.com
楼主有cloudify的相关资料吗,这个平台我感觉不错,因为是基于Java的,但资料只有英文的。。Cloudfoundry资料多,但开发语言是Ruby不便于看源码和扩展。

4 楼 timeson 2012-12-16  
呵呵,是其他文档,没有包含在这里

如果你需要,你留下邮箱地址,我发给你
3 楼 hjswust001 2012-12-15  
参看《补充资料_cloudify快速上手.doc》
在哪儿呢
2 楼 timeson 2012-10-17  
该文章其实是一个系列,主要阐述paas平台的特点和架构模式

对于paas来说,你参看《从项目开发到云端架构(11)》章节

如果你要对整个云端都要了解,参看《从项目开发到云端架构(10) 》,有个简单的说明

另外有张图片,也许能帮助你作了解:
1 楼 ltian 2012-10-17  
云计算的特征有哪些,这个项目如何体现的,期望楼主能为我们总结和扫盲!感谢楼主的奉献!

相关推荐

    模拟云端系统项目

    【模拟云端系统项目】是一个综合性的IT项目,它结合了前端和后端技术,旨在构建一个功能完善的云端应用。...这样的项目实践能帮助开发者深入理解云端应用的开发流程和架构设计,提升在分布式系统中的实战能力。

    云端第三代系统开发

    在当前数字化时代,"云端第三代系统开发"是一个重要的议题,它涉及到如何利用先进的技术构建高效、易用且灵活的云服务平台。在这个系统开发过程中,Java作为主要编程语言扮演着核心角色。下面我们将深入探讨这个话题...

    云端系统源码第二版

    云端系统源码第二版是一个...综上所述,云端系统源码第二版是一个涉及多方面技术和实践的综合项目,涵盖了从底层基础设施到上层应用服务的全方位设计。深入理解和掌握这些知识点对于开发、运维和管理云端系统至关重要。

    android基于webservice云端运用最新代码EasyEnglish

    在Android开发中,结合Web服务(Webservice)可以实现丰富的云端功能,比如数据同步、远程API调用等。"android基于webservice云端运用最新代码EasyEnglish"是一个示例项目,展示了如何在Android应用中集成Webservice...

    wiki云端知识库平台项目

    以上内容仅是对“wiki云端知识库平台项目”可能涉及的技术栈和概念的一个概述,具体实现可能根据开发团队的选择和技术栈有所不同。对于学习者来说,深入理解并掌握这些知识点,将对个人的技能提升和未来职业发展...

    鸿蒙Linux+项目文档+开发工具+harmonyOS+在线开发地址.rar

    综上所述,这个压缩包是鸿蒙OS开发者的一站式资源库,涵盖了从系统底层到应用开发的各个环节,对于想要涉足鸿蒙OS领域的开发者而言,是一个宝贵的资料集合。通过深入学习和实践,开发者可以更好地掌握鸿蒙OS的开发...

    自制云端脚本获取器

    “云端”意味着它涉及到云存储或云计算的服务。“脚本”指的是可执行的代码文件,如JavaScript、Python等,可能是网页脚本或者其他类型的程序。“获取器”和“下载器”则说明了工具的功能,即获取并下载云端的脚本...

    C#项目开发全程实录-源代码

    通过研究这些源代码,初学者可以学习到实际项目开发中的最佳实践,而有经验的开发者则可以借鉴其中的设计模式和问题解决策略。无论是独立学习还是团队协作,这个资源都能提供宝贵的经验和洞察。

    悟空项目管理-基于Spring Cloud Alibaba微服务架构 +vue ElementUI的前后端分离项目管.zip

    9. **部署与运维**: 项目可能还包含了部署和运维相关的文档,例如Dockerfile或者Kubernetes配置,帮助开发者将应用部署到云端或本地环境。 这个项目不仅提供了实际的代码实现,还可以作为学习微服务架构、前后端...

    SRA2021-G03-项目开发计划1.71

    【SRA2021-G03-项目开发计划1.71】是关于一...总之,"SRA2021-G03-项目开发计划1.71"是一个全面的项目管理文档,它涵盖了项目从启动到完成的所有关键环节,旨在确保团队高效协作,成功开发出满足需求的云端知识库APP。

    SRA2021-G03-项目开发计划1.81

    总结,SRA2021-G03-项目开发计划1.81是一个旨在构建云端知识库APP的详尽蓝图,涵盖了项目从需求分析到实施、测试、上线及后续维护的全过程。通过这个计划,团队能够有序地进行开发工作,确保知识库应用能高效、安全...

    云计算系统架构文档 汇总上

    DevOps 从云端到地面 熊节 pdf DevOps 让持续交付成为可能 乔梁 pdf eBay技术平台:掌控十亿级交易数据 Tony Ng pdf Facebook大数据实时分析案例分享 Uri pdf Java EE 7 平台:应云而生 Tyler Jewell pdf JS ...

    JSP+SSM项目-云端学习系统的Java毕业设计.rar

    JSP+SSM项目-云端学习系统的Java毕业设计.rar 【项目技术】 开发语言:Java 框架:ssm+jsp 架构:B/S 数据库:mysql 【演示视频-编号:345】 https://pan.quark.cn/s/b3a97032fae7 【实现功能】 端学习系统在...

    SAAS架构设计模式SAAS架构设计模式

    它的出现是为了解决软件开发和维护的成本问题,通过将软件部署到云端,提供基于互联网的软件服务,用户可以通过互联网访问和使用软件。 SAAS 架构设计模式的优势包括: 1. 用户方面:拿来即用,无须维护,按需使用...

    构筑大语言模型应用:应用开发与架构设计.zip

    《构筑大语言模型应用:应用开发与架构设计》是一份深度探讨大语言模型在实际应用中的开发和架构设计的资源集合。这份资料来源于GitHub上的开源项目phodal/aigc,旨在帮助开发者理解和利用大语言模型的技术,提升...

    Android-物联网环境监测数据中心-物联网项目开发

    在物联网项目开发中,可能还需要特定的物联网协议解析或设备模拟插件。 3. **物联网架构**: 物联网环境监测系统通常包含传感器节点、网关和云端平台三个部分。传感器节点负责采集环境数据,如温度、湿度、光照等...

    Android项目开发报告 (2).pdf

    总结,本Android项目开发报告全面展示了项目开发的各个方面,从底层的平台架构到上层的功能实现,再到数据库和项目组织,为开发者提供了清晰的开发指南。通过这样的报告,不仅可以评估项目的成熟度,也便于团队协作...

    微信小程序项目源码云开发cloudtest.zip

    9. **版本控制**:在项目开发过程中,版本控制非常重要。微信开发者工具允许开发者进行代码版本管理,便于团队协作和回滚更改。 10. **发布与更新**:完成开发后,开发者可以在微信开放平台上提交审核,待审核通过...

    springboot集成netty,使用protobuf作为数据交换格式,可以用于智能终端云端服务脚手架

    本项目“springboot-netty-protobuf-master”旨在提供一个基础架构,它利用了Spring Boot的便捷性以及Netty的高效网络通信能力,同时采用Google的Protocol Buffers(protobuf)作为数据交换格式,确保数据传输的高效...

Global site tag (gtag.js) - Google Analytics