配额、使用计划和容量管理

跨项目规范 - 无

用户故事追踪器 - 无

问题描述

问题定义

像 OpenStack 这样的 IaaS 系统的典型特性是“按需容量”。 用户期望能够根据需要通过 UI 或 API 分配新资源,并在需求结束后释放它们。 通过支持大量用户、汇集资源以及维护一些剩余容量,云服务提供商 (CSP) 呈现出无限容量的假象。

当然,在实践中,资源并非无限,CSP 必须实施措施来管理容量,从而最大限度地减少资源耗尽。 这通常是通过对特定项目可能消耗的资源施加上限或配额,以及通过管理可用物理资源与所有项目的聚合配额之间的关系来实现的。 当项目需要比其分配的配额更多的资源时,用户通常需要提交请求,通常需要人工审批。 CSP 可能会拒绝该请求,或者延迟它直到有足够的容量可用。 当请求获得批准时,项目的配额将被修改以反映新的限制。

其他 CSP 引入了许多机制来为他们提供容量管理方面的灵活性。 这些包括组配额(由相关项目共享)、预留实例、临时实例(可以回收以供重新分配)以及基于市场的分配模型。 目前,OpenStack 不支持这些机制中的任何一种。

所有这些流程的一个共同因素是,它们都没有反映资源使用的时序变化。 然而,在许多情况下,用户知道他们的使用情况会随着时间的推移而变化,并且这些信息对需要决定如何处理每个请求的 CSP 来说是有用的。 它也可能促进某些处理的自动化。 以下用户故事捕捉了这里的可能性。

这个用户案例也适用于电信运营商/TSP(电信服务提供商)用户。行业正朝着NFV(网络功能虚拟化)方向发展,希望通过在位于数据中心、网络节点和终端用户场所的行业标准大容量服务器、交换机和存储设备上部署VNF(虚拟网络功能)来利用云技术和虚拟化的优势。这些VNF的资源需求在VNF描述符(VNFD)中进行了描述,该描述符正在ETSI NFV ISG [1]和OASIS TOSCA的主持下进行标准化。

机会/理由

CSP和TSP需要能够高效地管理和利用有限的资源,包括其时间特性。当前的OpenStack服务不允许这种灵活的资源使用请求和未来使用的资源调度。特别是

  • 对于高优先级的VNF(例如移动核心网节点),TSP需要保证在不同操作时间(例如未来)和场景下运行VNF的资源可用性。

需求规范

用例

本节使用了 OpenStack UX 人物

  • CRM001 作为电信运营商的项目负责人Wei,我希望以一种能够由CSP自动化处理的方式来指定我的资源使用请求(RUR),以便我的RUR能够更快、更准确地处理。
  • CRM002 作为基础设施架构师Adrian,我希望能够自动化RUR的处理,以便我能够满足用户SLA并为我的容量管理和规划系统获得更及时、准确的数据输入。
  • CRM003 作为Wei,我希望能够描述我的RUR的时间特性,以便CSP能够更准确地规划容量并减少资源请求失败的可能性。我的CSP也可能为更准确的使用预测提供更好的定价。基于时间的RUR的一些示例
    1. 我计划从 2016 年 6 月 1 日到 2016 年 8 月 14 日使用最多 60 个 vCPU 和 240GB 的 RAM。
    2. 我计划从 2016 年 8 月 14 日开始使用 200GB 的对象存储,此后每个日历月增加 100GB。
    3. 我希望我的项目能保证获得30个vCPU和200GB的RAM。此外,在10月至12月期间,我希望能够将使用量增加到150个vCPU和1TB的RAM。
    4. 我希望保证获得4个实例,每个实例具有1个vCPU、1GB的RAM和10GB的磁盘,以及实例之间1Gbps的保证最低带宽。这个例子类似于VNFD中描述的内容。
  • CRM004 作为Wei,我希望能够每月为我的项目提交滚动RUR的更新版本,以便我的CSP拥有准确的信息并能给我提供最佳价格和SLA。
  • CRM005 作为Wei,我希望能够利用我的CSP提供的定价和其他优惠,以实现我的项目的业务目标。例如
    1. 我需要至少 60 个 vCPU 一个小时。 过了这段时间,如果其他地方需要资源,CSP 可能会关闭我的所有实例。(我假设这些实例的价格较低。)
    2. 我需要在未来 24 小时内使用最多 100 个 vCPU。 告诉我我可以拥有多少个。
  • CRM006 作为Adrian,我希望能够自动化基于时间的资源使用计划的构建和解释,以便我能够调度最具成本效益的操作来维护我的SLA。一些操作示例
    1. 安排额外基础设施的配置。
    2. 重新利用已分配的基础设施。
    3. 根据使用情况预测将新项目分配到多个区域之一。
    4. 从联盟合作伙伴或经销商处添加“爆发容量”。
    5. 修改或推迟另一个项目。
  • CRM007 作为Wei,我希望能够随时查询/更新/终止RUR。
  • CRM008 作为Wei,如果RUR不成功,我希望收到相应的错误消息。如果RUR失败,我希望环境能恢复到RUR之前的状态。换句话说,RUR事务应该是原子的。如果RUR失败,错误消息应该包含足够的信息,以便用户可以采取措施修改RUR。
  • CRM009 作为Adrian,我希望能够自动化RUR并进行收费,以便只考虑以下具有资源要求的用户
    1. 账户付款及时
    2. RUR在配额内
    3. RUR的成本加上当前余额低于项目/租户阈值

用例示例

  1. 为即将到来的事件预留资源
    1. 电信运营商的项目负责人Wei负责大型活动(如大型音乐会和节日)的网络规划,这些活动预计会出现局部流量高峰。
    2. 为了确保2017年7月22-24日即将举行的富士摇滚音乐节有足够的网络容量,Wei通过创建RUR预留了额外的容量,该RUR描述了上述日期和额外资源的数量,例如,4个实例,每个实例具有1个vCPU、1GB的RAM、10GB的磁盘,以及实例之间1Gbps的保证最低带宽,这些资源是服务扩展所需的。
    3. RUR成功处理后,Wei被告知已为活动日期预留了适当的资源。
  2. 为维护工作预留资源
    1. Wei负责更新他的服务,而云运营商Rey负责维护底层云环境,包括其硬件。现在,团队计划在下周一为几台计算主机进行维护窗口。
    2. 为了避免对服务造成影响,Wei计划在周日(即维护窗口前一天)将运行在这些主机上的所有虚拟机迁移到不受维护工作影响的其他主机上。
    3. 为了确保这些其他主机在周日至维护窗口结束期间可用,Wei通过其前端工具预留了所需的资源。
    4. 在后端,系统为该时间窗口创建相应的RUR,以保证资源的可用性,并且系统向Wei返回一个预留ID。
    5. 周日,Wei引用预留ID触发受影响虚拟机的迁移。Rey随后触发云上的维护工作。工作可能比预期提前完成,并且在虚拟机迁移回来后,Wei可以提前释放预留。
  3. 为灾难恢复预留资源
    1. Wei负责确保核心服务在灾难情况下运行。为了能够立即对灾难情况做出反应,服务为其核心服务维护了一个灾难配置,并为这种情况保留了相应的资源。
    2. 就在刚才,一场地震袭击了该国,政府发布了自动海啸警报。Wei有一个短暂的时间窗口来准备海啸袭击海岸线及其影响,例如,大量异常通信,如紧急通信、疏散指示和安全确认。
    3. Wei将服务切换到预配置的灾难配置。切换到灾难配置由专门为此类情况预留的资源提供支持。
  4. 为启动新服务预留资源
    1. Wei负责推出一项对基础设施资源有复杂要求的新服务。为了避免在资源分配过程中一个要求无法满足,并且必须回滚或更改资源分配以满足要求的风险,Wei首先为所需的资源创建了一个预留,并在请求中指定了资源必须满足的所有参数和条件。
    2. 预留服务尝试根据指定标准预留资源。成功创建预留后,会向Wei返回一个预留ID。
    3. Wei随后引用预留ID触发服务设置,因为他知道所有资源要求都可以满足。新服务在没有冲突的情况下初始化。

需求

  • 这些功能的实现将在一定程度上取决于更灵活和全面的配额方案的存在,以便容量管理系统可以以编程方式调整配额。
  • 它还需要一个丰富的监控、通知和可视化系统,以便用户和 CSP 都能拥有关于系统行为的准确和及时的信息。

外部参考

[1] ETSI NFV IFA在以下标准规范中规定了“资源预留”的概念和用例
VNFD:<http://www.etsi.org/deliver/etsi_gs/NFV-IFA>

拒绝的用户故事/用例

无。

术语表

  • RUR - 资源使用请求
  • CSP - 云服务提供商
  • VNFD - 虚拟网络功能(VNF)描述符,描述VNF的资源需求