6g下载网
当前位置: 主页 > 软件教程 > 云计算 >

OpenStack可扩展性怎么设计?OpenStack可扩展性设计教程

时间: 2016-12-27 21:40 来源: 本站整理

分享到:

OpenStack可扩展性怎么设计?今天小编整理一篇OpenStack可扩展性设计教程的文章和大家分享,希望能给大家提供帮助。

虽然传统应用需要更大的硬件来进行扩展(“垂直扩展”),但是基于云的应用通常需要更多的离散硬件(“水平扩展”)。 如果您的云成功,最终您必须添加资源以满足日益增长的需求。

为了适应云模式,OpenStack本身设计为可水平扩展。 而不是切换到较大的服务器,您采购更多的服务器,只需安装相同配置的服务。 理想情况下,您在消息总线上进行通信的功能相同的服务组(例如,计算节点或nova-api节点)之间进行横向扩展和负载平衡。

起点

确定云的可扩展性和如何改进它是一个具有许多变量平衡的练习。 没有一个解决方案满足每个人的可扩展性目标。 但是,跟踪一些指标是有帮助的。 由于您可以在OpenStack中定义虚拟硬件模板(称为“flavors”),因此您可以根据所提供的风格开始做出扩展决策。 这些模板定义RAM中的内存大小,根磁盘大小,可用的临时数据磁盘空间量以及启动器的核心数。默认OpenStack模板如表所示:

OpenStack可扩展性怎么设计?OpenStack可扩展性设计教程

大多数的起点是你的云的核心数。 通过应用一些比率,您可以收集有关以下内容的信息:您希望运行的虚拟机(VM)数量((overcommit fraction×cores)/每个实例的虚拟核心数)需要多少存储(flavor磁盘大小×实例数)您可以使用这些比率来确定需要多少额外的基础架构来支持云。下面是使用比率收集预期虚拟机数量和所需存储的可伸缩性信息的示例。 以下数字支持(200/2)×16 = 1600个VM实例,并且/ var / lib / nova / instances需要80 TB的存储空间: 200物理内核。大多数实例的大小为m1.medium(两个虚拟核心,50 GB的存储)。默认CPU过载比率(nova.conf中的cpu_allocation_ratio)为16:1。 但是,您需要的核心数量不仅仅是估计API服务,数据库服务器和队列服务器可能遇到的负载。您还必须考虑云的使用模式。作为具体示例,将支持托管web托管平台的云与针对每个代码提交创建一个VM的开发项目的运行集成测试进行比较。在前者中,创建VM的繁重工作仅发生在几个月,而后者在云控制器上施加不变的重负载。您必须考虑平均VM生命周期,因为更大的数字通常意味着云控制器上的负载更少。除了VM的创建和终止,您必须考虑访问服务的用户的影响 - 特别是在nova-api及其相关数据库上。列出实例获取大量信息,并且考虑到用户运行此操作的频率,具有大量用户的云可以显着增加负载。这可能会发生,即使没有他们的知识,离开打开的OpenStack仪表板实例选项卡在浏览器中刷新VM列表每30秒。考虑这些因素后,您可以确定需要多少云控制器内核。一个典型的八核,8 GB的RAM服务器足以满足多达一个机架的计算节点 - 考虑到上述警告。您还必须考虑用户虚拟机性能的关键硬件规格,以及预算和性能需求,包括存储性能(主轴/核心),内存可用性(RAM /内核),网络带宽(Gbps /内核)和总体CPU性能(CPU /内核)。

添加云控制器节点

您可以通过添加节点来促进云的水平扩展。添加计算节点很简单 - 它们很容易被现有安装所拾取。但是,当您将集群设计为高可用性时,必须考虑一些重要的问题。回想一下,云控制器节点运行几种不同的服务。您可以安装仅在内部使用消息队列进行通信的服务(nova-scheduler和nova-console)在新服务器上进行扩展。然而,其他整体部件需要更加小心。您应该负载平衡面向用户的服务,如dashboard,nova-api或Object Storage代理。使用任何标准HTTP负载平衡方法(DNS轮循,硬件负载平衡器或软件,如Pound或HAProxy)。仪表板的一个警告是VNC代理,它使用WebSocket协议 - L7负载均衡器可能会遇到的东西。另请参阅Horizo​​n会话存储。您可以配置一些服务,例如nova-api和glance-api,通过更改其配置文件中的标志来使用多个进程 - 允许它们在一个机器上的多个内核之间共享工作。

隔离你的云

当您希望为用户提供不同的区域,以便为数据存储,跨地震故障线路的冗余或低延迟API调用提供合法注意事项时,您需要隔离云。 使用以下OpenStack方法之一隔离云:单元,区域,可用区或主机聚合。每种方法提供不同的功能,并且可以最好地分成两组:单元和区域,它隔离整个云并导致运行单独的Compute部署。可用区和主机聚合,它们仅仅划分一个Compute部署。下表包含了OpenStack隔离方法提供了OpenStack Compute当前提供的每个隔离方法的比较。

OpenStack可扩展性怎么设计?OpenStack可扩展性设计教程

单元和区域

OpenStack计算单元被设计为允许以分布式方式运行云,而不必使用更复杂的技术,或者侵入现有的nova安装。云中的主机被划分为称为单元的组。单元格在树中配置。顶层单元(“API单元”)有一个运行nova-api服务但没有nova-compute服务的主机。每个子单元都运行在常规安装中找到的所有其他典型的nova- *服务,除了nova-api服务。每个单元具有其自己的消息队列和数据库服务,并且还运行nova单元,其管理API单元和子单元之间的通信。这允许使用单个API服务器来控制对多个云安装的访问。除了主机的常规nova调度器选择之外,引入第二级调度(单元选择)提供了更大的灵活性来控制虚拟机在哪里运行。与具有单个API端点不同,每个安装区域都有单独的API端点,允许更为离散的分离。希望在网站上运行实例的用户必须显式选择一个区域。然而,不需要运行新服务的额外复杂性。 OpenStack仪表板(horizon)可以配置为使用多个区域。这可以通过AVAILABLE_REGIONS参数配置。

可用区域和主机聚合

您可以使用可用区域,主机聚合或两者来分区nova部署。可用区通过类似于主机聚合的方式实现和配置。但是要根据不同原因来使用它们。

可用区域

这使您能够将OpenStack计算主机安排为逻辑组,并提供一种形式的物理隔离和冗余与其他可用区域,例如通过使用单独的电源或网络设备。您可以定义指定计算主机在每个服务器上本地驻留的可用区域。 可用性区域通常用于标识具有公共属性的一组服务器。 例如,如果数据中心中的某些机架位于单独的电源上,则可以将服务器放在这些机架中的自己的可用区域中。 可用区还可以帮助分离不同类别的硬件。当用户提供资源时,他们可以指定他们希望从哪个可用区域构建其实例。 这允许云消费者确保其应用程序资源分布在不同的机器上,以在硬件故障的情况下实现高可用性。

主机聚合区域

这使您能够将OpenStack Compute部署分区为逻辑组,以实现负载均衡和实例分配。您可以使用主机聚合来进一步分区可用性区域。例如,您可以使用主机聚合将可用区分区为共享公用资源(如存储和网络)或具有特殊属性(如可信计算硬件)的主机组。主机聚合的常见用途是提供用于与nova-scheduler一起使用的信息。例如,您可以使用主机聚合对一组共享特定风格或图像的主机进行分组。这种情况的一般情况是在flavor的extra_specs元数据中的聚合元数据和匹配键值对中设置键值对。过滤器调度程序中的AggregateInstanceExtraSpecsFilter将强制仅在聚合中的主机上调度实例,这些聚合将相同的键定义为相同的值。这种一般概念的高级使用允许不同的风味类型以不同的CPU和RAM分配比率运行,使得高强度计算负载和低强度开发和测试系统可以共享同一云而不会使高利用系统挨饿或浪费低利用率系统的资源。这通过在您的主机聚合中设置元数据并在您的flavor类型中匹配extra_specs。第一步是将聚合元数据键cpu_allocation_ratio和ram_allocation_ratio设置为浮点值。在计划聚合中的主机时,过滤器调度程序AggregateCoreFilter和AggregateRamFilter将使用nova.conf中的全局默认值,而不使用这些值。使用此功能时请务必谨慎,因为每个主机可以在多个聚合中,但每个资源只应有一个分配比例。你应该避免将主机放在为同一资源定义不同值的多个聚合中。这是方程的前半部分。要获取保证特定比率的模板类型,您必须将模板类型中的extra_specs设置为您要在聚合中匹配的键值对。例如,如果将extra_specs cpu_allocation_ratio定义为“1.0”,那么该类型的实例将仅在元数据键cpu_allocation_ratio也定义为“1.0”的情况下在聚合中运行。在实践中,最好定义一个附加的键值对在聚合元数据中匹配而不是直接匹配cpu_allocation_ratio或core_allocation_ratio。这允许更好的抽象。例如,通过定义密钥过量落实并设置值“高”,“中”或“低”,您可以调整聚合中的数字分配比率,而不需要更改与它们相关的所有模板类型。

可扩展的硬件

虽然已经存在一些资源来帮助部署和安装OpenStack,但确保您提前规划部署是非常重要的。 本指南假定您至少为OpenStack云预留了一个机架,但也提供了何时和什么扩展的建议。

硬件采购

“云”被描述为一个易变的环境,其中可以随意创建和终止服务器。虽然这可能是真的,但这并不意味着您的服务器必须是易失性的。确保云的硬件稳定和配置正确意味着您的云环境保持正常运行。基本上,努力创建一个稳定的硬件环境,使您可以托管一个云,用户可以认为是不稳定和易变的。 OpenStack可以部署在与OpenStack兼容的Linux发行版支持的任何硬件上。硬件不必是一致的,但它至少应该具有相同类型的CPU来支持实例迁移。推荐用于OpenStack的典型硬件是大多数硬件供应商库存的标准价值产品。将采购划分为诸如“计算”,“对象存储”和“云控制器”的构建块,并根据需要请求尽可能多的这些块。或者,如果您无法支出更多,如果您有现有的服务器,只要它们满足您的性能要求和虚拟化技术,他们很可能能够支持OpenStack。

容量规划

OpenStack旨在以直接的方式增加大小。 考虑到我们在本章中提到的考虑 - 特别是在云控制器的规模 - 应该可以根据需要采购额外的计算或对象存储节点。 新节点不需要是与现有节点相同的规范,甚至是供应商。对于计算节点,nova-scheduler将处理与核心计数和RAM量有关的大小差异; 但是,您应该考虑用户体验随着不同的CPU速度而变化。 当添加对象存储节点时,应指定反映节点能力的权重。监控资源使用和用户增长将使您知道何时采购。 日志和监视详细介绍了一些有用的指标。

老化测试

服务器硬件故障的机会在其使用寿命的开始和结束时很高。 因此,通过适当的老化测试可以避免在生产期间处理硬件故障,以尝试触发早期故障。 一般原则是强调硬件的极限。 老化测试的示例包括运行CPU或磁盘基准测试几天。

OpenStack可扩展性设计教程的文章和大家分享结束,感谢阅读!

(责任编辑:大卫)

分享到:

------分隔线----------------------------