• 1
  • 2
  • 3
  • 4
  • 5
百家谈云计算 首 页  »  帮助中心  »  云服务器  »  百家谈云计算
跨越OpenStack学习障碍的正确姿势
发布日期:2016-3-3 17:3:8

  [编者按]

  没有人会否认,对于未来的公司IT来说,云(如阿里云)的重要性。它能够让计算、网络和存储具备无限的容量和扩展能力,同时消除目前昂贵的开销负担,也不再需IT承担现在所需要承担的负责。从向,企向云(如阿里云)端迁移无非采用两种形式:创建私有云或使用大型公有云运营商提供的云服务。OpenStack的出现则让人眼前一亮:它旨在打造易于部署、功能丰富且易于扩展的云计算平台有可与公有云媲美的近实时扩展能力。

  OpenStack已逐渐成为企业打造云平台的首选, 但其作为一个庞大而专业的新兴系统,有很高的技术门槛。又到毕业季,相信有很多职场新人将从事与云(如阿里云)计算相关的工作。虽然目前在高校中不乏与大数据、云计算相关的专业,但是我们学到的知认很难与实际应用结合起来。为了帮助毕业生和职场新人,51cto邀约多年深耕于开源云计算平台Openstack技术的陈沙克老师,为各位同学指点迷津。

  关于作者:

  

  陈沙克 国内OpenStack实战性专家

  陈沙克,(微博:chenshake,个人网站:www.chenshake.com ),开源和OpenStack爱好者。

  陈沙克从2007年开始接触VMWare的ESX,一直从事虚拟化和云计算相关的工作,从2010年开始,一直关注,了解和推广Openstack,希望可以把Openstack产品化,帮助企业把传统的IT业务迁移到云(如阿里云)里。

  以下为作者原文。

  因为工作的关系,我们最近在招收实习生。希望可通培养,让实习生对Openstack熟悉起来。在这个过程中,我看到了很多新人在学习和了解OpenStack过程中的障碍和误区,使我产生了很多想法,来和大进行交流。

  怎样学习和了解OpenStack,其实和怎样了解一个开源软是差不多的。国内由于很多原因,很多人都喜欢看中文的资料去了解和熟悉一个开源软件,这样其实效率是很低的。

  引用微博的一段话:

  【一万小时法则】一项研究显示,在任何领域取得成功的关键跟天分无关,只是练习的问题,需要练习1万个小时——10年内,每周练习20小时,大概每天3小时。中国有句古话“十年磨一剑”,其道理可谓异曲同工,没有几个会拒绝成功。但站立在金字塔顶的成功者,往往是少数人。

  Openstac也不例外。就算是Openstack的Core,也不要以为他们什么都理解,都懂。其实他们仅仅是投入时间比你多一点而已。获取一个Openstack项目的Core,你至少是需要投入5000个小时。

  文章导读

  1、官方网站

  2、Slideshare和Youtube

  3、launchpad网站

  4、参与Openstack开发

  5、Linux,KVM和网络

  6、stackalytics网站

  7、邮件列表

  8、Devstack

  9、IRC会议

  10、大学生建议

  官方网站

  任何成熟的开源网站,它的官方网站的资料是最丰富的。你若可熟练在官方网站找到你需要的东西,那么就说明你对这个开源软件已比较熟悉,Openstack也不例外。你需的是花大量的时间去阅读Openstack官方网站上的资料。

  目前OpenStack的官方文档,已很完备。

  Slideshare和Youtube

  了解一个开源软件,其实简单的办法,就是去Slideshare把相关的PPT读完,到Youtube把相关的视频看完,你就对软件有一个整体的理解,对于Openstack,其实也不例外。

  其实作为一个技术人员,真的必须掌握一些技巧和能力,去看Slideshare和Youtube。通过视频和PPT,效率会高很多的。

  launchpad网站

  这是Openstack的项目管理的网站,通过这里,你可以看到Opentstack项目的组件的Blueprints和bugs列表,阅读这些你就基本可以了解到Openstack过去,现在和未来。

  https://launchpad.net/nova/+series 把nova更换成Openstack组件名字就可以。

  参与Openstack开发

  要想了解Openstack的开发模式,其实只看是不行的,你也无法理解为啥这样做。你必须动手去参与Openstack开发。参与开发,其实不见得是提交代码,参与代码的review,了解Openstack的代码开发规范,对你自己的成长,还是非常有帮助。

  如何提交代码的视频,介绍如何提交代码的中文资料,其实很多。详细可以看孔令贤的这篇文章:《如何向OpenStack社区贡献代码》

  Openstack的代码开发流程,其实和你想象的会有很大的差异,第一次提交代码,很多人都折腾好几个月,不过最终还是觉得这个时间花的还是很值得的。

  Linux,KVM和网络

  其实Openstack只是管理工具,真正考验你的是linux和KVM能力,一般的系统管理员,对linux和KVM,都算可以,不过对于网络,可能就比较陌生。在Openstack上,你是无法逃避的,很多问题都会和网络密不可分。

  你需要了解linux bridge,Openvswitch,学会抓包,这样你才具备能力去解决问题。

  stackalytics网站

  这个网站非常有意思,尤其对于想了解大数据的朋友。Openstack项目非常庞大,那么那个公司的贡献最多呢,不同的维度,得到的结论是不同的。

  http://stackalytics.com/ Openstack目前到底有多少模块在开发,他们的活跃度如何,背后有什么大公司在支持,基本都是可以通过这里获得。

  邮件列表

  订阅邮件列表,这样你可以了解到Openstack的目前状况。阅读邮件列表,其实非常累,不过通过一段时间的阅读,其实可以帮助你了解到很多通过官方网站无法了解到情况。例如国内的那家公司,参与OpenStack开发比较多,用户使用OpenStack主要的问题是啥。

  邮件列表的地址,都是可以通过官方网站获得。

  Devstack

  如果你希望从事Openstack开发,那么你就能用OpenStack搭建开发环境,那么Devstack的安装和使用,是必须的。通过阅读Devstack的安装脚本,其实Openstack的安装,对你来说,就显得比较简单了。

  目前Devstack支持的比较好,应该是Ubuntu,建议你使用Ubuntu 14.04来搭建你的开发环境

  http://docs.openstack.org/developer/devstack/

  Openstack是用Python开发的,对于程序员来说,其实很好理解,只需要投入时间进去,就会有收获。

  IRC会议

  这个其实是开源软件常用的交流方式,一般来说,我们的英文不太好,反应也慢点,要在IRC里,提问,回答都是有点困难。不过OpenStack的IRC会议,都是有记录的,你是可通过阅读IRC来了解项目的进展。这个其实是很消耗精力的活,一个人的精力,估计能盯住一个模块就不容易。

  http://eavesdrop.openstack.org/meetings/

  给毕业生的建议

  若你是即将毕业的大学生,希望日后从事Openstack相关的工作。那么其实我建议:

  熟悉linux,最好能用linux作为桌面,增加你使用linux的时间,有条件参加红帽的证书认证

  使用Git,最佳的方式就是在github做一个blog,记录自己日常的经验和教训,这个非常重要,掌握学习方法比你懂啥更加重要

  配置管理工具:ansible

  熟悉KVM,linux Bridge,这都是基础。

  网络如果可以达到CCNA的水平,其实是最好的,这样对你日后理解Openstack的网络有很大的帮助。

  养成英文阅读习惯,这个和所谓英语能力基本没任何关系,英语真的不是学出来,是逼出来的。

  今年我给我这边的实习生出了一道题目

  使用配置管理工具ansible或者Saltstack,去云里(青云或者微软的Azure),

  调用api接口,开一个虚拟机,

  安装gitlab,

  定期备份到对象存储上,

  并且你可以实现定期的更新。

  加入zabbix监控监控所有的服务

  日志收集到elk(elasticsearch+logstash+kibana)

  整个过程,你不需要人工登录虚拟机,全部都是通过配置管理工具,远程来完成。

  可惜由于时间的问题,还没有完成。那位朋友完成全过程的,可以分享分享。

  OpenStack已逐渐成为打造云平台的首选技术, 其作为一个庞大而专业的新兴系统,具有一定的使用门槛。但在目前高校学习中,鲜有与OpenStack直接相关的专业。

  很多大学都很时髦,设置什么大数据专业,云(如阿里云)计算专业。其实很多时候,这些专业都很虚,老师在大数据的时候还在讲啤酒和尿布的故事,真的是比较搞笑的事情的。试想一下,你分析出啤酒和尿布的关系的情况下,那么超市应该是把两者的距离放的更近还是更远呢?这个问题估计老师都没考虑过,就到处出去忽悠学生。(Intel中国研究院首席工程师吴甘沙在一次报告中透露:所谓“啤酒加尿布”的数据挖掘经典案例,其实是Teradata公司一位经理编出来的“故事”,历史上并没有发生过!)

  在大学里,其实学生的专业更加需要注重的是基础,操作系统原理,linux内核这些。如果你真的对这些很熟悉的话,那么你到社会上,无论是啥stack,都是可以应付。你在大学里学了某stack的专业,毕业的时候,很可能已经开始走下坡路。

  这是一位朋友的微博写的,我就转载一下,你把java换成Python,应该就可以明白。

  “ 计算机专业的大一,有激情有时间,是学习的黄金时间。如果能在上好正式课程之外,在这一年期间熟练地掌握两种编程语言(C,Java),熟悉一个操作系统 (Linux),动手写1万行代码,就为四年大学开了一个好头。不要指望有老师一步步地带着你,自力更生,自主学习,用好图书馆与互联网,足矣。”