"深入解析 nova-scheduler 的计算节点选择机制"

需积分: 0 0 下载量 77 浏览量 更新于2023-12-25 收藏 385KB DOCX 举报
本节主要介绍了nova-scheduler的调度机制和实现方法。nova-scheduler的功能是解决在哪个计算节点上启动instance的问题。在OpenStack中,创建Instance时用户会提出资源需求,例如CPU、内存、磁盘等,这些需求被定义在flavor中,用户只需要指定用哪个flavor就可以了。在System->Flavors中管理可用的flavor。Flavor主要定义了VCPU,RAM,DISK和Metadata这四类。nova-scheduler会按照flavor去选择合适的计算节点。在/etc/nova/nova.conf中,nova通过scheduler_driver,scheduler_available_filters和scheduler_default_filters这三个参数来配置nova-scheduler。其中,filter scheduler是一种多层过滤的机制,用来选择合适的计算节点。 具体来说,nova-scheduler会通过多个filter层层过滤计算节点,最终选择合适的计算节点来启动instance。在一个示例中,开始时有6个计算节点Host1-Host6,通过多个filter的过滤,Host2和Host4没有通过,被刷掉了。在这个过程中,nova-scheduler会考虑VCPU,RAM,DISK和Metadata等因素,来选择最合适的计算节点。而Metadata则是一个比较有意思的因素,后面会具体讨论。 在选择计算节点时,nova-scheduler通过filter scheduler进行多个层次的过滤。首先,scheduler会根据用户需求的flavor中定义的资源需求(如VCPU,RAM,DISK)进行过滤,然后再考虑其他的因素,最终选择出最合适的计算节点。 总的来说,nova-scheduler的调度机制是一个多层过滤的过程,通过考虑flavor定义的资源需求和其他因素,最终选择出最合适的计算节点来启动instance。这个过程是通过filter scheduler来实现的,通过配置nova.conf中的参数来进行设置和调整。这样的调度机制可以确保instance能够在合适的计算节点上运行,从而最大限度地利用计算资源,提高系统的性能和可靠性。