创建虚拟机中的nova-scheduler 调度配置

一个Openstack 系统中通常包括多个计算节点

[email protected]:/etc/nova# nova hypervisor-list
+----+---------------------+
| ID | Hypervisor hostname |
+----+---------------------+
| 1  | compute             |
| 2  | network             |
| 3  | compute2            |
+----+---------------------+

这就产生了一个问题,当发出创建虚拟机请求时,应该把虚拟机创建到哪个计算节点上呢? nova-scheduler 服务即是实现这个调度工作的,调度算法通过filter 和weight 来实现。filter 用于选择可用的计算节点。weight 用于在可用的计算节点中选择一个最佳的节点。

filter

filter 在nova.conf 中配置,改动须要重新启动nova-scheduler 服务

默认的filter 为(截取icehouse版)

scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter,ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter

以下列出各个filter 的功能

RetryFilter: 剔除上传已经被尝试调度过的计算节点

AvailabilityZoneFilter:剔除那些AvailabilityZone 不满足要求的计算节点

ComputeFilter 剔除那些非活动的计算节点

ComputeCapabilitiesFilter 检查计算节点的其它属性

ImagePropertiesFilter 剔除那些硬件架构,Hypervisor,虚拟机模式等属性不满足磁盘镜像要求的节点

filter 类存放在nova/scheduler/filter  文件夹下全部的

[email protected]:/usr/lib/python2.7/dist-packages/nova/scheduler/filters# ll *.pyc
-rw-r--r-- 1 root root 7207 Jul 15 09:33 affinity_filter.pyc
-rw-r--r-- 1 root root 2400 Jul 15 09:33 aggregate_image_properties_isolation.pyc
-rw-r--r-- 1 root root 2399 Jul 15 09:33 aggregate_instance_extra_specs.pyc
-rw-r--r-- 1 root root 1896 Jul 15 09:33 aggregate_multitenancy_isolation.pyc
-rw-r--r-- 1 root root  807 Jul 15 09:33 all_hosts_filter.pyc
-rw-r--r-- 1 root root 1588 Jul 15 09:33 availability_zone_filter.pyc
-rw-r--r-- 1 root root 2514 Jul 15 09:33 compute_capabilities_filter.pyc
-rw-r--r-- 1 root root 1763 Jul 15 09:33 compute_filter.pyc
-rw-r--r-- 1 root root 3671 Jul 15 09:33 core_filter.pyc
-rw-r--r-- 1 root root 1900 Jul 15 09:33 disk_filter.pyc
-rw-r--r-- 1 root root 2107 Jul 15 09:33 extra_specs_ops.pyc
-rw-r--r-- 1 root root 4003 Jul 15 09:33 image_props_filter.pyc
-rw-r--r-- 1 root root 2007 Jul 15 09:33 __init__.pyc
-rw-r--r-- 1 root root 1641 Jul 15 09:33 io_ops_filter.pyc
-rw-r--r-- 1 root root 2300 Jul 15 09:33 isolated_hosts_filter.pyc
-rw-r--r-- 1 root root 5435 Jul 15 09:33 json_filter.pyc
-rw-r--r-- 1 root root 2021 Jul 15 09:33 metrics_filter.pyc
-rw-r--r-- 1 root root 1521 Jul 15 09:33 num_instances_filter.pyc
-rw-r--r-- 1 root root 1497 Jul 15 09:33 pci_passthrough_filter.pyc
-rw-r--r-- 1 root root 3824 Jul 15 09:33 ram_filter.pyc
-rw-r--r-- 1 root root 1448 Jul 15 09:33 retry_filter.pyc
-rw-r--r-- 1 root root 9769 Jul 15 09:33 trusted_filter.pyc
-rw-r--r-- 1 root root 2237 Jul 15 09:33 type_filter.pyc

affinity_filter.py

这里文件中事实上有四个可用filter,都是关于亲和性的调度策略。分别例如以下:

DifferentHostFilter

创建虚拟机的同一时候能够指定一些虚拟机,要求新的虚拟机不能在这些虚拟机所在主机上创建。

说的简单一点,在host1上执行着vm1,要创建vm2。创建时指定了scheduler_hints->different_host=[vm1]。那么vm2就不会在host1上创建。

SameHostFilter

与上面的filter功能相反,假设创建时指定了scheduler_hints-> same_host=[vm1],那么vm2就能够创建在host1上。

SimpleCIDRAffinityFilter

假设指定了scheduler_hints-> build_near_host_ip,那么仅仅能在host1的管理IP网段内选择主机。

GroupAntiAffinityFilter

功能:指定scheduler_hints-> group_hosts=[host1, host2],那么虚拟机不能创建在这些host上。

core_filter.py

CoreFilter

功能:看host上的vcpu个数是否能满足创建虚拟机的instance_type中的vcpu个数。

依据CONF.cpu_allocation_ratio(默认是16)确定host上当前的vcpus_total。

disk_filter.py

DiskFilter

功能:看host上的disk大小是否能满足创建虚拟机的instance_type中的(root_gb + ephemeral_gb)。

计算disk总量时,会依据CONF.disk_allocation_ratio计算

ram_filter.py

RamFilter

AggregateRamFilter

同CoreFilter同样。

CONF.ram_allocation_ratio=1.5

image_props_filter.py

ImagePropertiesFilter

功能:看虚拟机image->properties中某些属性是否在host的capabilities->supported_instances内。

属性包含:architecture、hypervisor_type、vm_mode。假设image->properties中没有这些属性,则通过过滤;假设有这些属性,而host->capabilities->supported_instances没有,返回False。

io_ops_filter.py

IoOpsFilter

功能:依据主机的IO负载过滤。

IO负载由host->num_io_ops表示,与CONF.max_io_ops_per_host(默认是8)比較。

isolated_hosts_filter.py

IsolatedHostsFilter

功能:假设没有配置CONF.isolated_images,当前host不在CONF.isolated_hosts中,返回True。假设虚拟机image_ref在CONF.isolated_images中,且host在CONF.isolated_hosts中,返回True。其它情况返回False。

測试filter

我的环境眼下启动两个计算节点,horizon中的虚拟机管理器能够看到,compue 上可用资源最多。理论应该创建到compue 上

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

虚拟机在同样计算节点

改动scheduler_default_filters=SameHostFilter

[email protected]:/etc/nova# cat nova.conf
[DEFAULT]
scheduler_default_filters=SameHostFilter

或者在原有filter 前面加入 (规则从前到后优先)

scheduler_default_filters = SameHostFilter,RetryFilter, AvailabilityZoneFilter, RamFilter,ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter

运行创建虚拟机,加入參数same_host=想要指定的虚拟机,6c16999c-e94a-4947-8489-1333d28862f8  为

在network 节点。

[email protected]:/etc/nova# nova show 6c16999c-e94a-4947-8489-1333d28862f8
+--------------------------------------+------------------------------------------------------------+
| Property                             | Value                                                      |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                     |
| OS-EXT-AZ:availability_zone          | nova                                                       |
| OS-EXT-SRV-ATTR:host                 | network                                                    |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | network                                                    |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000135                                          |
| OS-EXT-STS:power_state               | 1                                                          |
| OS-EXT-STS:task_state                | -                                                          |
| OS-EXT-STS:vm_state                  | active                                                     |
| OS-SRV-USG:launched_at               | 2015-12-25T03:30:35.000000                                 |
| OS-SRV-USG:terminated_at             | -                                                          |
| accessIPv4                           |                                                            |
| accessIPv6                           |                                                            |
| config_drive                         |                                                            |
| created                              | 2015-12-25T03:30:29Z                                       |
| flavor                               | m1 (bbf0b691-2f6a-4781-885c-26511f3f9318)                  |
| hostId                               | 98b5cba71c2e72f61d0acb210bf7cc01a6ed8a3facabd5b6f4560f2a   |
| id                                   | 6c16999c-e94a-4947-8489-1333d28862f8                       |
| image                                | cirros-0.3.2-x86_64 (d5aab3ac-74b5-4d53-91ee-92a22b48bb61) |
| key_name                             | admin-key                                                  |
| metadata                             | {}                                                         |
| name                                 | vm2                                                        |
| os-extended-volumes:volumes_attached | []                                                         |
| progress                             | 0                                                          |
| security_groups                      | default                                                    |
| sharednet1 network                   | 192.168.12.116                                             |
| status                               | ACTIVE                                                     |
| tenant_id                            | 2996e46c2519415d8de2b141d6c607ba                           |
| updated                              | 2015-12-25T03:30:35Z                                       |
| user_id                              | 84ad09b97a7f41d08afdf20afee08daf                           |
+--------------------------------------+------------------------------------------------------------+

nova boot --flavor m1 --image cirros-0.3.2-x86_64  --nic net-id=d691ca44-6ec4-4118-b8dd-76f363a2b53f   --security-group default --key-name admin-key vm5 --hint same_host=6c16999c-e94a-4947-8489-1333d28862f8

[email protected]:~# source admin-openrc.sh
[email protected]:~# nova boot --flavor m1 --image cirros-0.3.2-x86_64  --nic net-id=d691ca44-6ec4-4118-b8dd-76f363a2b53f   --security-group default --key-name admin-key vm5 --hint same_host=6c16999c-e94a-4947-8489-1333d28862f8
+--------------------------------------+------------------------------------------------------------+
| Property                             | Value                                                      |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                     |
| OS-EXT-AZ:availability_zone          | nova                                                       |
| OS-EXT-SRV-ATTR:host                 | -                                                          |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                                          |
| OS-EXT-SRV-ATTR:instance_name        | instance-0000013c                                          |
| OS-EXT-STS:power_state               | 0                                                          |
| OS-EXT-STS:task_state                | scheduling                                                 |
| OS-EXT-STS:vm_state                  | building                                                   |
| OS-SRV-USG:launched_at               | -                                                          |
| OS-SRV-USG:terminated_at             | -                                                          |
| accessIPv4                           |                                                            |
| accessIPv6                           |                                                            |
| adminPass                            | LHdQ245ZKktd                                               |
| config_drive                         |                                                            |
| created                              | 2015-12-25T07:27:38Z                                       |
| flavor                               | m1 (bbf0b691-2f6a-4781-885c-26511f3f9318)                  |
| hostId                               |                                                            |
| id                                   | e9863fe9-effc-475a-b1c1-5925080c8399                       |
| image                                | cirros-0.3.2-x86_64 (d5aab3ac-74b5-4d53-91ee-92a22b48bb61) |
| key_name                             | admin-key                                                  |
| metadata                             | {}                                                         |
| name                                 | vm5                                                        |
| os-extended-volumes:volumes_attached | []                                                         |
| progress                             | 0                                                          |
| security_groups                      | default                                                    |
| status                               | BUILD                                                      |
| tenant_id                            | 2996e46c2519415d8de2b141d6c607ba                           |
| updated                              | 2015-12-25T07:27:39Z                                       |
| user_id                              | 84ad09b97a7f41d08afdf20afee08daf                           |
+--------------------------------------+------------------------------------------------------------+
[email protected]:~# nova show e9863fe9-effc-475a-b1c1-5925080c8399
+--------------------------------------+------------------------------------------------------------+
| Property                             | Value                                                      |
+--------------------------------------+------------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                     |
| OS-EXT-AZ:availability_zone          | nova                                                       |
| OS-EXT-SRV-ATTR:host                 | network                                                    |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | network                                                    |
| OS-EXT-SRV-ATTR:instance_name        | instance-0000013c                                          |
| OS-EXT-STS:power_state               | 1                                                          |
| OS-EXT-STS:task_state                | -                                                          |
| OS-EXT-STS:vm_state                  | active                                                     |
| OS-SRV-USG:launched_at               | 2015-12-25T07:27:46.000000                                 |
| OS-SRV-USG:terminated_at             | -                                                          |
| accessIPv4                           |                                                            |
| accessIPv6                           |                                                            |
| config_drive                         |                                                            |
| created                              | 2015-12-25T07:27:38Z                                       |
| flavor                               | m1 (bbf0b691-2f6a-4781-885c-26511f3f9318)                  |
| hostId                               | 98b5cba71c2e72f61d0acb210bf7cc01a6ed8a3facabd5b6f4560f2a   |
| id                                   | e9863fe9-effc-475a-b1c1-5925080c8399                       |
| image                                | cirros-0.3.2-x86_64 (d5aab3ac-74b5-4d53-91ee-92a22b48bb61) |
| key_name                             | admin-key                                                  |
| metadata                             | {}                                                         |
| name                                 | vm5                                                        |
| os-extended-volumes:volumes_attached | []                                                         |
| progress                             | 0                                                          |
| security_groups                      | default                                                    |
| sharednet1 network                   | 192.168.12.122                                             |
| status                               | ACTIVE                                                     |
| tenant_id                            | 2996e46c2519415d8de2b141d6c607ba                           |
| updated                              | 2015-12-25T07:27:46Z                                       |
| user_id                              | 84ad09b97a7f41d08afdf20afee08daf                           |
+--------------------------------------+------------------------------------------------------------+
[email protected]:~#

查看,新虚拟机又创建到了network 上面

原文地址:https://www.cnblogs.com/llguanli/p/8458165.html

时间: 2024-10-29 09:05:51

创建虚拟机中的nova-scheduler 调度配置的相关文章

虚拟机中的Linux系统网卡配置

输入下面语句,对网卡配置信息进行修改(根据情况名称可能不同)vi /etc/sysconfig/network-scripts/ifcfg-eth0 文件默认不可编辑,输入‘a’.‘i’或者‘insert’(部分版本可用)可以对文件进行编辑. 修改为上面的语句(DEVICE需和文件名中的保持一致).注意网关选项(GATEWAY)需要和虚拟机配置一致,该网关信息可以在虚拟的的‘编辑’-->‘虚拟网络编辑器’中选择对应的网卡进行配置. 在文档中按‘esc’键退出编辑,退出编辑后输入‘:wq’保存并退

Scala在Ubuntu虚拟机中下载安装及其环境配置+helloworld输出。

安装环境:Ubuntu虚拟机. 1.Scala下载:https://www.scala-lang.org/download/2.11.8.html(本教程以2.11.8版本为例) 选择第一个后缀为tgz下载. 2.解压 3.配置scala环境变量,及验证是否成功 若不知道如何编辑vim保存并退出可移步(https://www.cnblogs.com/1061321925wu/p/12222326.html) 出现以上命令则说明配置成功. 4.实现scala初级编程(helloworld) 以上教

(4) Spring中定时任务Quartz集群配置学习

原 来配置的Quartz是通过spring配置文件生效的,发现在非集群式的服务器上运行良好,但是将工程部署到水平集群服务器上去后改定时功能不能正常运 行,没有任何错误日志,于是从jar包.JDK版本.cronExpression到服务器类型,甚至查到了服务器操作系统的类型,都没能找到解决的办 法,后来才知道是集群惹的祸! 详细步骤如下: 1. 按照Quartz集群工作原理 图:表示了每个节点直接与数据库通信,若离开数据库将对其他节点一无所知 在数据库中建表.建表模版在Quartz包下docs/d

openstack之创建虚拟机

1.创建网络和子网 [[email protected] ~]# source admin-openrc.sh  [[email protected] ~]# neutron net-create flat --shared --provider:physical_network physnet1 --provider:network_type flat Created a new network: +---------------------------+-------------------

在虚拟机中,设置centos7静态ip

当我们在虚拟中安装完成centos7系统后,为了将centos中的ip固定,我们通常将centos中的ip设为静态值,下面我们将通过以下例程看一下,如何在虚拟机中设置centos7中的静态ip地址.1.虚拟机的设置 当我们正确安装虚拟机后,我们在windows系统中,可以通过 右击 "此电脑"选择"管理" 打开管理界面,然后点击"设备管理器",在右侧面板中选择"网络适配器",查看现在装有的网络适配器. 在上如界面中,会看到里面

虚拟机创建过程中镜像格式的的变化过程

这里通过OpenStack的horizon组件来创建一个m1.small的virtual machine,来详细分析下镜像格式的变化以及glance底层具体执行的哪些操作. (1)首先看一下Glance管理的镜像,如果采用local storage,glance将镜像文件默认存储到/var/lib/glance/image目录下,这里我们选择c036d689-0336-4fcd-a8e0-4aed4dd5e420这个镜像来作为创建虚拟机的模板,此镜像是通过如下命令添加的,因此在horizon中显

在Ceph中创建虚拟机流程改进之分析

作为个人学习笔记分享,有任何问题欢迎交流! 最近在Gerrit中看到一个change:https://review.openstack.org/#/c/94295/ , 它主要是对当前在Ceph中创建虚拟机的流程的改进.如果glance的backend是ceph, 则nova创建虚拟机到RBD的流程是这样的: 通过glance从ceph中下载image --> 本地 --> 复制image到rbd 这个change的目的就是:不需要下载到本地,直接在rbd中复制image,以提高虚拟机创建的速

Hadoop的配置过程(虚拟机中的伪分布模式)

1引言 hadoop如今已经成为大数据处理中不可缺少的关键技术,在如今大数据爆炸的时代,hadoop给我们处理海量数据提供了强有力的技术支撑.因此,了解hadoop的原理与应用方法是必要的技术知识. hadoop的基础原理可参考如下的三篇论文: The Google File System, 2003 MapReduce: Simplified Data Processing on Large Clusters, 2004 Bigtable: A Distributed Storage Syst

虚拟机中CentOS 7下PHP环境配置

为了简单起见,虚拟机网卡设置为桥接模式 1.yum install  httpd php 2.yum install mariadb 3.启动mariadb systemctl start mariadb.service #启动MariaDB systemctl stop mariadb.service #停止MariaDB systemctl restart mariadb.service #重启MariaDB systemctl enable mariadb.service #设置开机启动