• OpenStack与CloudStack


    目录

    一、云计算

    二、IaaS

    三、OpenStack与CloudStack

    (一)概述

    (二)项目历史与运营团队

    (三)架构

    (四)计算

    (五)网络

    (六)存储

    (七)流行性

    (八)整体对比

    四、最后的看法

    (一)总的看法

    (二)关于产品成熟度的一些看法

    (三)网上的一些评价说法


    一、云计算


    如果说1996年至2010年是互联网时代,那么2022年,则处于云计算的时代。何为云计算?首先我们先了解什么是计算资源?

    传统计算资源就是我们的计算设备,比如个人电脑,服务器。计算资源包括了CPU、内存、磁盘和网络。广义的计算资源还包括了应用软件和人力服务。由于存储本身也是一个大类,有时我们会把比如SAN、NAS存储、存储阵列等称为存储资源。所以,为了避免概念混淆,下文提到的计算,主要包含服务器、存储、网络三大类,它们构成计算服务。

    当我们需要这样的计算服务的时候,我们不再需要购买实体的计算机,为其搭建网络等,而是从某个平台或组织按需申请使用,就可以享受远程的计算服务。而这种位于远方的计算服务,让人感觉它们就像在云端一样,称之为云计算。

    随着云计算市场的发展,云计算的概念所包含的内容与实际的产品也在不断的变化和扩充,比如云数据库,云存储、云容器等。归根到底,就是把原来需要用户自己构建和使用的资源,全部交给云端,将资源池化。云服务商或者企业内部提供自助服务,用户只需要通过网络终端
    去按需申请、使用,将更多的精力放在自己的业务即可。

    图表:2018-2020年全球云计算市场规模情况


    如前面所说,计算可以是一个比较广的概念,除了传统的计算资源,它还包括应用软件和人力服务。云计算则主要有三种服务模式:
    IaaS(Infrastructure as a Service),PaaS(Platform as a Service),SaaS(Software as a Service)。下面我们主要介绍IaaS相关的内容。

    图表:全球云计算市场结构

    数据来源:中研普华产业研究院整理

    二、IaaS


    IaaS服务是基础设施即服务(Infrastructure as a Service),它包含了机房基础设施,计算机网络,磁盘柜,服务器
    和虚拟机等。


    IaaS是上面提到的云计算最核心的一种服务。早期的云计算,就是将这些基础设施资源池化之后,通过租赁的方式给租户使用。通常我们
    从上至下,按层级划分云计算的三种服务模式,从SaaS到PaaS,再到IaaS。而IaaS层最关键的技术就是虚拟化技术。有了虚拟化技术,就能将计算资源划分成更细的粒度,实现资源使用的隔离,满足租户对于资源的使用配额不同的需求。


    接下来介绍的OpenStack和CloudStack就是主要负责管理这一层的软件,这里称之为云计算管理工具或者云计算管理平台。拿虚拟机举例,不论我们使用的是KVM、Xen、ESXI等主流虚拟机软件。我们都可以使用这些云计算管理工具很轻松的去创建,删除、启停、迁移、备份这些虚拟机,
    划分它们的网络,分配对应的存储。它们都是开源的软件,当然还有其他云计算管理工具,比如ZStack、Eucalyptus等,这里就不再展开介绍。


    三、OpenStack与CloudStack


    (一)概述


    OpenStack与CloudStack其实都是云计算管理的软件。以下为官方的简单介绍:

    OpenStack可控制整个数据中心内的大型计算、存储和网络资源池,所有资源都通过具有通用身份验证机制的API进行管理和配置。通过命令或者基于Web的可视化控制面板去管理IaaS层的云端资源。

    CloudStack管理和协调存储、网络和计算机资源池,以构建公共或私有IaaS计算云。使用CloudStack,可以设置按需弹性云计算服务,允许最终用户配置资源。


    (二)项目历史与运营团队


    OpenStack
    OpenStack它最先由美国国家航天局(NASA)和Rackspace在2010年合作研发的,旨在为公有云和私有云提供软件的开源项目。OpensStack是一个IaaS层的软件,其目标在于提供可靠的云部署方案及良好的可扩展性,从而实现类似于Amazon 或者阿里云的云基础架构服务。最终目标是
    实现一个可以灵活定制的公有云IaaS软件。

    2011年Rackspace宣布成立OpenStack基金会,将OpenStack贡献给了该基金会。项目完全由社区开发和维护,开发和发布周期大约6个月。
    版本发布历史可以参见https://releases.openstack.org/。

    2012年5月NASA宣布退出OpenStack的开发。

    CloudStack

    CloudStack是由VMOps(后来改名为Cloud.com)在2009年首先推出的软件。Citrix在2011年收购了Cloud.com,后让其开源,并在2012年将CloudStack贡献给Apache软件基金会,成为Apache的孵化项目(项目网站 http://cloudstack.apache.org/),同时将授权协议改为更加宽松开放和商业友好的Apache许可协议,CloudStack在2013年3月份升级为Apache的正式项目。CloudStack的目标是提供高度可用的、高度可扩展的能够进行大规模虚拟机部署和管理的开放云平台。

    CloudStack由Apache CloudStack社区维护,发布周期不固定。版本发布历史可以参见 :
    Apache CloudStack Release Notes — Apache CloudStack Release Notes 4.12.0.0 documentation

    (三)架构

    OpenStack
    OpenStack采用分布式架构,整个平台按照功能不同分为多个项目,项目之间通过消息队列中间件和RESTful形式的API进行交互通信(其中认证项目为其它项目提供认证和服务注册),因此每个项目都可以单独部署在不同的主机上,架构非常的灵活,OpenStack对外提供丰富和功能强大的API,使得资源可以被用户方便的使用和调度,同时提供和Amazon AWS(Amazon Web Services)兼容的API。

    图表:OpenStack 项目架构图

    OpenStack的架构核心项目:
    - Nova(计算)
    - Neutron(网络)
    - Swift(对象存储)
    - Cinder(块存储)
    - Keystone(认证、权限等)
    - Glance(镜像)
    它们都可以分开独立部署,通过API和消息队列进行通信。


    CloudStack
    CloudStack采用集中式的单体架构(Monolithic architecture),整个平台只有一个项目构成,不同模块之间通过的本地调用进行交互,在一台主机上就可以完成平台的部署,非常方便,CloudStack同样地对外提供自身API和与Amazon AWS相兼容的API。

    CloudStack架构组成:
    - Host(主机)部署虚拟化机器的宿主机
    - Primary Storage(主存储),用来存放虚拟机
    - Cluster (集群)一组主机与相关主存储的集合
    - Pod(机架)一组Cluster的集合
    - Network(网络)为虚拟机提供网络服务
    - Secondary Storage(二级存储),用来存放虚拟机模板、快照、ISO
    - Zone(资源域)一组Pod及相关二级存储的集合,通常为我们的某个区域的数据中心机房
    - Management Server(管理服务器)统一管理整个CloudStack环境

    图表:CloudStack 架构图


    OpenStack的分布式架构灵活性好,不同的项目可以单独部署,因此可以很容易的根据实际需要进行功能组合,并且由于不同的项目间耦合性低,项目间功能划分明确,因此针对单独功能进行定制开发也非常方便,适合有一定研发能力的团队。

    缺点也很明显,不同项目之间过于低耦合和独立,导致不同项目之间的兼容性难以保证,不同项目可能来自于不同的团队,在项目迭代开发的时候,难以确保不同项目的各个版本之间兼容性能做到最大化。比如可能存在一些商业利益导致一些不兼容的现象,某个特性由某厂开发支持,但是在项目中会用到特殊的协议,必须使用其自家的硬件设备等,最终导致不同项目之间版本的兼容性会变得更差。


    CloudStack因为各个模块功能代码是合到一块,作为一个整体,部署起来会相对容易,它产品成熟度更高,由于是集中式一体化的软件,它每次大的版本升级会更简单,不同模块之间的兼容性会更好。当然相对与分布式的架构,它扩展性就要相对弱一些,如果有许多定制化的需求,可能就要在现有的架构花费更大的力气去研究和改造。


    部署OpenStack的过程,我认为就像是自己从电脑城去购买配件,然后diy组装个人电脑那样,更利于创造。而CloudStack更像是直接去京东购买一台笔记本那样,当你需要去二次开发,可能会多费些功夫去研究这台笔记本的构造,看其所支持升级的部分,去购买适合的配件,升级笔记本的配置。


    (四)计算


    OpenStack
    OpenStack计算服务的实现为代号Nova的项目,Nova的部署角色又可以分为控制节点和计算节点。控制节点主要负责调度,根据计算资源的申请需求,通过一定的策略,选择合适的计算节点,发送对应的vm操作指令,比如创建、销毁、备份vm等等。最后在宿主机上执行指令。
    计算节点通常是部署vm的宿主机,在宿主机需要安装Nove的计算组件。详情查看
    OpenStack Compute (nova) — nova 25.0.1.dev22 documentation

    CloudStack
    OpenStack计算服务由Management Server控制,具体vm资源的创建,销毁等操作由安装在宿主机上的agent去执行。详情查看
    What is Apache CloudStack? — Apache CloudStack 4.17.0.0 documentation#cloudstack-terminology

    无论是OpenStack还是CloudStack,它们本身不提供具体的虚拟化功能,而是虚拟化技术之上的管理手段或工具。通过编程接口控制传统的虚拟化技术来实现管理功能。


    (五)网络


    OpenStack
    OpenStack 网络服务 (neutron) 提供了一个 API,允许用户在云中设置和定义网络连接和寻址。网络服务的项目代号是 neutron。
    OpenStack Networking 处理虚拟网络基础设施的创建和管理,包括OpenStack计算服务(Nova)管理的设备的网络、交换机、子网和路由器。还可以使用防火墙或虚拟专用网络 (VPN) 等高级服务。支持的网络形式主要为VLAN、FLAT、FLATDHCP等。
    详情查看 Introduction — Neutron 20.1.1.dev33 documentation

    CloudStack
    CloudStack 提供了两种类型的网络:基本和高级.基本类型网络适用于AWS风格的网络。提供单一网络,可通过安全组(IP 地址源过滤)等第3层手段提供访客隔离。
    高级用于更复杂的网络拓扑。这种网络模型在定义访客网络方面提供了最大的灵活性,但需要比基本网络更多的配置步骤。
    每个Zone都有基本或高级网络。一旦在 CloudStack 中选择并配置了Zone的网络模型,就无法更改。一个Zone在其整个生命周期中要么是基本的,要么是高级的。支持的网络形式主要为ISOLATION(VLAN)、SHARE。
    详情查看 Basic and Advanced Networking — Apache CloudStack 4.17.0.0 documentation

    OpenStack和CloudStack都能满足基本的网络需求,对于复杂的网络环境要求,需要结合具体实际业务配置相关的网络设备去实现。


    (六)存储


    OpenStack
    OpenStack的存储分为对象存储和块存储,它们的项目代号分别是Swift(对象存储)、Cinder(块存储)。

    Cinder用于为Nova虚拟机、Ironic裸机主机、容器等提供卷。

    Swift是一个高度可用、分布式、最终一致的对象/blob存储。可以使用对象存储API创建、修改和获取对象和元数据,该API被实现为一组具象状态传输(REST)Web 服务。

    详情查看
    OpenStack Block Storage (Cinder) documentation — cinder 20.0.1.dev11 documentation 块存储
    Object Storage API overview — Swift 2.29.2.dev3 documentation 对象存储

    CloudStack
    CloudStack分为主存储和二级存储。

    主存储与集群相关联,它为在该集群中的主机上运行的所有VM存储虚拟磁盘。在KVM或VMware上,可以按区域配置主存储。
    可以将多个主存储服务器添加到集群或区域。至少需要一个。它通常位于主机附近以提高性能。CloudStack管理客户虚拟磁盘到特定主存储设备的分配。

    二级存储主要存储以下内容:
    模板 - 可用于引导VM的操作系统映像,并且可以包含其他配置信息,例如已安装的应用程序
    ISO 映像 — 包含操作系统数据或可启动媒体的磁盘映像
    磁盘卷快照 — 保存的VM数据副本,可用于数据恢复或创建新模板
    二级存储中的项目对二级存储范围内的所有主机都是可用的,二级存储范围可以按zone或region来定义。

    详情查看
    What is Apache CloudStack? — Apache CloudStack 4.17.0.0 documentation#about-primary-storage 主存储
    What is Apache CloudStack? — Apache CloudStack 4.17.0.0 documentation#about-secondary-storage 二级存储


    (七)流行性

    据Statista称,OpenStack 是最受欢迎的开源云平台,近年来其采用率稳步增长。截至 2020 年,30% 的受访者确认他们在生产中使用 OpenStack。

    来源:• Statista - The Statistics Portal for Market Data, Market Research and Market Studies

    Google搜索文档结果数 (截止2022-06-23)
    - OpenStack : 15,700,000
    - CloudStack : 1,090,000

    百度搜索文档结果数 (截止2022-06-23)
    - OpenStack : 94,800,000
    - CloudStack : 3,840,000

    github 星数

    - OpenStack :4.4k
    - CloudStack : 1.2k

    (八)整体对比

    OpenStack

    CloudStack

    备注

    授权协议Apache 2.0Apache 2.0Apache 2.0协议,意味着着其为自由的下载和使用Apache软件,无论是软件的整体还是部分, 也无论是出于个人目的,公司内部目的,还是商业目的,都可以使用
     
    虚拟化技术KVM、LXC、Vmware ESXi 、Hyper-V、XenServer、LXC等 KVM、XenServer、VMWare(借助Vcenter)ESXi等
    最小化部署一台管理节点主机,一台计算节点主机All in One,(Nova、KeyStone、Glance组件必选)
    网络VLAN、Flat、FlatDHCP、Quantum虚拟化网络VLAN,Flat,OpenFlow
    存储支持Ceph、NFS、LVM、Swift 、iSCSi等NFS、LVM、Ceph、Swift
    用户页面功能完善、页面相对简单功能完善、页面友好
    使用的数据库PostgreSQL、Mysql、SQLiteMysql
    组件OpenStack : Nova、Glance、KeyStone、Cinder、Swift、Neutron等Management Server 、Host Agent、Console Proxy VM、Second Storage VM,Virtual Router Vm等
    开发主导OpenStack社区Apache CloudStack 社区
    版本兼容性存在版本兼容性问题不存在
    文档及流行度流行度相对较高,文档丰富流行度相对较低,文档较少
    部署部署起来较简单相对复杂




    四、最后的看法


    (一)总的看法


    总的来说,不论是构建公有云还是私有云或者混合云,如果处在前期的摸爬滚打阶段,可能cloudstack更适合一些,因为cloudstack产品相对更加成熟,部署起来更简单、快速,能让我们更快速的学习云计算IaaS层的基础公共的知识及积累经验。如果已经具备云计算相关的基础经验,想做更具规模化及定制化的云,OpenStack可能更适合。当然不管选择哪一种工具做定制化,团队开发能力、经济效益都是要考虑进去的。当然,有雄厚实力及雄心壮志的团队,也可以借鉴这些开源软件的架构,尝试自研。

    如果我们要建云,需要结合自身的技术实力、未来的发展方向、规模。更重要的是明白建云的目的,它能否解决当下的关键问题,达成最终的目标。


    (二)关于产品成熟度的一些看法


    我认为成熟度要没有绝对的好与坏。对于软件来说,如果它够成熟,至少在一定范围或者一段时间内,使用起来能规避那些常见的问题,满足基本要求。
    但是,也正因为它成熟,在架构或者一些核心模块上已经定型了,可能在应对未知的变化时,没那么的灵活,可能会花更多的功夫。成熟度低,说明其处在发展阶段,有很多需要完善的地方,可能不够稳定(可能上一个版本的特性,在下一版本已经不在了)。从另一方面说,是什么导致它不成熟呢?有没有一种可能,当业务,市场不断发生变化,使得产品本身对成熟度的定义也发生了变化。换句话说,把自己的目标又抬高了。

    网上有说OpenStack成熟度不够高,我在想,它从2010年开始到2022年,也有12年了,依然在不断发版本,这应该算好事吧,说明软件一直保持生长的活力。所以,在使用软件成熟度作为决策标准的时候,还得结合场景等其他维度综合考虑。


    (三)网上的一些评价说法


    1.CloudStack 主要推荐给小型云服务提供商或中小型企业。OpenStack 也可以被中小型公司使用,但它需要一支技术娴熟的开发人员团队,因此对于企业来说,这将是更好的软件。这两种产品都在不断发展。CloudStack 为存储和网络提供了一系列选项。

    2.如果公司是偏向于项目集成的,并不想在底层做太多的投入,只希望有一个稳定的底层,自己根据用户的业务场景进行二次开发,那么CloudStack 很适合你。CloudStack的底层功能已经做的很完善了,目前CloudStack的落地项目很多,功能和稳定性上更适合商用。国内的公司只需要做一些界面的开发,结合客户的业务做一些定制即可。相对来说,开发难度低很多。国内的java程序员要比python程序员多很多,招人也方便。

    3. OpenStack在市场宣传、影响力方面远胜过CloudStack,支持伙伴、社区开发人数及讨论话题数、活跃程度等也高于CloudStack,但CloudStack的平台成熟度要优于OpenStack,CloudStack的用户体验及安装容易度也都比OpenStack要好,并已在更具生产实际的环境中得到了充分验证,而OpenStack到目前为止则更像是仍处于研发阶段难以称为“成熟的产品化的IT产品”。

    4.现在不管国内国外,主流公有云厂商的底座,都可以说是自研的。当然各个厂商自研的程度有区别,有的是从OpenStack某个版本切出来开始自己改,有的是借用了OpenStack某些模块,有的只是借鉴了OpenStack的设计思想,毕竟OpenStack作为开源云计算系统的标杆性项目,架构设计理念虽然不及Kubernetes,但也是云计算领域的佼佼者了。

  • 相关阅读:
    数据结构 习题1
    SpringMVC详细复习资料(SpringMVC注解式开发,SpringMVC拦截器,SSM整合)
    mongodb备份还原指南
    性能优化-中间件tomcat调优
    如何在激烈的市场竞争中实现互联网产品的用户增长和维护?
    苹果手机H5 video标签播放视频问题以及.mov格式处理方案
    数据库高级 V
    如何获取美团的热门商品和服务
    五个做原型的好处和意义
    [pcl][原创]qtcreator中pcl报错无法解析的外部符号 __imp_GetStockObject
  • 原文地址:https://blog.csdn.net/lsw_dabaojian/article/details/125470431