从项目开发到云端架构 13
4.4 Openshift
去年5月,Redhat在波士顿峰会上启动了PaaS平台项目OpenShift。时隔一年之后,Redhat宣布将OpenShift Origin项目开源。Origin既是PaaS平台OpenShift的开源代码库,也是其社区与项目的名称。Openshift Origin是Openshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务。
OpenShift PaaS平台包含许多开发者喜爱的功能,如MongoDB和Node.js;简便的命令行和Web界面;支持开发者插入自己喜爱的框架;它是首个支持企业级Java的PaaS平台,支持JEE6与JBoss和其Eclipse集成开发环境以及Maven和Jenkins自动化。而且,使用OpenShift的人数及社区人数在不断增长。
4.4.1 简单介绍
OpenShift提供比其他PaaS更多的灵活性,特点如下:
支持用于Java、Python、PHP、Perl和Ruby的更多的开发框架,包括 Spring、Seam、Weld、CDI、Rails、Rack、Symfony、Zend Framework、Twisted、Django和Java EE;
包含SQL和NoSQL数据存储和一个分布式文件系统;
简便的命令行和Web界面;
支持开发者插入自己喜爱的框架;
支持企业级Java的PaaS平台,支持JEE6与JBoss
其Eclipse集成开发环境以及Maven和Jenkins自动化;
通过支持Jenkins,将OpenShift扩展至“构建即服务(BaaS)”,允许在云中更快的构建;
支持Maven,发布应用程序依赖项解析作为构建流程的一部分,从而避免了开发人员下载依赖项,把所有东西编译成一个巨大的Java程序文件并上传到云。
4.4.2 总体架构
Platform
主要有两个部分组成:Broker和Cartridges
图44-01: Platform Overview
Broker:处理所有外部进来的请求,然后deliver给正确的处理模块。同时处理用户登录、DNS、app状态、app的管理等功能。当然用户会使用CLI、web或者JBoss工具和Broker交互
Cartridges:为app运行提供环境。每个Cartridge只能提供一种运行环境,比如Python或者Mysql,不能同时提供好几种。Cartridge分为两种: Framework cartridge和Embedded cartridge,前者是提供web能力的服务,后者是DB、DB web接口这类的服务。一个app显然需要至少一个Framework cartridge
系统资源和应用容器
系统为App运行提供的容器。这里有两个概念:Gear和Node。
图44-02: 物理模式
Gear:Gear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间
Node:一个Node中有多个Gear,Node就是一台物理机或者一台虚拟机。因为有些Gear的app没有在run,所以一般Node会超载,就是存放了超过限额的Gear
Applications
图44-03: app结构
Domian:每个用户只有一个Domain
App Name:每个app有一个unique的名字
Aliases:可以为一个app提供一个别名,也就是另外一个URL
App dependencies:就是app依赖于哪些Catridges
App Git Repository:就是用户把代码push上去的地方
Horizontal scaling(Beta)
Beta版的。。。目前Openshift就是用HA proxy来实现负载均衡。GIT部署作为end point for the application(个人理解就是真正部署的工具是GIT)。HA proxy的运作方式也很简单:如果有请求,那么把请求转发到正确的Gear即可。然后部署方式是:用户向HA proxy 的gear push代码。那么HA proxy将代码在分别push到每个运行的Gear上面去
图44-04: 水平扩展能力
Describing an application using descriptors
Openshift使用一个descriptor文件来build app。文件是YAML文件类型,就是yml后缀文件。文件内容包括:name、version、dependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API。
图44-05: 文件描述
App Descriptor
app的描述文件包括以下的属性:
Name
Version
Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Descriptor
Cartridge:
Component:
Connections:哪两个component需要互相通讯
Group Override:就是将不相关的Cartridge放到一个Gear里面去。
Gear:CPU、内存以及disk的配置
4.4.3 组件说明
图44-06: Logical views
StickShift:StickShift是openshift的核心模块,他提供了运行整个Openshift的功能。每台VM或者物理机都必须安装一个stickshift包。它包括三个部分:
Controller:is a Rails Engine (plugin) which includes a REST API, business logic and state management for the PaaS platform. It also includes a set of plugin APIs for DNS management, authentication, data/state storage, and broker-node communications.
Node:管理Gear和app
Common:顾名思义,上面两个模块的共同调用模块
Proxy ports:Gear将自己内部的某个Cartridge暴露给外部调用,一般为了负载均衡或者供其他Gear调用。由HA proxy提供路由功能,即使是其他node的Gear,也可以访问到。
4.4.4 业务流程
Primary user interactions
就是一张创建一个PHP app的图例:
图34-07 创建应用的过程
Applciation deployment using Jenkins
可以使用Jenkins这个工具来帮助部署app,也就是通过它和openshift交互,来实现部署。
图34-08 持续交付的过程
4.4.5 安装部署
4.4.6 开发方式
4.4.7 和CF比较
Openshift | Cloud foundry | |
支持语言 | Java, Java EE, Python, Perl, PHP, Ruby | Java / Spring, Groovy/Grails, Ruby Rails& Sinatra, Node.js |
支持架构 | Spring、Seam、Weld、CDI、Rails、Rack、Symfony、Zend、Twisted、Django、Java EE | Spring for Java、Ruby on Rails、Node.js以及多种JVM开发框架 |
数据库 | MySQL,MongoDB, MemBase,Memcache | MongoDB, MySQL and Redis |
社区支持 | 采用Apache License 2.0许可,使得更多用户、开发者、供应商可以使用它,促使OpenShift的人数及社区人数在不断增长。 | 流水线方式的开源参与,支持几十个重要开发框架和应用服务,以及多种云基础架构部署、漏洞修复、文档及其它贡献。 |
定价模式 | 1、FreeShift:是OpenShift PaaS的第一级,提供3个Gear,是免费供用户使用的。它包括了自动扩展的能力,可选择编程语言,框架和数据仓库,到社区提供支持。 2、MegaShift。提供16个Gear,能获得红帽的技术支持。MegaShift起价计划按每月收取42美元,超过三个容量块对每个容量块按小时收费。 | 通过cloudfoundry.com,免费提供CloudFoundry软件的普通实例,旨在通过针对一些比较高级的中间件(面向云托管的应用程序)收取许可费来获利,但它不提供任何的服务级别协议。 |
平台组件 | JBoss Operations Network Cloud Admin Portal Image Toolchain Application Engine Cloud User Portal JBoss Developer Studio开发工具 | Router DEA(Droplet Execution Agency) CloudController HealthManager Services NATS(Message bus) |
技术特点 | 1、它提供了各种语言的平台给你选择,包括Ruby, Python, PHP 以及当前热门的Node.js等等,与此同时还提供一些开发应用框架的一键安装,比如 ROR, WordPress 等等。 2、它是首个支持企业级Java的PaaS平台,支持JEE6与JBoss和其Eclipse集成开发环境以及Maven和Jenkins自动化。可以支持Java EE6的平台即服务产品,在云上为Java提供全面的生命周期支持。 3、OpenShift 基于开源和开放标准构建,应用程序在运行时环境中能够保持可移植性,支持开发者插入自己喜爱的框架。 4、OpenShift依靠Git、Jenkins、Maven等标准开发工具,以及Eclipse等集成开发环境,简化应用程序开发和维护。 | 1、开发者可以保留自己的代码编写习惯,不需要做改变,在任何地方可以运行。满足多云需求,作为平台即服务开源项目,保护开发者不被锁定在任何特定云中。 2、该系统在设计时就已经设计成可自愈的,并且在各层级都可水平扩展,既能在大型数据中心里运行,也能运行在一台桌面电脑中,二者使用相同的代码库。 3、通过将CF源代码融合到GitHub的公共代码库中,与Gerrit集成进行代码审查,与Jenkins集成进行持续整合,新流程将社区代码贡献简单化,提高了代码质量,同时能够更清晰的看到代码变化。 4、对系统进行扩展不会导致正在活动的用户和应用停止服务,系统提供负载均衡和高可用的能力。 |
表44-1 :openshift 与cloudfoundry比较
来源:timeson http://timeson.iteye.com/blog
矽控电子®分别获“科技型中小企业”、“江苏省民营科技企业”、“创新型中小企业”认定,核心团队拥有十余年的硬件正向研发,生产制程,测试手法,品质控制经验。尤其擅长嵌入式ARM平台的人工智能与工控物联网产品,以及瑞芯微(Rockchip)、海思、NXP、新唐等平台的机器视觉类AIoT模组开发,为您的产品从创意到落地、批量市场化助力。
公司可提供从硬件设计(原理开发及PCB Layout),Linux驱动开发,PCB制板,SMT及接插件焊接,产品测试,产品老化全流程外包服务,收费合理,品质可靠。
定制开发找矽控,品质可靠省费用
垂询电话:0510-83488567-1 业务邮箱:wxdianzi#foxmail.com (#更换为@)