Openstack Cinder的调度服务用于选择一个合适的cinder-volume节点来处理用户有关云盘生命周期的请求。本文介绍调度器affinity/anti-affinity的原理和使用方法。
一 简介
过滤器affinity/anti-affinity描述了云盘之间的关系,affinity表示新创建的云盘跟指定的云盘在同一个后端(back-end/pool), anti-affinity表示新创建的云盘跟指定的云盘在不同一个后端(back-ends/pools).为了实现该功能,Cinder新增了2个过滤器SameBackendFilte/DifferentBackendFilter.
二 功能验证
Mitaka版本默认不配置调度器SameBackendFilte/DifferentBackendFilter,需要另外配置。
1. 验证cinder后端为zte,fujitsu 2种磁阵后端,openstack版本为Mitaka。
2. 配置调度器SameBackendFilte/DifferentBackendFilter
为了使能该调度器,需要在cinder.conf中增加scheduler_default_weighers为SameBackendFilte/DifferentBackendFilter,并重启openstack-cinder-scheduler服务。
[DEFAULT]
scheduler_default_filters = AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter,SameBackendFilter,DifferentBackendFilter
3. 命令
# Volume A 后端是 'backend 1', 创建跟volume A后端相同的Volume B,命令如下
cinder create --hint same_host=VolA-UUID SIZE
# Volume A 后端是 'backend 1', 创建跟volume A后端不同的Volume C,命令如下
cinder create --hint different_host=VolA-UUID SIZE
# Volume A 后端是 'backend 1', 创建跟volume A和volumeC都不同的Volume D,命令如下
cinder create --hint different_host=VolA-UUID --hint different_host=VolC-UUID SIZE
cinder create --hint different_host="[VolA-UUID, VolC-UUID]" SIZE
4. SameBackendFilte过滤器测试
(1)先创建云盘test1,host为cinder@FUJITSU_ETERNUS-1#FUJITSU
。
$ cinder create 1 --name test1
+--------------------------------+--------------------------------------+
| Property | Value |
+--------------------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2019-05-08T07:05:52.000000 |
| description | None |
| encrypted | False |
| id | b9f37226-ef9e-417a-8e6a-2661b6a35a0f |
| metadata | {} |
| migration_status | None |
| multiattach | False |
| name | test1 |
| os-vol-host-attr:host | cinder@FUJITSU_ETERNUS-1#FUJITSU |
| os-vol-mig-status-attr:migstat | None |
| os-vol-mig-status-attr:name_id | None |
| os-vol-tenant-attr:tenant_id | b56b9ffcd531451f967b914658ce4058