OpenStack是一个软件框架,可让企业将物理数据中心的一部分(通过网络、外部存储设备和其它设备连接的许多计算机机架)虚拟化为基础设施即服务(IaaS)“云”——从功能上来说,非常类似于 VMware vCenter或Amazon EC2等公共云服务。
OpenStack云用户 可以访问WebUI、命令行界面和/或软件控制的API来配置、启动和管理虚拟基础设施(虚拟机、网络、存储等),从而加快软件开发速度、应用程序操作和基础设施操作,并且(原则上)非常有效地利用底层硬件。根据实施情况,他们还可以使用OpenStack云方便地启动开发人员环境、托管容器运行时和/或运行在OpenStack虚拟化基础设施之上的Kubernetes集群。
OpenStack云管理员可以控制访问和用户权限以防止滥用,从而将资源分配给用户、组和租户组织以管理利用率;并提供一系列自动化和其他服务,帮助开发人员和IT运营商更快地行动:例如“数据库即服务”(例如Amazon RDS)、应用程序目录和/或Kubernetes。
运行OpenStack云组织可以快速构建和扩展其私有云,并有效地管理利用率和成本。由于云是完全私有的,因此他们可以完全控制数据的存储和移动位置以及方式,并以严格的方式管理安全性和合规性的其它方面,而这在共享云环境中几乎不可能(和/或更昂贵)。
与任何私有云一样,OpenStack主要潜在缺点是采用它的组织需要购买和安置基础设施,并自行构建和运行云。但最近技术和合作方面的进步让这一切变得更加容易。事实上,你可以在自己的场所拥有私有 OpenStack 云,并像公共云一样使用它,即“as a service”。
OpenStack有哪些好处?
大多数OpenStack用户都希望创建一个私有云,为他们提供与公共云相同的便捷功能,但是是在私有计算环境中。企业组织可能需要或更喜欢私有云而不是公共云的原因有很多。这些包括:
- 隐私(很显然) – 私有云可让你保持对访问(即谁可以从你的云请求服务和/或在您的云上运行应用程序、用户被允许执行和查看哪些内容)和数据(即数据如何存在)的绝对控制。访问、传输、存储和加密),这可能是法规遵从性和公司治理所需要的。
- 效率和性能- 在私有云中,你几乎可以控制有关云和应用程序的配置方式以及运行方式的几乎所有内容。因此,你可以进行调整,以实现性能与资源利用率之间的良好(动态)平衡。
- 灵活性- OpenStack可以在非常广泛的计算硬件上运行,并与许多不同类型的网络、存储和其它设备很好地集成。因此,你可以构建非常强大的云来实现高性能计算(例如,具有大量CPU和GPU的机架计算机,例如机器学习、视频和游戏流、科学计算和其他任务所需的云),或者使用非常经济实惠的云廉价、通用的计算和存储硬件。
- 成本——虽然私有云确实在硬件和数据中心环境准备和维护方面存在前期成本,但构建和运营私有云的净成本是相当可预测的。正如许多早期公共云采用者所发现的那样,使用公共云的成本并不那么可预测,通常比预期高得多,并且随着时间的推移,在许多用例中往往会超过私有云成本。因此,越来越多的企业将部分IT运营从公有云“迁移”到私有云。
除此之外,大多数用户都在提供以下功能的环境中寻求这些基本好处:
1、开源平台:OpenStack是开源的,这意味着它的源代码向公众开放,可以自由使用、修改和分发。数千名个人开发人员和许多组织的自愿贡献意味着OpenStack能够快速发展:安全问题得到修补、错误得到修复、新特性和功能频繁出现,并在全面发布之前经过有序的社区评估过程。因此,用户可以按照自己的意愿快速创新,并从其他用户那里获得大量(免费)帮助。开源还意味着软件本身提供了一定程度的免于锁定的自由。例如,OpenStack可以在各种Linux操作系统上运行,因此用户不会被锁定到特定的发行版(及其许可和支持计划)。
然而,大多数用户并不直接从其“上游”源部署OpenStack。相反,就像Linux 一样(你通常不会构建自己的Linux,而是使用Canonical或 Red Hat或其它组织的发行版),它们使用由供应商组装和配置的OpenStack发行版,然后供应商可以提供支持和其它服务。OpenStack 的发行版通常包括安全性强化、部署工具和其他附加组件。选择发行版时需要注意的一件事是发行版制造商在配方中投入了多少锁定(如果有):例如,当你从操作系统制造商那里获得OpenStack时,是否需要对该操作系统进行许可?
2、可扩展性: OpenStack设计具有高度可扩展性,这意味着它可以随着组织需求的变化而增长和适应。而且由于它是开源的,软件本身的成本很低,因此你可以使用OpenStack构建非常大的云,其TCO低于专有解决方案,而且随着时间的推移,你的成本也比在公共云环境中使用相同资源要低得多。
3、高可用性 (HA) 和可靠性:OpenStack旨在实现高可用性和可靠性,它具有防止控制平面中断的功能(例如,由于单个服务器甚至多个服务器的故障),以及在工作节点发生故障时自动恢复应用程序的方法。最现代的OpenStack发行版通过在Kubernetes底层的容器中部署 OpenStack控制平面来进一步增强这一点。通过这种方式部署,各个控制平面元素可以根据需要跨多个服务器水平扩展,以保持高可用性,即使在承受请求或管理大流量的负担时也是如此。与传统组件部署相比,容器化控制平面的更新也更加容易和快捷。
4、多租户:OpenStack具有复杂的内部护栏,允许管理员细分云访问并为其分配资源配额。你可以划分一个OpenStack来为多个租户提供服务:每个租户都将OpenStack视为自己的云。租户可以拥有自己的角色(管理员、用户等),并且可以进一步划分为组织和项目。任何组织都可以使用这些功能为不同目的创建单独的虚拟环境,精确分配资源并满足资源配额保证,以确保事物运行良好,同时仍然有效地共享相同的底层硬件。这一系列功能还有助于解释为什么OpenStack是构建公共云和托管SaaS服务的首选解决方案,这些服务支持许多具有严格安全性和合规性要求的客户。
5、应用程序编程接口(API): OpenStack提供命令行接口(CLI)和 API,让开发人员可以编写脚本和独立程序来自动化云操作。大多数流行的编程语言都通过软件开发套件 (SDK) 和库进行支持,这些库可以安装和导入,为您喜爱的语言提供广泛的OpenStack命令词汇:配置和启动虚拟机、定义虚拟网络等。工具(例如Ansible)还具有OpenStack插件(有时称为“providers”),让你也可以轻松使用这些工具。如果你的组织使用多个云环境(例如OpenStack、VMware、AWS等),你通常能够对所有这些目标云使用大部分相同的自动化功能。
谁会使用OpenStack?
如前所述,大多数组织利用OpenStack在单个或多个位置创建经济高效、高度可扩展的私有云。除了私有企业数据中心之外,OpenStack还用于构建:
- 公有云: OpenStack深受Rackspace、OVH和DreamHost等公有云提供商的欢迎,这些提供商以按使用付费的方式向客户提供云服务。这些提供商使用OpenStack来配置虚拟机、存储和网络资源,并管理其云基础设施。
- 混合云: OpenStack非常适合与公共云结合来创建扩展的IT环境。OpenStack提供了必要的工具来管理跨不同云的资源,以及在公共云和私有云之间迁移工作负载。
- 研究和科学计算云: OpenStack源自NASA、RackSpace的原创工作,并被CERN等组织早期采用,在大学和研究机构中拥有许多用户。它经常出现在科学计算环境中,管理大规模模拟、数据分析和其他科学应用的计算和存储资源。OpenStack能够根据特定需求进行扩展和定制,使其成为这些要求苛刻的用例的理想选择。
- 电信和服务提供商云和边缘云:电信、SaaS 和其它类型的服务提供商通常选择OpenStack来构建大规模和/或多位置云来托管其服务。在最底层,OpenStack可以提供与专用硬件(例如高效网卡及其支持软件框架、用于流处理的GPU等)的高效接口,以适应大量数据的高性能处理。OpenStack可以配置为使用非常高性能的虚拟网络。因此,OpenStack经常成为网络设备制造商的目标,他们创建在OpenStack虚拟机上运行并连接到OpenStack虚拟网络的虚拟化网络功能(例如,基于软件的路由器、转码器、安全边缘设备、5G 网络基站管理器等)。在更高的层面上,管理和编排系统的制造商还利用OpenStack来编排这些VNF,快速为客户提供服务并灵活地提供服务(例如,在靠近客户场所的边缘云上)。OpenStack还经常用于托管Kubernetes和其它容器编排框架,而这些框架又用于托管容器化网络功能。
- 政府和公共部门云:政府、军队、警察和其它公共部门组织采用OpenStack为其应用程序和服务创建私有云基础设施。开源解决方案因其透明度、安全性、灵活性和成本效率而受到公共部门的重视。公共部门组织还经常需要私有云提供的控制。
OpenStack核心组件
OpenStack由一组互操作组件组成,一般来说,OpenStack的主要核心组件包括:
- Horizon(仪表板/控制面板): Horizon是OpenStack的基于Web的图形用户界面,它提供了一种直观的方式来管理OpenStack本身(即在租户、组织、项目等级别)并管理OpenStack资源,例如实例、卷和网络,而无需使用命令行界面。
- Nova(计算): Nova允许用户创建、启动和管理虚拟机——或者用OpenStack的话说,“实例”。它支持多种虚拟机管理程序,包括KVM和Xen,并且具有高度可扩展性,能够创建数千个虚拟机。
- Cinder(块存储): Cinder允许你创建和管理存储卷(虚拟化磁盘驱动器)和快照(可用于重新填充虚拟存储卷的文件)。它支持广泛的存储后端,包括服务器上的物理旋转磁盘和SSD、网络附加存储设备和存储区域网络。
- Neutron(网络): Neutron允许你使用虚拟设备(例如网关、路由器)构建虚拟网络、定义虚拟网卡并将其附加到虚拟机。Neutron模拟所有最重要的物理网络技术和标准,包括虚拟局域网 (VLAN) 和覆盖网络。
- Keystone(身份): Keystone提供身份验证和授权服务,让运营商管理用户和实体身份。它与LDAP、Active Directory和OAuth等外部身份提供商集成,简化了企业云的配置。Keystone的设计目标是高度安全,并且可以支持复杂且细粒度的身份和访问管理要求,例如实施零信任所需的要求。
- Glance(图像): Glance管理图像文件 – 二进制blob,代表带有可启动操作系统的虚拟硬盘的内容,以独立于某些配置详细信息的方式代表所有这些。你可以创建工作虚拟机的映像文件(例如,软件工程师的开发环境),然后使用该映像按需启动新的开发环境,可能具有不同的虚拟计算核心、RAM内存和/或存储分配设备类型/尺寸。大多数企业OpenStack运营商为开发人员提供一系列允许的VM映像,例如,组织首选Linux特定版本,以特定方式进行预配置和强化,以满足组织要求。Glance支持多种流行的云映像格式,包括ISO、QCOW2和VMDK。
- 其它OpenStack组件:除了这些核心组件之外,OpenStack社区还启动了(在某些情况下,是长期的)项目来构建、维护和改进数十种附加服务,如DNS-as-Service、Database-as-a-Service和Dependency Management。这些组件与OpenStack核心部分协同工作,使你能够创建丰富的云环境,这些环境易于开发人员使用,也易于组织管理。
实际上,每个OpenStack组件通常都有自己的CLI和API,并且这些组件遵循通用模式,因此从命令行或您自己的自动化代码中使用它们相对容易。
OpenStack培训和认证
OpenStack为开发人员和IT专业人员提供全面的培训和认证计划。该计划包括涵盖OpenStack基础知识、架构、部署和管理的各种课程。
当然,你还可以参加认证考试来验证证明你的OpenStac 熟练程度,以便当前和未来的潜在招聘人员对你的技能更有信心。认证考试适用于不同的角色,例如OpenStack管理员、OpenStack开发人员和 OpenStack架构师。
OpenStack认证在全球范围内得到认可,展示了你在OpenStack方面的专业知识。它是增强IT专业人员的职业前景并改善组织的OpenStack采用和管理的绝佳方式。
OpenStack与AWS
OpenStack和AWS经常被拿来比较,这两种解决方案在某种程度上是并行发展的(即,构建OpenStack的人熟悉AWS,反之亦然)。AWS是最著名的公有云,并且在很长一段时间里都是最大的——对于希望创建混合云、将私有云成本效率与公有云按需扩展相结合的组织来说,它无疑是候选名单之一。在当前时代,由于难以预测和控制成本而放弃公共云的组织通常将OpenStack视为私有云解决方案。
OpenStack和WS之间的异同
- 全面性: OpenStack和AWS都提供了一套全面的服务和功能,用于在云中部署和管理应用程序。这两个平台都支持创建虚拟机、存储、网络和其他云服务。两者都支持混合云配置,并且都提供用于自动化的CLI和API。
- 开源与专有: OpenStack是一个开源平台,而AWS是一个专有平台。这意味着OpenStack是免费提供的,并且可以根据需要进行定制和扩展,并且供应商锁定通常不是问题。
- 锁定因素:AWS提供了一个真正庞大的辅助服务库,以解决不同的企业计算挑战。这些很方便,但也很棘手:正如许多AWS用户所发现的那样,使用广泛的AWS功能可能会使未来离开AWS的成本过高。在大多数情况下(例如,Kubernetes、容器托管、无服务器计算、数据库即服务等),类似的功能可以在OpenStack上本地提供,或者使用开源的第三方解决方案,粘性风险要小得多。
- 可扩展: OpenStack和AWS都具有可扩展性,使用户能够根据需求的变化轻松增加或减少所使用的资源量。当然,AWS更强大,因此你可以在AWS上快速扩展,而不必担心底层硬件资源耗尽。然而,在实践中,除了某些类型的应用程序(例如,像FortNite这样的图形多用户游戏)之外,很少利用 AWS(或更准确地说是公共云)的优势,这些应用程序的流量需求在短时间内急剧增长(或收缩)。对于运行许多应用程序的普通企业来说,流量和利用率往往是稳定且可预测的,因此可以做出扩展决策(对于私有云,需要购买和容纳新硬件并扩展云框架以利用这种新容量)以更加谨慎的步伐实施。简而言之,在现实世界中,按需、无限的可扩展性很少会成为问题。
- 成本: OpenStack的开源特性以及在商用硬件上运行的能力比AWS更具成本效益,特别是对于大规模部署,但其主要优势在于其可预测性;你始终知道私有云的成本是多少,而公共云的成本可能会迅速激增。
OpenStack与VMware
OpenStack和VMware也是经常被比较的,因为它们代表了当今买家可用的两种最流行的企业私有云方法。在当前时代,许多组织将OpenStack视为VMware(长期受到大型企业青睐)的可能替代方案,因为VMware被Broadcom收购后成本不断上升且支持存在不确定性。
OpenStack和VMware之间的异同
- 全面性: OpenStack和VMware都提供全面的服务和功能,用于在云中部署和管理应用程序。目前,它们的功能大致相同。
- 开源性: VMware是一个专有平台,这意味着你无法更改或扩展它以满足特定需求。它被设计为仅在经过认证的硬件上运行,并且支持的主机操作系统范围有限,从而增加了成本。
- 许可: VMware许可非常复杂,并且当你向上扩展VMware堆栈时(例如,在VMware风格中添加Kubernetes,称为Tanzu),许可成本会不断增加。相反,大多数OpenStack解决方案都有更简单的许可方案,OpenStack提供商专注于收入支持。
OpenStack和Kubernetes
长期以来,OpenStack和Kubernetes 被认为是“竞争对手”,因为两者都被用来创建云计算环境,但现在情况已不再如此。事情已经解决了:OpenStack经常用于托管Kubernetes,而Kubernetes也可以用于托管OpenStack的容器化版本。
但总的来说,OpenStack和Kubernetes之间的主要区别在于,OpenStack通常用于托管在虚拟机中运行效果最佳的虚拟化应用程序,而Kubernetes通常用于托管容器化应用程序。
也就是说,OpenStack可以托管容器(例如,使用OpenStack项目Magnum),Kubernetes可以托管虚拟机(使用kubevirt.io或其它解决方案)。
实际上,OpenStack是一个流行的平台,用于为那些不能或不想使用谷歌或亚马逊等公共云提供商的大型Kubernetes平台的团队部署Kubernete。有几个项目可以在OpenStack之上自动部署Kubernetes,如OpenShift、OpenStack Magnum、KubeSpray和Airship。
目前许多使用Kubernetes的团队选择将Kubernete部署到OpenStack上,这样他们就可以在为非云应用程序使用OpenStack的同时,为“云原生”应用程序享受Kubernets的所有强大功能和自动化。
OpenStack局限性
OpenStack的关键功能使其成为高度通用和可定制的云计算平台,可以满足广泛的组织和用例的需求,但OpenStack(与任何云平台一样)确实有一些局限性。最为显着地:
复杂性和陡峭的学习曲线: OpenStack很复杂——构建、保护和维护OpenStack云需要大量的技术专业知识。这对于平台工程师和管理员来说可能意味着陡峭的学习曲线,并且可能需要增加人员数量并接受培训。然而,通过与可以持续提供产品和支持的可靠供应商合作,可以抵消OpenStack的复杂性。
供应商锁定的可能性:尽管OpenStack的核心是开源的,但各种类型的锁定的可能性仍然存在。如上所述,OpenStack的某些发行版实际上被锁定到特定的Linux发行版,也有可能被锁定在OpenStack和各种专有硬件(如存储、网络)之间的集成中,从而使更改或迁移变得更加复杂和昂贵。对用户最友好(不利于锁定)的OpenStack发行版可以被描述为“虽包括但不需要”。也就是说,这些发行版基本上运行在任何硬件和一系列流行的Linux发行版上,并配有可靠的基于开源的存储和网络解决方案,这些解决方案使用通用的“聚合”硬件,可从许多来源以有竞争力的价格获得。
结论
OpenStack是一个强大的开源云计算平台,为用户提供广泛的功能和优势。它提供可扩展性、灵活性、高可用性和安全性,使其适用于从公共云提供商到政府和公共部门组织的各种用例。OpenStack的架构和组件协同工作,提供完整的云基础设施,可以进行定制和扩展以满足特定需求。其广泛的生态系统提供资源,并让用户与社区合作,推动其发展和改进。
展望未来,OpenStack作为领先的开源云计算平台将继续发展和扩张。容器化、边缘计算和机器学习等领域的改进将使OpenStack能够解决新的用例并提供更大的价值。