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上。
- OpenStack Host Aggregation用例分析 (H版)
- OpenStack H版发布
- openstack H版安装参考文档
- H版Openstack使用noauth方法
- ElasticSearch Aggregation Bucket 实例分析
- openstack ice版availability zones host aggregates 实战详解
- Openstack 用Host aggregates实现灵活的调度策略
- Aggregation
- Aggregation is not enabled. Try the nodemanager at IP:HOST
- openstack G版源码分析
- 块设备驱动3--sd卡驱动2(linux-3.2.36的host.h分析)
- H版openstack创建虚机的方式
- centos6.5下利用RDO安装openstack H版(VLAN)
- 使用OpenStack创建VM,遇到No valid host was found 错误的分析 (持续更新中)
- openstack g版 glance 源码分析
- Openstack G版Cinder源码分析
- Openstack Avalibility Zone and Host Aggregates
- Aggregation > Aggregation Concepts > Aggregation Pipeline
- MFC中UpdateData()函数的使用
- 【DFS】hdu 1010 Tempter of the Bone(迷宫)
- matlab注释方法
- 赫夫曼编码和实现
- 未解决的正则表达式
- OpenStack Host Aggregation用例分析 (H版)
- hdu 1042 N!
- 循环队列的实现和操作
- [bzoj1003] [ZJOI2006]物流运输trans
- 老婆,对不起
- 函数传值传引用原理
- 日记
- 项目部署
- 类模板的应用