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