每一个可以努力的日子,都是一份厚礼。
Redhat OpenShift 云计算平台试用小记
OpenShift 是 redhat 公司推出的一个 PaaS 云计算应用平台,开发者可在上面构建、测试、部署和运行应用程序,它支持 Java, Ruby, Node.js, Python, PHP, Perl 等众多语言环境和开发框架,并且支持 MySQL, PostgreSQL, MongoDB 等数据库服务。最重要的是,它的整个体系都是开源的,这和 IaaS 开源云计算软件 OpenStack 一样,对于拥有硬件资源而希望部署云的服务提供商来说很有研究价值。
一、再谈云计算
云计算这个名词已经被炒翻了天,但到底什么是云,很多人其实仍在云里雾里。根据 NIST 的权威定义,云的服务模型,分为以下三种:
- Software as a Service (SaaS):软件即服务模型,用户直接使用构建在云端的软件。例如,Google Docs, Salesforce.com,甚至是 Web Email 也是云计算,因为我们抛弃了客户端。
- Platform as a Service (PaaS):平台即服务模型,用户使用云平台所支持的语言和工具,开发应用并部署在云平台。例如,Google App Engine, Force.com,国内的 Sina App Engine
- Infrastructure as a Service (IaaS):基础架构即服务模型,提供处理器、存储、网络等(虚拟)硬件资源给用户,用户可任意安装软件和开发环境,包括安装操作系统。例如,Amazon EC2, Joyent,国内的阿里云
可见,三种模型从应用到平台再到架构,越来越底层,用户得到的可操作性和灵活性也越来越大。
Red Hat 称,IaaS 和 PaaS 的特定实现既不应该是供应商锁定,也不应该受控于供应商。不同的架构阻碍了不同云之间的数据迁移。为了让云计算保持开放和活力,云端的实现应该走向真正的开放,不仅仅是在许可证上,而是也应该在管理方式上。OpenShift 将在这方面起一个标杆作用。反观某浪的 app engine,限制本地 I/O 读写和很多函数,要求开发者使用该平台的特有版本,这样一个封闭的环境实在是让人吐槽无力。
二、开通 OpenShift 服务
目前在 Red Hat 的 OpenShift 上可以免费创建三个 app,提供 1.5G 内存和 3G 存储空间。
1. 使用 Web 方式
(1)注册
通过注册链接进行登记,这个很简单,不多说。
(2)新增应用
注册并 Email 激活完成后,登录管理后台,添加你的第一个应用。
这时 PaaS 的优势就开始显现了,它提供了各种语言的平台给你选择,包括 Ruby, Python, PHP 以及当前热门的 Node.js 等等,与此同时还提供一些开发应用框架的一键安装,比如 ROR, WordPress 等等。
选好自己的应用类型后,会进入配置页面,需要给你的应用添加一个二级域名。二级域名由“应用名”和“命名空间” 两部分组成,“命名空间”是和帐号绑定的,以后新增其他应用也会用到,不能再更改(已经可以更改了,不过所有应用的URL都会改变,成本很大),需要慎重选择。另外,应用创建后还可以绑定自己的顶级域名。
这样,应用就创建成功了。接下来就是向服务器上传自己代码。OpenShift 使用 Git 来部署代码,你需要熟悉 Git 命令行的操作。另外值得一提的是,如果你按照上面 Web 的方式创建了第一个应用,在部署代码前你需要设置一个 RSA 密钥。
这和 Amazon AWS 平台恰恰相反,AWS 会在云端生成密钥对,并将私钥下载给你。而这里是让你自己生成公钥和私钥,并将公钥上传给 OpenShift。虽然用户自己生成密钥看上去更安全,但无形中也增加了用户的使用壁垒。下面就是在 Linux 下使用 openssl 命令生成密钥对的方法
$ openssl genrsa -out privatekey.pem 1024 $ openssl rsa -in privatekey.pem -out publickey.pem -pubout |
用文本编辑器打开 publickey.pem,将里面的字符串粘贴到上图中的网页文本框中提交即可。
2. 使用命令行方式
如果使用命令行方式,则会自动创建密钥对,比较方便。参考“如何开始”指南,Windows 用户需要安装 cygwin 模拟 Linux 环境,包括 openssh、ruby、make、gcc、git 等等。考虑到 Ubuntu 用户比较多一些,下面是 Ubuntu 的操作流程
# 安装rhc工具 $ sudo apt-get install git ruby rubygems $ su -c 'gem install rhc' # 创建命名空间(慎重选择名字) $ rhc domain create -n mydomain -l rhlogin Password: (type... type... type...) # 创建应用 $ rhc app create -a myapp -t php-5.3 Password: (type... type... type...) # 部署代码 $ cd myapp $ vim php/index.php (Make a change... :wq) $ git commit -a -m "My first change" $ git push |
3. 添加模块
一般应用都需要使用数据库以及其他辅助工具,OpenShift 也提供这些工具,十分方便。在网页管理后台中点击“My Applications”进入应用,选择“Add Cartridges”就可以看到有很多数据库可供使用,包括 MySQL, PostgreSQL 以及 NoSQL 数据库 MongoDB 等等。
或者使用命令行工具添加模块
$ rhc app cartridge add -a myapp -c mysql-5.1 |
三、搭建 wordpress 博客
现在 OpenShift 为了简化应用创建,提供了 WordPress 等常用软件的一键搭建,在上面“新增应用”的截图中都可以看到。不过为了熟悉代码部署的方式,我们还是使用 rhc 命令行把新建 wordpress 的整个流程走一遍,这也可以作为搭建其他语言类型应用的参考。
# 新建一个名为wordpress 的 php-5.3 应用 $ rhc app create -a wordpress -t php-5.3 # 添加 mysql 支持 $ rhc app cartridge add -a wordpress -c mysql-5.1 # 下载 wordpress 代码到本地 $ cd wordpress $ git remote add upstream -m master git://github.com/openshift/wordpress-example.git $ git pull -s recursive -X theirs upstream master # 上传代码到 openshift 服务器 $ git push |
完成。访问你的 wordpress:
http://wordpress-$yournamespace.rhcloud.com
默认帐号为admin/OpenShiftAdmin
如果要绑定自己的域名,可以用以下命令:
$ rhc-ctl-app -a wordpress -c add-alias --alias blog.lovelucy.info |
然后添加 blog.lovelucy.info 域名的 CNAME 到 wordpress-$yournamespace.rhcloud.com
需要注意的是, git push 会把本地仓库推送到远端的代码仓库里,同时还会重写远端应用目录下的 repo 目录(就是 www 服务的根目录)。而这个过程似乎是覆盖式的重写,如果里面有不在仓库里的文件或目录,之后也会丢失。在 WordPress 管理页面里更新插件安装中文包,然后经过 push 后这些都没了。这也意味着,这个博客的更新,主题安装等都需要先在本地搞好、提交到本地的 git 仓库之后,通过 push 上去,才算可以使用,直接在 WordPress 管理界面更新、安装主题等,会被以后的 push 灭掉。或者可以先 pull 再 push。关于 git 的使用,我也才刚刚开始学习。
经过测试,发现服务器 I/O 性能十分不错。Ping 了一下,欧洲和美国的用户访问都很快,只不过 Red Hat 可能没有在亚洲部署服务器,在中国访问网站连接速度不是很理想。
四、总结
根据 NIST 的定义,云计算服务至少应该包含如下几个特征:
- On demand 按需服务。用户可以自己定义自己需要多少资源,灵活配置,不必为用不到的资源付费。例如某个网站应对高访问量只需要更多的 CPU 和 内存,而硬盘存储则不必很多。
- Broad network access 可访问性。不论你是使用电脑、笔记本、手机,不论你使用什么网络,只要你连接上了 Internet,你就可以获取到你的计算资源。所以说云是瘦客户端的。
- Resource pooling 资源池。云的提供商应当给用户提供计算、存储、网络等资源,用户按需索取,而不必理会底层细节。例如云服务供应商的服务器可能遍布各大数据中心,但对用户来说,他看到的只是 CPU 内存等资源,他不需要知道自己所使用的资源到底在哪一台物理设备上,也就不会受限于这些因素。
- Rapid elasticity 快速伸缩。用户可以没有限制地对自己的资源进行调整,平滑过渡,立即生效。例如给自己的服务器增加计算能力,或者获取更多的网络带宽,指令发出后自动执行。
- Measured service 服务可测量。云系统应该可以监控、报告自身资源的使用情况,甚至自动进行调整优化,无需人工干预。另外就是可以根据使用量来进行计费。
前两年的时候,云计算、物联网等概念炒作得十分火热,国内却基本没有看到任何实质的产品出现。政府跟风起哄,投入了很多,基本上都是被伪装为砖家的商人给骗了,资金都被挪去搞了房地产。现在,物联网基本上也没怎么提了,不过整个数据中心的技术却是已经有了实质性的进展,很多主流互联网公司都在自己建立数据中心。海量存储、MapReduce 并行计算,虚拟化等等技术不断在进步和创新。在借鉴国外先行者成功的基础上,国内很多互联网公司也有了不少积累。在移动互联网时代,由于终端设备的计算能力限制,云计算会有非常大的发展前景。
参考链接:
在OpenShift中部署ROR应用
在Red Hat OpenShift平台部署Django应用
OpenShift 各种语言框架的上手指南
这篇文章由lovelucy于2012-06-10 18:15发表在云计算。你可以订阅RSS 2.0 也可以发表评论或引用到你的网站。除特殊说明外文章均为本人原创,并遵从署名-非商业性使用-相同方式共享创作协议,转载或使用请注明作者和来源,尊重知识分享。 |
Chrome for iOS 33.0.1750.21 iPhone iPhone OS 6_0_1 like Mac OS X) AppleWebKit 大约10年前
服务器上新建的文件不会自己加进git版本管理,所以也pull不回来。。。
可能要先用ssh把文件提交到版本库才能pull回来(不知道能不能这样)
Google Chrome 37.0.2062.120 Linux 大约9年前
对啊,到底能不能这样,求解啊
Google Chrome 37.0.2062.120 Linux 大约9年前
怎么提交到版本库?
Google Chrome 21.0.1180.92 Windows 7 大约11年前
按照楼主的方法终于解决了困扰几个星期的问题了,此举甚是用于OpenShift绑定域名后,强制HTTP转HTTPS,感谢楼主~
Mozilla Firefox 33.0 Windows 7 大约9年前
遇到这个问题了,怎么解决的 🙄
Mozilla Firefox 23.0 Windows XP 大约11年前
已和谐。
Google Chrome 26.0.1410.43 Linux 大约11年前
什么已和谐?
Google Chrome 26.0.1410.43 Windows 7 大约11年前
不知道Openshift的限制是什么?
Google Chrome 26.0.1410.43 Windows 7 大约11年前
基本没有限制,特别是不限制本地读写。
目前免费版最多使用 3 个 Gear,也就是可用内存和计算能力有上限。另外就是在亚洲没有节点,从中国访问略慢。
Google Chrome 26.0.1410.43 Linux 大约11年前
我现在用的是sina的sae。不知道redhat花了这么大的血本,免费的空间能用多久?如果不是开发者,sae没有啥免费的云豆
Google Chrome 26.0.1410.43 Windows 7 大约11年前
redhat 支持多种语言平台,是标准的 PaaS,新浪目前好像只支持 PHP, Java, Python,各取所需吧。
我感觉 SAE 才叫下血本,据说他们的开发团队已经都离开做别的项目了。盈利有压力啊~
Google Chrome 21.0.1180.89 Windows 7 大约11年前
我在网页创建的的第一个应用,然后在windows上cmd的命令行上进行git setup,自动帮我上传了key,可是我在这个cmd上进行git push的时候一直报错,Permission denied (publickey,gssapi-keyex,gssapi-with-mic).fatal: Could not read from remote repository.你知道是什么原因吗
Google Chrome 23.0.1271.97 Linux 大约11年前
应该没有“自动上传key”这个动作吧。。
你需要自己生成key的,然后把公钥和私钥放在 C:\Users\username\.ssh\ 下面,id_rsa.pub和id_rsa
然后在 OpenShift 的网站后台把公钥的内容填上去。
Google Chrome 21.0.1180.89 Windows 7 大约11年前
现在openshift提供了自动安装wordpress的版本,所以吗,觉得如果自己不push的话,完全可以在server上安装主题什么的,你说的在本地更新的那个太麻烦了
Google Chrome 23.0.1271.97 Windows 7 大约11年前
自己在本地保存一份还是有必要的。万一哪一天云挂掉了还有备份 😛
Mozilla Firefox 17.0 Windows 7 大约11年前
我把我的openshift网站更换成自己的顶级域名。用https链接时会有安全证书无效的问题。修改.htaccess文件重定向链接,可是浏览器是先判断证书再重定向,也就是说修改.htaccess文件并不能解决安全证书无效的问题。请问有什么办法可以解决安全证书无效的问题?
Google Chrome 23.0.1271.95 Windows 7 大约11年前
这真的是浏览器的设定。只要你的访客一直是用http访问,普通人不会看到那个安全证书警告的。
Mozilla Firefox 17.0 Windows 7 大约11年前
听了您的话,我放心多了。可是,如果有人就是刻意要使用https链接访问呢?不排除有人这么做。
Opera 11.64 Windows 7 大约11年前
换用其它浏览器
Google Chrome 23.0.1271.95 Windows 7 大约11年前
你是第一个用 Opera 在我博客留言的用户 😈
Google Chrome 22.0.1229.94 Windows 7 大约11年前
openshift的空间可不可以关闭支持https的?
Google Chrome 22.0.1229.94 Windows 7 大约11年前
用.htaccess重定向所有https到http
Google Chrome 22.0.1229.94 Windows 7 大约11年前
这个代码好像没用?
Google Chrome 23.0.1271.97 Linux 大约11年前
保存为.htaccess文件,放在根目录
Google Chrome 22.0.1229.94 Windows 7 大约11年前
我的谷歌浏览器清理缓存了还是强制用https,哎
Google Chrome 22.0.1229.94 Windows 7 大约11年前
去 chrome://net-internals 进入 HSTS标签,然后删掉你的 domain 再试试
Mozilla Firefox 13.0 Windows 7 大约12年前
一直没有很了解云计算这个概念, 现在总算小有所获。但还有一个问题,一直困扰心中。 云 和 网络速度 是否挂钩?
Mozilla Firefox 14.0.1 Windows 7 大约12年前
“命名空间”是和帐号绑定的,以后新增其他应用也会用到,不能再更改
这个是可以更改的
Google Chrome 21.0.1180.60 Windows 7 大约12年前
登录去看了一下,确实可以更改了。项目进化速度真快。
Mozilla Firefox 14.0.1 Windows 7 大约12年前
试用了一下这个服务,访问速度挺快的,但是发现一个问题,就是在Firefox下面进入项目主页的时候会强制使用HTTPS链接导致访问出错。
不知道博主有没有遇到这个问题?
Google Chrome 21.0.1180.60 Windows 7 大约12年前
的确,Firefox 和 Chrome 如果检测到站点支持 https,都会默认使用 https 去访问。参考官方的讨论,清理掉浏览器缓存,然后强制指定 URL 为 http 访问一次即可。
Mozilla Firefox 14.0.1 Windows 7 大约12年前
看完官方的讨论,清了一次缓存,特别开了一个超级干净的Chrome(Portable),打开一样的结果……官方也没有给出一个解决方法什么的真头痛…… 😥
现在每天看着Firefox死机好几次我都在想要不要换成Chrome了……
Google Chrome 21.0.1180.60 Windows 7 大约12年前
Google 出品,必属精品,换吧