python paas_图文讲解OpenShift PaaS

OpenShift是什么、提供什么给开发者?

使用PaaS平台,您无需再像以前一样关注网络、操作系统、Web服务器、应用服务器,它们对于你来说是透明的,除了性能以外,你甚至可以忽略他们的存在。你只需要选择合适的语言、服务和中间件,并根据需求开发、升级、更新应用即可。

OpenShift是RedHat推出的PaaS平台,开源、开放,而且提供一定限额的免费资源供开发者使用。支持Java、Python、PHP、Perl和Ruby等多种语言,资源动态调度和分配。高可用,开发者无需为运维、系统管理烦恼,只需专注于应用本身即可。

稳定性和性能良好的PaaS能够提供我们一个环境,在这里,开发者的痛苦得以减轻。

OpenShift不仅集成了maven, Jenkins等各种常用的开发工具给开发者,还集成了wordpress,wrupat等常用的应用,以便非编程人员也能‘一键创建’属于他们的应用。除了OpenShift平台提供的语言、服务外,如果需要,你也可以轻松将常用的功能‘打包’成服务,方便使用。甚至你也可以使用源代码,在AWS或者物理/虚拟机上部署属于您自己的PaaS平台。

OpenShift架构:Broker和Node

OpenShift可由一个Broker结点,一个或多个Node结点构成。

开发者可以使用rhc、 Web控制台等工具向Broker结点发送REST请求,也可以直接通过SSH登录到应用所在gear(相当于一个小型的虚拟机),直接对应用进行操作。

Broker结点主要由broker和controller两个子项目构成,其中broker主要完成配置任务,而逻辑则实现于controller,controller子项目是整个OpenShift项目的核心之一(另一核心是node子项目,存储着平台数据/状态,以及通过接口实现授权、DNS等功能。此外,还有broker-util子项目提供命令,方便我们管理Broker结点。

消息组件‘实现’用的是gem 'mcollection-client',更多介绍可以阅读https://docs.puppetlabs.com/mcollective/

Node结点主要就是存放用户应用以及管理它们。每个gear就是一个由软硬件资源构成的容器,放置着用户应用代码和所使用的cartridge实例。同一个gear内的cartridge像在本地一样,是可以直接通信的;而不同gear之间则可以通过端口转发实现,相同原理,部分cartridge我们可以像在本地一样操作它们。

node核心部分可以进一步拆分为以下几点:

gear, 也称之为application container;

用户的应用代码, git repo; cartridge, 还可折分,下文讲解;

前端Web服务, 和Apache相关; 前端代理服务, 和HAProxy相关;

node, 狭义上‘结点’, 比gear大一级的容器, 只不过它里面存放着的是gear, 还有就是它可以配置硬件配额;

unix user, 传统的linux账号, 方便资源的限制与隔离而创建的, 创建gear时会一同创建。

此外,同Broker结点一样,Node结点也有node-util子项目提供命令,方便我们管理Node结点或者位于Node之下的众多gear, cartridge。

最终用户访问应用时,根据携带的参数,通过Apache转发可直接到达指定gear处理,快捷高效,而且安全性得到提高。

这张图,是上图的另一版本。路线基本一致,开发者/最终用户通过REST API发送请求,经过负载均衡处理,到达Broker结点。Broker处理请求,完成DNS, SSO(单点登录)等任务。然后通过mcollect消息总线传递到Node结点,让其处理相应操作。这里说明一下,并不是所有操作请求都需要传递消息到Node结点,还有就是Node结点同样可以向Broker结点传递消息,比如反馈处理信息等。

扩展OpenShift,提供自己的cartridge

如果你有兴趣对OpenShift一探究竟,务必会涉及到一些概念,在此先交代一下:

Broker – 大脑,管理着整个平台,选择合适的Node结点处理请求

Node – 主要由众多的Gear组成 Plugin - Auth,DNS 等

Gear – 资源容器,约束着CPU、内存、存储等软硬件资源;并负责运行应用

Cartridge – 技术推栈,如语言、框架、服务,或者常用被打包的常用功能

Application – Cartridge的载休,以及应用代码本身 Scaled/Scalable Application – 多个gear协同构成的应用

Client Tools – CLI, Eclipse, Web Console等创建或管理应用的工具

除了一探究竟,可能你还想 ..

基于OpenShift搭建属于自己的PaaS平台

提供更多的扩展功能,将其打包成‘服务’

--- --- ---

“评判一个云计算产品好坏,不应该去看那些精心设计的产品手册,也不需要去听那些云架构师们的各种吹嘘,你要做的只是去用它,体会它,然后评估它解决了你哪些问题,是否好用,是否能够自服务而不需要经过培训,未来是否有很好的扩展性,等等。”

使用,体会,扩展!

从 DIY 开始 –手动安装、配置软件,发现问题,解决问题。并实现自动化

从扩展 Quickstart 或 sample 开始

从参考类似的 cartridge 开始

–类似Apache服务?

–类似Java EE应用服务?

–类似数据库等嵌入式服务?

PaaS平台提供了多种服务:语言、服务、集成工具、时钟等等,类型多种多样。但这显然还不够,要想最大限度的减轻开发者的工作量,减轻维护难度。把通用、类似的功能“打包”成服务,通过API接口调用,开发人员在使用过程中不必关心内部实现,也不需要自己维护。而在OpenShift中,这些服务统一称之为"cartridge"。

接下来对cartridge做简单介绍,感兴趣的读者可以自己查阅相关文档,提供自己的cartridge。

上文提到cartridge还可拆分:

menifest.ymls说明文件, 也是cartridge的身份证, 创建cartridge实例时会用到;

cartridge项目本身, 一般由bin, configuration, connection-hooks, hooks, lib五部分组成, 但可适当增减;

cartridge实例, 当你使用cartridge时, 根据‘不同cartridge类型’会得一份与之相关的拷贝代码或者进程。

迷你型Cartridge:

+- bin |  +- setup

|  +- control

+- env

+- metadata |  +- manifest.yml

这就实现了一个类似"Hello World"的Cartridge,你也知道线上的cartridge比这复杂多了。

cartridge的重要参数之一Endpoints

部分类型的Cartridges 必须明确声明它们绑定到哪些端口,并提供与之相关的有意义的变量名,供我们选择使用,比如:

–预留的IP 地址,用于绑定,提供服务

–gear内的本地端口(前面说过gear相当于小型的虚拟机)

–(可选) 公网代理端口,供用户使用(典型的例子:在本地访问服务器上的mysql数据库)或不同gear之间的互相访问。

比如:

- Private-IP-Name:   (如 IP => OPENSHIFT_shortname_IP)

Private-Port-Name: (如 HTTP_PORT)

Private-Port:      (如 8080)

Public-Port-Name:  (如 HTTP_PROXY_PORT)

模式,社区发展

企业私有云

为SaaS服务提供支撑平台

以OpenShift为基础,提供公有云服务

代码更新升级速度快,社区发展迅速,讨论统计数据:

Google+ --> https://plus.google.com/communities/114361859072744017486

Github --> https://github.com/openshift/origin-server

openshift.com --> https://www.openshift.com/

OpenShift官方文档 --> http://openshift.github.io/

... ...

除了提交代码外,参与开源的方式还有多种。如果您想参与开源,不妨现在就动手!

写技术博客

试用新发布的功能、报告问题

完善文档、翻译文档

帮助用户成长

提交代码、新特性

审查开源的代码

加入 Google+ 讨论、讨论你想拥有的特性

本文部分文字、图片来源于网络,本文采用知识共享“署名 3.0 中国大陆”许可协议授权。

在此感谢 http://writings.io

原文链接:http://blog.csdn.net/restkuan/article/details/8821489

你可能感兴趣的:(python,paas)