查看原文
其他

开源大牛为你讲解:OpenStack的部署与应用 | 大咖说回顾

2016-09-30 开源中国

#长按上图识别二维码,参与OSC源创会年终盛典#


本文系9月27日,海云捷迅首席架构师,OpenStack技术大神马力 在OSC大咖说视频直播中的主题分享,点击文尾视频播放 或  阅读原文 即可观看直播完整视频


OpenStack当今有许多的应用案例,利用它部署的大规模项目逐渐增多,同时,在发展过程中也存在一些问题,今天主要和大家谈谈自己的经历、入门OpenStack,以及解决技术问题的思考和看法。


初识OpenStack,为中国开源繁荣添砖加瓦

                           

我早期参与了深度的虚拟化内核研究,后面开始做更加上层的云编排系统,遇到了OpenStack,在开源社区中,和朋友们的意见不一致就会争论,交流也随之越来越多,一开始是比较难受,后来懂得多了就会越来越顺。

国内的开源化目前还是处于起步阶段,技术共享氛围不够,中国的经济快速发展很快,企业从社会上挣到了钱,但共享的技术少一些,国外则是从社会获取一些,然后回报给社会一些技术,这样大大促进了开源技术的发展。

自从2013年参与OpenStack社区,自己对OpenStack的贡献越来越高,很多企业基于OpenStack快速崛起,开源文化一直在慢慢进化,开源中国顺应这样的环境建立了码云平台。所以说不单是OpenStack,其他比如Docker 、移动技术平台等也大大推进中国的开源化发展。

OpenStack开源云计算已经在全球如火如荼地商业化落地,越来越多的企业选用OpenStack解决方案,也有很多供应商用OpenStack来优化IT基础架构、降低成本。

对于开源技术,个人觉得越早参与对自己价值的提升作用越大,另一方面,OpenStack对于公司会有明显的贡献,OpenStack全球火爆,OpenStack是全球第二大开源社区,最重要的是它的共享氛围,你获取东西,把自己的东西反馈给社区,同时也跟好多国际化开发者讨论,他们的想法和你的想法有什么相同和不同,在交流的过程中同时提高了自己的技术能力。


入门OpenStack,懂得这些,总不会太难


学习OpenStack的要求都有哪些呢?

第一、有一个好的数学理论基础,其实对于编程也是如此;

第二、明晰云计算的基础架构比如IaaS、PaaS、SaaS等;

第三、懂得一些硬件的知识,因为云计算与物理硬件打交道,比如x86、内存、硬盘、网络,服务器,交换机的使用,存储比如SAN、NAS、分布式存储等;

第四、操作系统的使用,开源的Linux,闭源的如Windows,对系统本身有个了解,会基本的使用方法;

第五、虚拟化知识,OpenStack作为基础化的平台,计算资源虚拟化、网络虚拟化技术等相关知识储备必不可少。

 

渐入OpenStack,从部署环境步步深入


要进行OpenStack开发,首先要进行OpenStack环境的部署。首先要下载OpenStack,启用虚拟机,Ping通设备,刚开始需要不少时间,我开始接触OpenStack花了大概5天时间,OpenStack一共有二十多个组件,配置错一个文件都会出问题,OpenStack社区让你少走很多的弯路。

要不要自动化部署OpenStack这个问题要看对自己的定位,如果只是对OpenStack感兴趣去学习一下,完全可以通过社区的技术工具自动部署。而对于专业开发者,自动化部署对他们的意义不大,自动化部署工具隐藏了99%的设置,只把IP配置等基本的手动配置项显示在外面,手动部署,可以知道OpenStack的架构等一些东西,OpenStack的架构是很优秀的,而自动部署则看不到这些东西。

接着要浏览大量代码,不爱写文档是开发者的共性,在全球范围内都是这样,在程序员的世界里,代码就是文档,文档就是代码。而正是没有开发文档,所以很难迅速入手,过时的开发文档对新手也是一种限制。

OpenStack的社区有整套的OpenStack安装教程,如何去学习,去社区进行交流,看官方的说明,Step to Step的教程。然后进行Core Review,参与讨论,Review别人的代码,全球的开发者,提交,审核,你能不能接受别人的代码,你有什么好的解决方案。

Core Review需要做什么事情?

1、Keep Review,不间断地Review,不停参与Review;

2、参与代码讨论,社区有在线的聊天室,每周都有讨论,找到问题以及修复问题;

3、贡献核心代码,哪些功能需要但没有,可以去提出并做,并提交文档。

做到以上三点,差不多半年的时间经验就上去了。

OpenStack社区对贡献量有一套评判标准,做得很极端,它有一个全球排行榜StackAlytics,它通过以下几个方面评判:1、修复Bug的数量;2、新功能的提出;3、Review代码的多少;4、提的意见,反对的意见将更加有用;5、贡献代码行数。

公司排名意义比个人大,贡献量是多少是评判标准,但是要说一句,公司通过OpenStack全球排名来判定个人价值的意义不大,因为每个人都有专注的方向,项目开发难度不同,代码的优劣也不同,不应简单通过OpenStack全球排名来制订KPI。

 

进阶OpenStack,服务器架构的优化之道


大规模下的OpenStack的落地有很多问题,公有云、私有云,适合把企业的IT基础云化,部署可大可小,小企业四台服务器支撑整个IT架构,中型企业40多台,规模大点上千台,谷歌是几十万台,中国移动用到了万台的服务器,不同的架构面临很多的问题,微软Azure的工程师,表示500台是一个坎儿。

比如定义千台服务器的分布式数据中心的应用场景,比如某个欧洲的运营商案例,有50个数据中心,每个有50—100台物理服务器,大规模集群分布式运营,这样的话有很多的Site,OpenStack管理会遇到部署问题,50个数据中心就有50个Region,只能是资源隔离,不可共享,A和B网络通讯则需要走浮动IP,这样资源没有进行最大化的利用,运维成本也高。

改进OpenStack,部署一个OpenStack,计算网络平面集中在一起,他们在实验室中实验,发现很大的性能瓶颈,大规模的架构是一个Region,全部形成一个共享的资源池有很大的挑战。架构层面,开源中国有很多的架构案例,比如网络安全,防火墙,入侵的安全,Web方面的,Web缓存,负载均衡,虚拟化的负载调度,性能不是很苛刻则好,控制平面横向扩展,很多问题其实并不是OpenStack层面的问题。

RPC消息队列是OpenStack的核心点,但它不归OpenStack管,OpenStack只负责SDK封装。因为RPC集群的控制平面不可能那么大,都是带状态的,控制平面越大,那么产生问题的可能性越大,设计分布式集群的时候,不单OpenStack,其他的互联网系统也是会遇到这种问题,消息的一致性,消息队列产生的状态同步,会不会产生瓶颈、如何避免,可以优化架构,用其他语言编写,内部调优,可以,但是没法做持续优化;也可以修改消息队列的架构,比如基于ZeroMQ的分布式消息队列,非常优秀,采用点对点的通讯,性能好,时延小,可以在大规模环境中尝试使用。不然如果中央集群出问题,那么整个项目就会出问题。

数据库的性能问题,OpenStack社区有不规范的时候,在其他的开源社区的时候有,我参与一些社区的代码不够优化,最后对数据库系统带来较大压力,其中包括事务管理、包括对数据库建立索引等,都需要微调,不归OpenStack管理,但是人们都去开源社区会报怨,OpenStack不稳定、OpenStack不行,实际如果你了解部署,你就会发现你需要更多的其他知识。当然,你也可以将这些问题反馈给OpenStack社区,让大家参与进来,因为个人的相关领域知识还远远不的,越优秀的开发者就有能力做更多的优化,周边相关的专业开发者一起让OpenStack做得更好。

 

直播节选


https://v.qq.com/txp/iframe/player.html?vid=x0332f3587l&width=500&height=375&auto=0

https://v.qq.com/txp/iframe/player.html?vid=u0332oxvhe7&width=500&height=375&auto=0
https://v.qq.com/txp/iframe/player.html?vid=d0332sdzzp9&width=500&height=375&auto=0


END


推荐阅读

点击标题直接进入阅读

十款 Material Design 风格的 Android 开源项目

本文对比了 Rust-1.8.0 nightly 版本和 OpenJDK-1.8.0_60。二者进行一个比较,看看会得到什么样的结论呢?

原创博客:《如何在半小时搭建一个简单的日志分析平台?

自从有了Elasticsearch、Logstash、Kibana,俗称ELK,小公司也可以很轻松地做日志分析了。

参与成都、重庆源创会,听大咖分享时下最新技术干货!

开源中国源创会就将来到成都、重庆,与各位OSCer来一个约会,更为大家奉上精彩的主题演讲,各位还不来赴约吗?

猛击“阅读原文”,观看完整直播视频哦

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存