每个云计算厂商都想依托一个平台打造自己的生态圈,吸引云应用开发者,以差异化的竞争优势从中胜出。PaaS作为一个应用平台,是云计算里重要的一环,其重要性和必要性自然不言而喻。
对于大多数开发者来说,它们当然关心计算、存储以及网络情况,但他们往往只是关心它们的性能参数,而不想了解它们是如何实现的。他们不想跟操作系统打交道,整日考虑为系统打补丁、做升级、防范病毒,以及处理多台机器之间的网络安全、防火墙等花时间。
他们希望的是:根据最终用户需求写程序,并发布。系统管理,以及大多数运维工作,都交给PaaS平台自动完成。
PaaS,正好可以满足他们的这一需求。使用PaaS后,不必再为服务器烦恼,不用关心服务器本身的性能优化,做好应用的性能优化即可。不用为服务器上的安全问题操心,做好应用本身的安全即可。也不用关心网络问题,需要禁用什么服务,多台机器之间如何连通。
这对于缺乏系统维护、管理,以及每次应用代码更新都要折腾很长时间,甚至应用需要临时下线才能升级的用户来说可是福音。
PaaS与应用开发者走得最近。PaaS与应用关系最亲密,因此与开发者打交道的机会也最多。PaaS不仅仅是代码托管,还要提供环境以便运行应用。做好安全工作、负载均衡、监控等,公有云的话,还需要很好的统计/报表,还有就是能够检查到潜在的问题,报告给开发者。
PaaS通过滤除虚拟机、操作系统和其他与应用程序开发不相关的多余细节,进一步简化了程序开发的过程,从而促使开发者的工作效率和灵活性得到很大提高,它的开发过程更加简单,也更容易集成现有项目到云平台上。
对于一些常用功能,如邮件、短信通知、全文查找,日志分析,消息队列等以服务的形式提供。开发者只要使用即可,不用自己实现,由专业团队管理维护,不用担心。
目前,PaaS平台受限于非标准框架,再加上缺乏对多种应用服务的支持能力,因此导致很多应用在部署时出现问题。包括红帽、VMware等在内的一些厂商希望通过开源PaaS来改善应用部署的效果,同时也为云计算环境提供一个开源的架构。
但困难重重,一方面在于PaaS平台本身配置部署的困难;另外在于PaaS平台锁定了语言环境、创建的对象及服务以及数据,而开发者不喜欢被锁定。
----------------我是分隔线------------------
OpenShift是红帽提供的PaaS云计算平台,支持多种框架和语言,比如Java、PHP、Python和Ruby等,因此可以为云计算的开发人员提供更全面的功能集合。
OpenShift是开源的,而且目前开发者可以免费试用。开发者在使用过程中有什么不方便的或者需求不能满足的,可以给官方提建议;而企业则可以基于OpenShift搭建自己的私有云或者公有云。
使用OpenShift,你可以享受到:
下面简单介绍一下,在OpenShift中所使用到的主要技术。
实现broker+controller组件和Web控制台所用到的Web框架。
您并不一定要成为Rails高手,但至少您得会:
在OpenShift中broker组件主要使用Rails来实现配置,但主要业务逻辑却实现在controller组件。也就是说它们两者结合才算是一个Rails项目。 而Web控制台则是一个独立的Rails项目,在技术上主要向Broker结点发起REST请求。通过浏览器操作,比较符合非编程人员习惯,便于理解。如果你经常喜欢用命令行,则完全不用在浏览器上操作也能完成工作。
二 BIND 实现DNS
BIND系统由4个主要部分组成:
相关技术:
nsupdate 实现动态DNS的工具。使用简单:
nsupdate $1
key $2 $3
update $4 $6 1 $5 $7
send
EOF
route53 (可选) -- 为了使用AWS上的Route 53来编写的动态DNS插件,允许在OpenShift使用AWS上的Route53 DNS服务来发布应用。
此外,还可选择使用avahi,本人对avahi也不熟悉,在这里引用网络上搜索到的解释。
Avahi 是 zeroconf 协议的实现。它可以在没有 DNS 服务的局域网里发现基于 zeroconf 协议的设备和服务。它跟 mDNS 一样。
配置HTTP可用于“负载均衡”
配置TCP则可用于“端口转发”
在OpenShift中有3个地方与HAProxy相关:负载均衡,端口转发(可让用户直接操作mysql等服务,或者实现不同gear之间通信),还有就是scaling应用(创建应用时,可以选择是否scaling,默认为否)
HAProxy使用简单,在haproxy.cfg中的前端配置好监听address:port和要转发到后端service,运行haproxy -f
即可。
更多配置策略可参考:http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
通过设置cgroups可以对CPU, 内存,网络资源,硬盘等资源进行约束。更多介绍请参考官方文档:
Managing system resources on Red Hat Enterprise Linux 6
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Resource_Management_Guide/index.html
PAM是一种身份验证技术,而不是一种访问控制技术。也就是说,它不是解决“X用户有权限执行Y操作吗?”这样的问题,而是帮助解决了问题的前提“我怎么知道是真正的用户X?”
相关技术:
auth
kerberos
Kerberos和PAM类似,本身也是处理认证问题而不做访问控制。不过PAM是一种验证框架,而Kerberos是一种验证方法。它们往往一同使用,PAM用作封装,Kerberos是实际的实现。
Kerberos使用一个可信第三方(一台服务器)来完成整个网络的身份验证工作。不是让用户在其正在使用的机器上验证身份,而是让用户向kerberos服务提供自己的凭证(credential),它发给用户加密的凭证,用户把这个加密的凭证出示给其他服务,作为自己的身份证明。
除了kerberos外,OpenShift还提供了如下选择:
OpenShift默认使用的认证用的是mongo,而不是Kerberos,但其原理差不多,可供参考。
身份验证:一般公司都有“门禁”,持有本公司的‘卡片’才能进去。也就是说经理、普通程序员、保洁人员等只要有‘卡片’就能进。
访问控制:能进这个门,但并不代表什么你都能做。什么人能做什么,经理、普通程序员、保洁人员等身份不同,做的事也不同。
* 访问控制列表?!
没有所谓的访问控制列表(ACL),创建用户,gear等的时候就已经对权限有了比较细致的设置了。
OpenShift在传统信息安全“加密、访问控制、审计、认证、授权认证”中目前除了‘加密’,我们可以看到都做得比较好。
----------------我是分隔线------------------
以下部分内容算不上是技术,只是OpenShift平台上使用到。为了湊字数,就把它们也算上吧。
tito - 通过它可快速将我们的git项目打包成rpm包,供下载安装。
使用它创建项目框架,简单了解即可:
tito init #在git项目的基础上生成.spec配置模板文件
tito tag [OPTIONS]
tito build --test --rpm #根据.spec配置文件构建.rpm包
tito build [OPTIONS]
tito report
这似乎算不上是技术,不过还得啰嗦一下:尽管OpenShift大部分使用ruby语言实现的,但包管理器仍然使用redhat熟悉的rpm而不是gem。所以强烈不建议使用RVM, rbenv等来安装Ruby或者使用gem install xxx的形式来安装OpenShift组件,直接通过yum install xxx即可。
尽管这也很重要,但主要是简单的使用,技术上难度不是很大,简单提一下即可。
之前的项目没有使用ORM,而完全是自己实现的,真正是“想要什么就创建什么”。但这么做无论是创建,还是维护或者对于第三方使用者来说成本都比较高。后来使用了mongoid。mongoid是ruby世界里的一个gem,起到ORM的作用。
那么在数据库里到底存放着哪些数据呢?请我们来看看:
这也算?是的,Apache做为前端服务器经过适当配置,也能起到很大作用,比如:限制带宽、负载均衡、以及做一些安全处理。加载mod_rewrite模块,配置Rewirte规则可以实现URL的跳转,使URL 静态化。
文章到这也够长了,其它技术不说,并不代表它们并不重要。比如:selinux, iptables等。
似乎漏了点什么:我们上传的代码如何打包,解决依赖,如何运行,如何处理‘钩子’?答:请查看具体的cartridge如何实现。
----------------我是分隔线------------------
PaaS需要提供云编程环境,因此就编程而言,开源有利于PaaS的推广,也有利于丰富平台上的应用。不过,但考虑到自身的利益,厂商采用开源与闭源的混合模式可能比较现实。
PaaS还要提供丰富的开发工具给更多的应用开发者。从应用起步做PaaS更易成功,因为PaaS与应用更接近。
好了,文章最后我们来看看OpenShift的架构图。
其中,controller和node这两个子项目是核心,理解它们基本上你对整个PaaS平台就能一目了然了。整个PaaS平台大部分功能,都有现成解决方案,我们只要做选择并简单配置即可。而实际也正是这么做的,关键是如何将它们组织好,还有就是实现真正的业务逻辑。
官方文档之一:http://openshift.github.com/
官方网站:https://www.openshift.com/
源代码:https://github.com/openshift/
相关文档:https://access.redhat.com/knowledge/docs/OpenShift/ https://access.redhat.com/knowledge/docs/OpenShift_Enterprise/
部署安装我主要参考:http://www.krishnaraman.net/building-a-multi-node-openshift-origin-paas-from-source/ 不过坑比较多,请做好心理准备。
本文部分文字、图片来源于网络,本文采用知识共享“署名 3.0 中国大陆”许可协议授权。
在此感谢 http://writings.io