You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenStack中创建并部署Nova Filter Scheduler?

OpenStack Nova自定义调度过滤器完整操作流程

核心疑问先明确:文档中提及的自行创建的自定义过滤器包必须安装到nova-scheduler节点的nova服务对应Python运行环境中,否则scheduler服务无法识别加载你的自定义过滤器。

1. 自定义过滤器代码编写规范

  • 首先你需要创建一个Python类,继承nova.scheduler.filters.BaseHostFilter基类
  • 必须实现host_passes方法,方法入参为host_state(宿主机状态对象)、filter_properties(调度请求携带的参数),返回布尔值,True表示宿主机通过过滤,False表示被排除
  • 可选:设置RUN_ON_REBUILD = False(默认值),表示实例重建时不重新执行该过滤器,若有特殊需求可设为True
  • 简单代码示例:实现仅允许调度到总内存大于16G宿主机的过滤器
# 文件名:custom_memory_filter.py
from nova.scheduler.filters import BaseHostFilter

class CustomMemoryFilter(BaseHostFilter):
    RUN_ON_REBUILD = False

    def host_passes(self, host_state, filter_properties):
        # 取宿主机总内存,单位为MB
        total_mem = host_state.total_memory_mb
        return total_mem >= 16 * 1024

2. 代码放置与包部署

两种部署方式可选,优先推荐第一种独立包方式,避免污染原生Nova代码、升级时被覆盖:

方式一:独立Python包安装(推荐)

  • 把你的过滤器代码放到一个独立Python包目录下,目录结构参考:
custom_nova_filters/
├── __init__.py
├── custom_memory_filter.py
└── setup.py
  • setup.py内容示例,需要声明Nova依赖以及entry point指向你的过滤器类:
from setuptools import setup, find_packages

setup(
    name="custom-nova-filters",
    version="0.1",
    packages=find_packages(),
    entry_points={
        'nova.scheduler.filters': [
            'CustomMemoryFilter = custom_nova_filters.custom_memory_filter:CustomMemoryFilter',
        ]
    },
    install_requires=['nova>=23.0.0'] # 对应你使用的Wallaby版本Nova的版本号即可
)
  • 切换到nova-scheduler节点的Nova运行Python环境(如果是用venv部署的需要先激活venv),在setup.py所在目录执行pip install .完成包安装。

方式二:直接放入Nova原生代码目录(不推荐)

  • 直接把你的custom_memory_filter.py文件放到Nova安装路径的scheduler/filters/目录下,默认路径一般为/usr/lib/python3.x/site-packages/nova/scheduler/filters/,无需额外打包安装。

3. 修改Nova配置生效

  • 编辑nova-scheduler节点的/etc/nova/nova.conf配置文件
  • 找到[scheduler]配置段,修改enabled_filters参数,在原有默认过滤器列表末尾加上你的过滤器类名,示例:
[scheduler]
enabled_filters = ...原有默认过滤器列表...,CustomMemoryFilter
# 如果你开发的是自定义权重类,同步修改weight_classes配置即可
  • 保存配置文件后,重启nova-scheduler服务生效:systemctl restart openstack-nova-scheduler

4. 功能验证

  • 查看nova-scheduler日志/var/log/nova/nova-scheduler.log,无加载错误提示即说明过滤器部署成功
  • 可创建测试实例,核对调度结果是否符合你的过滤规则即可。

内容的提问来源于stack exchange,提问作者Swetank Subham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:36:00