分享

OpenStack实践基础知识(一)

happy22 发表于 2015-6-19 13:37:53 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 1 27013
问题导读:
  • OpenStack适用于企业哪些业务?
  • OpenStack和VMware、KVM有哪些本质区别?
  • 在Docker如此火的当今社会,OpenStack有何优势?
  • OpenStack和CloudStack各自的优势是什么?
  • OpenStack和CloudStack 会成为互补关系吗?




我从2013年开始从事OpenStack相关工作,当时接手的任务就是用OpenStack在企业级应用领域探路,但所带领的团队是刚从北邮、北大软件学院招聘的6位优秀的实习生,以及3位新入职的员工。3个月后,我们就开发出了具备单控制节点、主备控制集群、多计算节点,包括监控、参数调优,支持管理网、数据网、DNS、NTP的一键式安装部署,可批量修改密码,支持虚拟机迁移、evacuate等,自研了虚拟机高可用。后来被称为“IBM OpenStack Solution for System X”,代表公司参加了OpenStack全球峰会香港峰会,作为IBM的大会展示项目;参加了IBM大中华区举行的创新大赛,在上百个项目中进入了前12名。后来又支持了IBM的SAN存储、Gluster和IBM企业级的GPFS。从2013年11月起,逐渐有了10多家客户案例,包括政府机构、高校、制造业、保险、运营商等。可参考“OpenStack企业云平台架构与实践”第9章内容。

OpenStack的使用重在规划和大量系统级的知识,以及庞大的OpenStack项目、服务等。企业要使用OpenStack必须做减法,挑选适合自己特定需要的项目、组件,结合自动化,再增加监控、运维管理等工具,则搭建OpenStack云平台并不是难事。
下面是很多人关心的问题。

1.jpg

OpenStack适用于企业哪些业务
对于这个问题,技术人员总是会陷于沉思,因为这个问题比较抽象,有点说来话长的味道。只有了解了企业应用和企业基础设施才有可能回答这个问题,且满足问问题人的期望。

无论OpenStack还是CloudStack,还是VMware,核心可操作使用的都是虚拟机。虚拟机是由KVM或者Xen或者ESXi提供的。无论KVM还是Xen其实和真实的物理机特性非常类似,且已经非常成熟了。

OpenStack目前使用最多的还是提供IaaS,即虚拟机,在虚拟机里运行各种业务。实际环境使用最多的还是KVM。

从这个角度看,原先运行于x86物理服务器上的业务都可以运行于虚拟机。不要说基本的Apache、JBoss服务器,不少企业已经把MySQL集群、DB2等这些I/O密集型的业务都运行于虚拟机里了。其他还包括文件服务器、互联网应用服务器、图片处理等。如果只是运行则一点问题都没有。

但每种业务类型、每种企业应用场景,具体需求是不同的。我们通俗地说要运行得好,从技术角度,可以落实到每秒处理多少请求数量、网络传输速率、IOPS等指标。这些每种应用、每种业务场景、每家企业要求都不一样。需要关注的是这些指标是否可以满足。

另外,对于环境还是要考虑的,比如网络千兆、万兆,是否Bond;I/O性能如何提升、KVM如何优化等。这些并不是光搭建一套OpenStack环境能解决的。我们不妨看下表:常用应用类型分析,再仔细研究下自己的应用。
常用应用类型特性分析
2.jpg

OpenStack和VMware、KVM有哪些本质区别
从最基本的角度,KVM管理的是单个虚拟机,且有非常丰富的命令和一些工具来进行操作、配置、管理。如果有一台Linux服务器,且安装了KVM、Libvirt等软件,其实是可以自己管理运行虚拟机的。但这样对于企业来说非常不方便,且许多人并不具备这样的技术能力和问题调试能力。围绕着KVM,过去也有很多软件、解决方案,占据不少市场。KVM一般意义上是管理虚拟机相关的(包括虚拟机用的网络、存储等),外面通过Libvirt来调用,且不会跨越物理机边界。
3.png

而VMware被定义为虚拟化产品,以云主机为中心提供给企业和个人用户各种虚拟化服务,如磁盘、网卡、网络、硬件资源等,都可以通过图形化界面点击来完成。其中KVM与VMware中的ESXi是基本等价的东西。

VMware可以管理许多服务器上的虚拟机,包括存储、网络,热迁移、高可用(High-Availability),容错(Fault-Tolerance)等。VMware公司在这些方面做得极致。

关于OpenStack与VMware对比可参考这个文档:https://www.mirantis.com/why-mirantis/OpenStack-technology/comparing-VMware-and-OpenStack/。VMware也是OpenStack基金会的黄金会员。


OpenStack被定位为开源云平台(事实上也是仅次于Linux的世界第二大开源组织、框架、项目),OpenStack除了VMware的上述这些功能(当然不包括FT,且HA需要自己搭建),还包括对象存储服务、应用编排、数据库即服务、大数据即服务,以及将近上百项成熟或者正在孵化的项目。下图就是一些用户可以考虑引入企业使用的项目。

OpenStack可以通过Nova服务来管理调度VMware,类似于一个Hypervisor,这个社区已经支持。而KVM只是OpenStack一个普通但默认和最常用的Hypervisor(其他还包括Xen、 Docker、LXC、裸机、Power等)。也就是一套OpenStack环境,可以同时管理运行KVM、Power、 VMware、LXC/Docker等。

要了解OpenStack能做什么,最好的途径就是去亚马逊AWS注册个账户(注册只需要1美元,但需要将信用卡信息留下。不过完全不用担心收费问题,如果是误操作而产生了费用,可以写邮件给客服,这些钱都可以退回来)。

对于还在研究VMware和OpenStack区别的人来说,只要知道VMware已经是OpenStack基金会的黄金会员就可以自行判断,结论不言自明了。

在Docker如此火的当今社会,OpenStack有何优势如果以技术的维度来说,OpenStack可以单独存在和使用,业界此类案例已经多不胜举;Docker也可以单独使用,就像我们很熟悉的KVM一样;另外,OpenStack完全可以和Docker一起存在,只要找到合适的场景。唯一不可能的是OpenStack和Docker水火不容,网上很多此类文章,只能归结为“标题党”。

单纯看Docker,和KVM的地位并没有太大差别,技术上也没有多少贵贱之分,都是通过一个封装,如Docker Daemon也一堆命令集合来使用。 KVM是虚拟机,里面运行的是完整的操作系统,而Docker则是轻量级的,里面通常只有应用和应用环境。

OpenStack完全可以通过Nova、Heat方式接入Docker,在笔者所负责的项目中已经如此使用,且已经用于生产环境。所以OpenStack和Docker并不矛盾,而是和谐的。想想OpenStack可以提供如此之多的功能和场景,如Heat应用编排,Sahara大数据分析,Trove数据库即服务等,其原来由KVM承担的角色,完全可以由Docker来承载。我所领导的团队调试OpenStack Sahara(分析即服务)将Hadoop跑在Docker里,就一个人只花了不到两周时间。  


以个人观点,Docker和KVM是同一级别的,由OpenStack管理的Hypervisor。笔者今年整理发现至少OpenStack提供了近20种非常有用且可以实用的服务,如有Manila、Mistrial、 MagnetoDB等是很实用的云服务。如果只是简单而基本的虚拟机使用目的,或者为了支持研发测试环境,单纯使用Docker完全可以。软件工程有个术语叫“Over Engineering”,什么事情都不应该做“过头”。但是如果看重了OpenStack强大功能、丰富插件、源源不断的新项目,学习了解云计算技术、大型互联网和电商环境,还是首选OpenStack,将Docker当成一个“陪嫁”就好了。技术上也很容易实现。

当然不用OpenStack,合适的场景完全可以由Docker和相关工具提供。这个具体的选择还是在自己看重什么了。另外需要了解,Docker和宿主机共享同一内核,这里是有安全风险的,现在只是没有暴露太多,但据统计,目前网上的Docker仓库里,存在安全隐患的镜像比比皆是。另外,Docker对于性能测试类型的项目,可能不适合。要想适合,需要做不少工作。在具体引入企业承载公司业务的时候,还是需要慎重。天下没有完美的事情,完美的都是不真实的。

OpenStack和CloudStack各自的优势是什么
CloudStack笔者只是了解和使用过一些,谈不上完全了解。CloudStack安装部署非常容易,网络功能目前比OpenStack要好(支持多个Vrouter,还包括扁平网络、VLAN网络),但也听说对OVS的支持并不强;拓扑也分为Region、可用域、POD、集群等;存储也支持NFS、LVM、Gluster等。架构很紧凑,非常容易上手,如果企业只是需要虚拟化一类的功能则足够了。

简而言之,在IaaS层面,CloudStack和OpenStack基本类似,但从上手的角度,CloudStack似乎更容易一些。代码是用Java写的,对于较为传统有许多Java程序员的公司也是福音。

但如果需要虚拟机之外更多的功能、定制性更强,或者搭建中大型环境,甚至学习云计算,还是建议关注和使用OpenStack,因为其架构灵活、功能丰富(远超出想象)和拥有庞大无比的社区。

另外,CloudStack社区最主要的Vendor Ctrix最近宣布裁撤北美的研发、测试,将支持转移到印度了,Ctrix也已经宣布加入OpenStack基金会。基本可以认为,在CloudStack和OpenStack几年的战争中,OpenStack已经取得完胜。不少原来支持和部署了CloudStack的公司都在积极寻求途径切换到OpenStack云平台上来。

对于一个公司来说,在当代,技术和平台的选型是非常重要的,其重要性远胜于一个项目、一个产品。对于CloudStack来说,迁移的代价也是昂贵无比的,尤其是当已经运用于生产环境的时候。

OpenStack的强大在于参与公司众多(国内外凡是出名的服务器、网络、存储、IT服务商,其中包括国内的中兴、华为,甚至VMware都是它的会员),形成了一个强大的生态系统,甚至有人称其为云操作系统(Cloud OS),已经形成了不但包括虚拟机相关(Nova)的功能(想想现在IaaS已经接近成熟,提供IaaS的公司非常之多,但从用户角度,提供了虚拟机,许多用户还是不知道下一步该做什么);还包括Heat(云应用编排,一个模板语言执行完之后就有了一个运行MySQL或者Apache的虚拟机)、Trove(DBaaS,在J版本支持MySQL、 MongoDB、CounchDB、Redis集群、备份、快照)、Sahara(大数据服务,支持MapReduce、Spark、Java、Stream Job等)、Ceilometer(计量),还有其他几十个项目,已经或正在走向成熟。

OpenStack的强大还在于架构灵活,每个项目其实都是个框架,在此框架下,可以接入任何公司的产品/方案,比如KVM、Xen、Power,甚至VCenter,都是Nova下的一个Hypervisor; 网络方面,我们经常使用的OVS和Linux Bridge一样,都是Neutron(网络)下的一个插件, 其实还有许多厂家的网络插件,如思科、Juniper、VMware的,存储也是,除了LVM、Gluster、Ceph、Cinder,还支持众多厂家的SAN存储……

OpenStack的中心是消息队列和数据库,常用的包括RabbitMQ、MySQL等。几乎所有组件都是和这两个中心组件交互的,赋予OpenStack的无限可扩展性和灵活性;众多新的功能和项目可以源源不断地加进来。

笔者知道2014年,包括VMware、百度、华为、阿里、美团、雅虎、苏宁,还有众多大大小小的公司都在北京招聘OpenStack人才。想想看前几年热门的Xen,而现在几乎是KVM的天下。现在的热点已经转向Docker了,但OpenStack可以很容易地通过Nova和Heat两种方式来支持Docker。
从可用性角度,OpenStack的安装部署过于复杂,过去一直为人呕病,现在这个问题已经通过DevStack、RDO、Fuel,还有Puppet、Chef解决了。另外,市场上有越来越多的人来研究OpenStack,相关的论坛、会议,还有支持的公司越来越多。

所以笔者个人的建议,如果已经使用了CloudStack,而功能也足够,且有已经成型的研发团队支持,并不建议轻易更换。OpenStack虽然灵活和非常强大,但掌握起来有一定的门槛,松耦合的架构,在组件与组件之间,要做到很稳定需要对RabbitMQ、MySQL(还有集群)、OVS都有一定的了解,要使其稳定运行也需要一些专业人员负责;由于支持的插件太多,选型也需要谨慎且量力而行。当然这个门槛肯定会逐渐降下来,也许有一天,OpenStack就像我们装一个CentOS或者Ubuntu一样容易。

OpenStack和CloudStack 会成为互补关系吗
笔者理解它们是有一定的重叠且是竞争的关系(既生瑜,何生亮?),而且方向已经非常清楚,选择OpenStack的公司会越来越多。笔者了解到不少公司,都是一些业界有一定影响力的公司,原来是CloudStack的提供者,或者部署了CloudStack,正在或已经转向了OpenStack。
一个围绕着OpenStack的生态系统越来越大,这个趋势在国内越来越明显。这个只要到百度上,或者查询OpenStack的白金/黄金会员和OpenStack社区就可以找到许多熟悉公司的身影。

据统计,国内从2014年以来,新出现的公有云全部是基于OpenStack的。
4.png
OpenStack公有云
未完待续(责编/周建丁)

作者简介:张小斌,苏宁 OpenStack 研发中心负责人,分别于西安交通大学和中科院计算所完成本科和硕士研究生学业,拥有 18年计算机软件设计、开发和管理经验。目前专注于云计算的研究探索,关注社区,注重 OpenStack 在企业的实践和落地。在企业级计算、网络和存储的整体解决方案、高可用性、安全以及应用管理自动化和弹性等领域都有所拓展。

注:本文转载自CSDN

下一篇:OpenStack实践基础知识(二)

已有(1)人评论

跳转到指定楼层
liuyou2036 发表于 2020-7-14 09:14:46
受教,学习了~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条