从项目开发到云端架构 13

2017-11-27 14:52:08 154

4.4  Openshift

       去年5月,Redhat在波士顿峰会上启动了PaaS平台项目OpenShift。时隔一年之后,Redhat宣布将OpenShift Origin项目开源。Origin既是PaaS平台OpenShift的开源代码库,也是其社区与项目的名称。Openshift OriginOpenshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务。

 

       OpenShift PaaS平台包含许多开发者喜爱的功能,如MongoDBNode.js;简便的命令行和Web界面;支持开发者插入自己喜爱的框架;它是首个支持企业级JavaPaaS平台,支持JEE6JBoss和其Eclipse集成开发环境以及MavenJenkins自动化。而且,使用OpenShift的人数及社区人数在不断增长。

 

4.4.1            简单介绍

OpenShift提供比其他PaaS更多的灵活性,特点如下:

  •  支持用于JavaPythonPHPPerlRuby的更多的开发框架,包括 SpringSeamWeldCDIRailsRackSymfonyZend FrameworkTwistedDjangoJava EE

  • 包含SQLNoSQL数据存储和一个分布式文件系统;

  • 简便的命令行和Web界面;

  • 支持开发者插入自己喜爱的框架;

  • 支持企业级JavaPaaS平台,支持JEE6JBoss

  • Eclipse集成开发环境以及MavenJenkins自动化;

  • 通过支持Jenkins,将OpenShift扩展至“构建即服务(BaaS)”,允许在云中更快的构建;

  • 支持Maven,发布应用程序依赖项解析作为构建流程的一部分,从而避免了开发人员下载依赖项,把所有东西编译成一个巨大的Java程序文件并上传到云。

 

 

4.4.2         总体架构

Platform

主要有两个部分组成:BrokerCartridges

 

 


矽控物联
 

44-01 Platform Overview

 

  • Broker:处理所有外部进来的请求,然后deliver给正确的处理模块。同时处理用户登录、DNSapp状态、app的管理等功能。当然用户会使用CLIweb或者JBoss工具和Broker交互

  • Cartridges:为app运行提供环境。每个Cartridge只能提供一种运行环境,比如Python或者Mysql,不能同时提供好几种。Cartridge分为两种: Framework cartridgeEmbedded cartridge,前者是提供web能力的服务,后者是DBDB web接口这类的服务。一个app显然需要至少一个Framework cartridge

 

 

系统资源和应用容器

系统为App运行提供的容器。这里有两个概念:GearNode

 

 


矽控物联
 

44-02 物理模式

 

  • GearGear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间

  • Node:一个Node中有多个GearNode就是一台物理机或者一台虚拟机。因为有些Gearapp没有在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 scalingBeta

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后缀文件。文件内容包括:nameversiondependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API

 

 


矽控物联
 

44-05 文件描述

 

 

App Descriptor

app的描述文件包括以下的属性:

  • Name

  • Version

  • Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Descriptor

  • Cartridge

  • Component

  • Connections:哪两个component需要互相通讯

  • Group Override:就是将不相关的Cartridge放到一个Gear里面去。

  • GearCPU、内存以及disk的配置

 

4.4.3          组件说明

 

 


矽控物联
 

44-06 Logical views

 

       StickShiftStickShiftopenshift的核心模块,他提供了运行整个Openshift的功能。每台VM或者物理机都必须安装一个stickshift包。它包括三个部分:

  • Controlleris 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:管理Gearapp

  • Common:顾名思义,上面两个模块的共同调用模块

 

       Proxy portsGear将自己内部的某个Cartridge暴露给外部调用,一般为了负载均衡或者供其他Gear调用。由HA proxy提供路由功能,即使是其他nodeGear,也可以访问到。

 

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

支持架构

SpringSeamWeldCDIRailsRackSymfonyZendTwistedDjangoJava EE

Spring for JavaRuby on RailsNode.js以及多种JVM开发框架

数据库

MySQL,MongoDB, MemBase,Memcache

MongoDB, MySQL and Redis

 

社区支持

采用Apache License 2.0许可,使得更多用户、开发者、供应商可以使用它,促使OpenShift的人数及社区人数在不断增长。

流水线方式的开源参与,支持几十个重要开发框架和应用服务,以及多种云基础架构部署、漏洞修复、文档及其它贡献。

定价模式

1FreeShift:是OpenShift PaaS的第一级,提供3Gear,是免费供用户使用的。它包括了自动扩展的能力,可选择编程语言,框架和数据仓库,到社区提供支持。

2MegaShift。提供16Gear,能获得红帽的技术支持。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、它是首个支持企业级JavaPaaS平台,支持JEE6JBoss和其Eclipse集成开发环境以及MavenJenkins自动化。可以支持Java EE6的平台即服务产品,在云上为Java提供全面的生命周期支持。

3OpenShift 基于开源和开放标准构建,应用程序在运行时环境中能够保持可移植性,支持开发者插入自己喜爱的框架。

4OpenShift依靠GitJenkinsMaven等标准开发工具,以及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 (#更换为@)