OpenStack Host Aggregation用例分析 (H版)

来源:互联网 发布:淘宝网店怎么关闭 编辑:程序博客网 时间:2024/05/02 19:48

前两天遇到这样一个问题,用户在创建VM instance的时候,想让一些VM instance创建到SSD的机器上,一部分VM instance创建到SAS的机器上,并且live migration的时候,也要遵守这样的规则。

这是一个非常典型的host aggregation的用例,我们可以通过AggregateInstanceExtraSpecsFilter来实现此功能。

第一步,enable AggregateInstanceExtraSpecsFilter,编辑/etc/nova/nova.conf,将如下配置加到[DEFAULT]段,配置完成后,重启nova-scheduler让配置生效。

scheduler_default_filters=AggregateInstanceExtraSpecsFilter

[root@rhel8233 ~]# /etc/init.d/openstack-nova-scheduler  restartStopping openstack-nova-scheduler:                         [  OK  ]Starting openstack-nova-scheduler:                         [  OK  ]

第二步,创建第一个host aggregation,并为这个host aggregation设置metadata SSD=1

[root@rhel8233 ~]# nova aggregate-create aggregate1 nova+----+------------+-------------------+-------+----------+| Id | Name       | Availability Zone | Hosts | Metadata |+----+------------+-------------------+-------+----------+| 1  | aggregate1 | nova              |       |          |+----+------------+-------------------+-------+----------+[root@rhel8233 ~]# nova aggregate-add-host 1 rhel8234Aggregate 1 has been successfully updated.+----+------------+-------------------+---------------+---------------------------------+| Id | Name       | Availability Zone | Hosts         | Metadata                        |+----+------------+-------------------+---------------+---------------------------------+| 1  | aggregate1 | nova              | [u'rhel8234'] | {u'availability_zone': u'nova'} |+----+------------+-------------------+---------------+---------------------------------+[root@rhel8233 ~]# nova aggregate-set-metadata 1 SSD=1Aggregate 1 has been successfully updated.+----+------------+-------------------+---------------+-----------------------------------------------+| Id | Name       | Availability Zone | Hosts         | Metadata                                      |+----+------------+-------------------+---------------+-----------------------------------------------+| 1  | aggregate1 | nova              | [u'rhel8234'] | {u'SSD': u'1', u'availability_zone': u'nova'} |+----+------------+-------------------+---------------+-----------------------------------------------+

第三步,创建第二个host aggregation,并为这个host aggregation设置metadata SAS=1

[root@rhel8233 ~]# nova aggregate-create aggregate2 nova+----+------------+-------------------+-------+----------+| Id | Name       | Availability Zone | Hosts | Metadata |+----+------------+-------------------+-------+----------+| 2  | aggregate2 | nova              |       |          |+----+------------+-------------------+-------+----------+[root@rhel8233 ~]# nova aggregate-add-host 2 rhel8235Aggregate 2 has been successfully updated.+----+------------+-------------------+---------------+---------------------------------+| Id | Name       | Availability Zone | Hosts         | Metadata                        |+----+------------+-------------------+---------------+---------------------------------+| 2  | aggregate2 | nova              | [u'rhel8235'] | {u'availability_zone': u'nova'} |+----+------------+-------------------+---------------+---------------------------------+[root@rhel8233 ~]# nova aggregate-set-metadata 2 SAS=1Aggregate 2 has been successfully updated.+----+------------+-------------------+---------------+-----------------------------------------------+| Id | Name       | Availability Zone | Hosts         | Metadata                                      |+----+------------+-------------------+---------------+-----------------------------------------------+| 2  | aggregate2 | nova              | [u'rhel8235'] | {u'SAS': u'1', u'availability_zone': u'nova'} |+----+------------+-------------------+---------------+-----------------------------------------------+
第四步,创建两个flavor,一个设置
[root@rhel8233 ~]# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      | {}          || 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      | {}          || 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      | {}          || 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      | {}          || 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      | {}          |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+[root@rhel8233 ~]# nova flavor-create ssd 6 512 0 1 +----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |+----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| 6  | ssd  | 512       | 0    | 0         |      | 1     | 1.0         | True      | {}          |+----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+[root@rhel8233 ~]# nova flavor-key 6 set SSD=1[root@rhel8233 ~]# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs    |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      | {}             || 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      | {}             || 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      | {}             || 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      | {}             || 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      | {}             || 6  | ssd       | 512       | 0    | 0         |      | 1     | 1.0         | True      | {u'SSD': u'1'} |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+[root@rhel8233 ~]# nova flavor-create sas 7 512 0 1 +----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |+----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+| 7  | sas  | 512       | 0    | 0         |      | 1     | 1.0         | True      | {}          |+----+------+-----------+------+-----------+------+-------+-------------+-----------+-------------+[root@rhel8233 ~]# nova flavor-key 7 set SAS=1[root@rhel8233 ~]# nova flavor-list+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs    |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+| 1  | m1.tiny   | 512       | 1    | 0         |      | 1     | 1.0         | True      | {}             || 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      | {}             || 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      | {}             || 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      | {}             || 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      | {}             || 6  | ssd       | 512       | 0    | 0         |      | 1     | 1.0         | True      | {u'SSD': u'1'} || 7  | sas       | 512       | 0    | 0         |      | 1     | 1.0         | True      | {u'SAS': u'1'} |+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+----------------+

第五步,创建VM instance

[root@rhel8233 ~]# nova boot --image  cirros-0.3.0-x86_64 --flavor 6 vm1+-------------------------------------+--------------------------------------+| Property                            | Value                                |+-------------------------------------+--------------------------------------+| OS-EXT-STS:task_state               | scheduling                           || image                               | cirros-0.3.0-x86_64                  || OS-EXT-STS:vm_state                 | building                             || OS-EXT-SRV-ATTR:instance_name       | instance-00000012                    || flavor                              | ssd                                  || id                                  | ffaaff35-f696-4887-b3b9-84a73edbb143 || security_groups                     | [{u'name': u'default'}]              || user_id                             | 5091a627caa3497ba42a5c3e44826310     || OS-DCF:diskConfig                   | MANUAL                               || accessIPv4                          |                                      || accessIPv6                          |                                      || progress                            | 0                                    || OS-EXT-STS:power_state              | 0                                    || OS-EXT-AZ:availability_zone         | nova                                 || config_drive                        |                                      || status                              | BUILD                                || updated                             | 2013-03-06T07:01:22Z                 || hostId                              |                                      || OS-EXT-SRV-ATTR:host                | None                                 || key_name                            | None                                 || OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 || name                                | vm1                                  || adminPass                           | o5ArG99zSxkD                         || tenant_id                           | 2e4d1beeb95344d5802d4a7ba488f076     || created                             | 2013-03-06T07:01:21Z                 || metadata                            | {}                                   |+-------------------------------------+--------------------------------------+[root@rhel8233 ~]# nova boot --image  cirros-0.3.0-x86_64 --flavor 7 vm2+-------------------------------------+--------------------------------------+| Property                            | Value                                |+-------------------------------------+--------------------------------------+| OS-EXT-STS:task_state               | scheduling                           || image                               | cirros-0.3.0-x86_64                  || OS-EXT-STS:vm_state                 | building                             || OS-EXT-SRV-ATTR:instance_name       | instance-00000013                    || flavor                              | sas                                  || id                                  | dc5f5ce9-3327-448d-af52-fb5fac197b38 || security_groups                     | [{u'name': u'default'}]              || user_id                             | 5091a627caa3497ba42a5c3e44826310     || OS-DCF:diskConfig                   | MANUAL                               || accessIPv4                          |                                      || accessIPv6                          |                                      || progress                            | 0                                    || OS-EXT-STS:power_state              | 0                                    || OS-EXT-AZ:availability_zone         | nova                                 || config_drive                        |                                      || status                              | BUILD                                || updated                             | 2013-03-06T07:01:29Z                 || hostId                              |                                      || OS-EXT-SRV-ATTR:host                | None                                 || key_name                            | None                                 || OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 || name                                | vm2                                  || adminPass                           | X9cuS3chj2Cg                         || tenant_id                           | 2e4d1beeb95344d5802d4a7ba488f076     || created                             | 2013-03-06T07:01:28Z                 || metadata                            | {}                                   |+-------------------------------------+--------------------------------------+
第六步,检查VM instance的home server,是不是创建在对应的机器上

[root@rhel8233 ~]# nova list+--------------------------------------+------+--------+----------+| ID                                   | Name | Status | Networks |+--------------------------------------+------+--------+----------+| ffaaff35-f696-4887-b3b9-84a73edbb143 | vm1  | ACTIVE |          || dc5f5ce9-3327-448d-af52-fb5fac197b38 | vm2  | ACTIVE |          |+--------------------------------------+------+--------+----------+[root@rhel8233 ~]# nova show vm1+-------------------------------------+------------------------------------------------------------+| Property                            | Value                                                      |+-------------------------------------+------------------------------------------------------------+| status                              | ACTIVE                                                     || updated                             | 2013-03-06T07:01:27Z                                       || OS-EXT-STS:task_state               | None                                                       || OS-EXT-SRV-ATTR:host                | rhel8234                                                   || key_name                            | None                                                       || image                               | cirros-0.3.0-x86_64 (11042c91-2476-4386-a3ad-038df763ec5b) || hostId                              | 75f0f4964d23eb4048bf23a3617a46e1fddeabde72f0165deb2440e9   || OS-EXT-STS:vm_state                 | active                                                     || OS-EXT-SRV-ATTR:instance_name       | instance-00000012                                          || OS-EXT-SRV-ATTR:hypervisor_hostname | rhel8234                                                   || flavor                              | ssd (6)                                                    || id                                  | ffaaff35-f696-4887-b3b9-84a73edbb143                       || security_groups                     | [{u'name': u'default'}]                                    || user_id                             | 5091a627caa3497ba42a5c3e44826310                           || name                                | vm1                                                        || created                             | 2013-03-06T07:01:21Z                                       || tenant_id                           | 2e4d1beeb95344d5802d4a7ba488f076                           || OS-DCF:diskConfig                   | MANUAL                                                     || metadata                            | {}                                                         || accessIPv4                          |                                                            || accessIPv6                          |                                                            || progress                            | 0                                                          || OS-EXT-STS:power_state              | 1                                                          || OS-EXT-AZ:availability_zone         | nova                                                       || config_drive                        |                                                            |+-------------------------------------+------------------------------------------------------------+[root@rhel8233 ~]# nova show vm2+-------------------------------------+------------------------------------------------------------+| Property                            | Value                                                      |+-------------------------------------+------------------------------------------------------------+| status                              | ACTIVE                                                     || updated                             | 2013-03-06T07:01:34Z                                       || OS-EXT-STS:task_state               | None                                                       || OS-EXT-SRV-ATTR:host                | rhel8235                                                   || key_name                            | None                                                       || image                               | cirros-0.3.0-x86_64 (11042c91-2476-4386-a3ad-038df763ec5b) || hostId                              | cf84f90cb460f9c2516abb5b9ec0e49503d22369c71f6d1940b30dd0   || OS-EXT-STS:vm_state                 | active                                                     || OS-EXT-SRV-ATTR:instance_name       | instance-00000013                                          || OS-EXT-SRV-ATTR:hypervisor_hostname | rhel8235                                                   || flavor                              | sas (7)                                                    || id                                  | dc5f5ce9-3327-448d-af52-fb5fac197b38                       || security_groups                     | [{u'name': u'default'}]                                    || user_id                             | 5091a627caa3497ba42a5c3e44826310                           || name                                | vm2                                                        || created                             | 2013-03-06T07:01:28Z                                       || tenant_id                           | 2e4d1beeb95344d5802d4a7ba488f076                           || OS-DCF:diskConfig                   | MANUAL                                                     || metadata                            | {}                                                         || accessIPv4                          |                                                            || accessIPv6                          |                                                            || progress                            | 0                                                          || OS-EXT-STS:power_state              | 1                                                          || OS-EXT-AZ:availability_zone         | nova                                                       || config_drive                        |                                                            |+-------------------------------------+------------------------------------------------------------+
通过以上,可以看出我们的配置已经生效,使用SSD的VM创建在了rhel8234上,而使用SAS的创建在了rhel8235上。
原创粉丝点击