参考redHat的官方文章翻译而来:https://openshift.redhat.com/community/wiki/architecture-overview
OpenShift Origin
Openshift Origin是Openshift的开源版本,可以用来创建、部署以及管理云端的app。根据每个app使用到的服务的类型(数据库、语言环境),Oepnshift会为你提供一个文件系统为你创造运行环境(a template file system layout is provided)。同时也负责DNS服务
Platform Overview
主要有两个部分组成:Broker和Cartridges- 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
System Resources and Application Containers
这个标题的意思就是系统为App运行提供的容器。这里有两个概念:Gear和Node。- Gear:Gear提供了一个给Cartridges运行的容器,里面可以跑若干个Cartridge。为每个Cartridge提供有限的RAM和硬盘空间
- Node:一个Node中有多个Gear,Node就是一台物理机或者一台虚拟机。因为有些Gear的app没有在run,所以一般Node会超载,就是存放了超过限额的Gear
Applications
这个就不多写了,就是app的命名方式以及一些参数的名称- Domian:每个用户只有一个Domain
- App Name:每个app有一个unique的名字
- Aliases:可以为一个app提供一个别名,也就是另外一个URL
- App dependencies:就是app依赖于哪些Catridges
- App Git Repository:就是用户把代码push上去的地方
Primary user interactions
Simple Application Creation
就是一张创建一个PHP app的图例,还是比较通俗易懂的:Applciation deployment using Jenkins
可以使用Jenkins这个工具来帮助部署app,也就是通过它和openshift交互,来实现部署。具体细节欠奉: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上面去Describing an application using descriptors
Openshift使用一个descriptor文件来build app。文件是YAML文件类型,就是yml后缀文件。文件内容包括:name、version、dependencies以及app的架构等信息。Broker可以通过这个文件来创建和修改app,同时为用户提供管理这些文件参数的REST API。App Descriptor
app的描述文件包括以下的属性:- Name
- Version
- Requires:依赖列表,也就是Cartridge的列表,然后每个Cartridge都会有一个对应的Cartridge Descriptor
- Cartridge: 似乎和上面的差不多,不清楚了
- Component:Smallest piece of a software package which provides some functionality. Users don’t see below this level.
- Connections:哪两个component需要互相通讯
- Group Override:就是将不相关的Cartridge放到一个Gear里面去。In essence, embedding them together. These components will scale together.
- Gear:CPU、内存以及disk的配置
- Name: myapp
- Version: 1.0
- Requires: php-1.0, mysql, mongodb
- Connections:
- - php-1.0, mysql
- - php-1.0, mongodb
- Group override:
- - php-1.0, mysql
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,也可以访问到。