Spec Lite:基于 Netapp Active IQ 的调度器称重器

问题:

Manila 调度器称重器是通用的,其设计目的是基于后端统计信息进行称重,仅限于该信息集。对于某些 NetApp 环境,拥有一个更具体的工具来跟踪存储状态(空间、CPU 使用率等)并使用统计和人工智能技术以更有效的方式对主机进行称重可能更有帮助。

解决方案:

为了进行更好的权重评估,NetApp 拥有自己的软件,称为 Active IQ (AIQ) [1]。AIQ 连接到 NetApp 存储,动态地收集和处理每个设备的状态。使用 REST API 端点,外部服务可以请求 AIQ 为给定的共享创建称重可用的存储。API 请求示例

{
     "method": "POST",
     "url": "https://10.63.167.192/api/storage-provider/data-placement/balance",
     "args": [],
     "headers": {
         "Accept": "application/json",
         "Content-Type": "application/json"
     },
     "json": {
         "capacity": "10GB",
         "eval_method": 0,
         "opt_method": 0,
         "priority_order": [
             "ops",
             "latency",
             "volume_count",
             "size"
         ],
     "ssl_key": "bbda43aa-aee9-11ed-a4cd-005056bd7087",
     "separate_flag": false,
     "resource_keys": [
         "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=b22ea874-eada-4c31-b6f9-1cf95e2bdacc",
         "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=a39c5d4f-2ca9-4910-b57f-71a7936656c9",
         "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=ec6a23a2-c98f-4640-8b4b-4615c1969751"
         ]
     }
}

API 响应

{
    "request_ok": true,
    "status_code": 200,
    "headers": {
        "Expires": "0",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "X-Powered-By": "NetApp Application Server",
        "Server": "NetApp Application Server",
        "X-XSS-Protection": "1; mode=block",
        "Pragma": "no-cache",
        "X-Frame-Options": "SAMEORIGIN"
    },
    "data": [
        {
            "scores": {
                "total_weighted_score": 30.0
            },
            "key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=a39c5d4f-2ca9-4910-b57f-71a7936656c9"
        },
        {
            "scores": {
                "total_weighed_score": 20.0
            },
            "key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=b22ea874-eada-4c31-b6f9-1cf95e2bdacc"
        },
        {
            "scores": {
                "total_weighted_score": 10.0
            },
            "key": "1c54fcf0-2adb-11ec-86b0-d039ea2ef942:type=aggregate,uuid=ec6a23a2-c98f-4640-8b4b-4615c1969751"
        }
    ]
}

这个想法是提出一个特定供应商的调度器称重器,称为 NetAppActiveIQWeigher,它将调用 NetApp AIQ 以获取每个主机的权重。如果主机列表中至少包含一个非 NetApp 主机,则跳过该称重器。为了连接到外部服务,新的称重器需要云管理员设置的连接配置,它们是:aiq_usernameaiq_passwordaiq_hostnameaiq_port。为了获得更大的称重灵活性,该称重器将包含以下可选配置:aiq_eval_methodaiq_opt_methodaiq_priority_orderaiq_separate_flag(请参阅 Active IQ 文档)。云管理员可能希望根据新的工作负载的性能和存储目标来过滤存储。 AIQ 具有性能服务级别概念,可以提供此功能,并且可以在权重请求期间告知。因此,此规范建议添加一个新的 NetApp 作用域的 extra-spec,称为 netapp:aiq_performance_level,作为一个 UUID 字符串,代表 AIQ 性能服务级别。权重请求需要将要评估的聚合 UUID 集合。不幸的是,NetApp 驱动程序统计信息不包含它,因此驱动程序必须开始报告每个池的 UUID。可以在驱动程序启动时收集一次,不会影响驱动程序的生命周期。

影响:
  • NetApp 驱动程序影响。
    • 驱动程序将开始报告 NetApp 聚合 UUID

  • 文档影响
    • 管理员指南

    • 贡献者指南

  • 调度器影响
    • 提出一个供应商称重器:NetAppActiveIQWeigher

  • CI 影响
    • 为虚拟驱动程序作业添加新的称重器

    • 为 NetApp 作业添加新的称重器

此实现可能会影响调度器称重器阶段的性能,因为 NetApp 称重器将运行网络请求。

替代方案:

除了继续使用通用称重器外,没有其他替代方案。

时间线:

包含在 Bobcat 版本中。

链接:
负责人:

felipe_rodrigues