1. 背景需求

在openstack中,nova负责openstack虚拟机的生命周期的管理,neutron则负责虚拟机的网络管理工作,默认情况下,创建一台虚拟机,nova会根据nova-scheduler调度算法,选择一台最合适的compute节点,同时会从neutron的地址池中分配一个ip地址给虚拟机,从而完成虚拟机的创建过程。

然而,在一些特殊的场景中,如相同业务的虚拟机,希望落在不通的compute节点上,为虚拟机分配原有的ip地址,此时通过nova内置的调度是难以实现的,或者在一些应用场景,基于企业的CMDB联动,让相同业务的虚拟机,散落在openstack nova中的不同节点,从而减小down机的几率,减少故障的发生。本文以在指定的compute节点创建instance,并为其分配一个固定的ip地址为例。

2. 获取创建instance的基本信息

  1. 获取镜像p_w_picpath id

[root@controller ~]# glance p_w_picpath-list
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+
| ID                                   | Name                     | Disk Format | Container Format | Size        | Status |
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+
| 37aaedc7-6fe6-4fc8-b110-408d166b8e51 | cirrors                  | qcow2       | bare             | 13200896    | active |    #需要创建instance的p_w_picpath id
| ff0f7d03-a553-4357-a819-c74e913d649f | win2k8                   | qcow2       | bare             | 3391881216  | active |
+--------------------------------------+--------------------------+-------------+------------------+-------------+--------+

2. 获取套餐flavor id

[root@controller ~]# nova flavor-list
+--------------------------------------+------------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID                                   | Name             | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+--------------------------------------+------------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1                                    | m1.large         | 8192      | 100  | 10        |      | 4     | 1.0         | True      |
| 10                                   | V.GF1            | 8192      | 10   | 0         |      | 4     | 1.0         | True      |    #需要创建的flavor id

3. 获取安全组id

[root@controller ~]# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id                                   | Name    | Description |
+--------------------------------------+---------+-------------+
| 663468d9-73b1-4b04-8d4c-dac1bf21a94d | default | default     |        #secgroup的id号码
+--------------------------------------+---------+-------------+

4. 获取keypair

[root@controller ~]# nova keypair-list
+------+-------------------------------------------------+
| Name | Fingerprint                                     |
+------+-------------------------------------------------+
| KEY  | 15:63:f2:de:74:53:a1:03:eb:36:27:e6:d9:00:41:22 |        #keypair的名字
+------+-------------------------------------------------+

5. 获取neutron网络id号码

[root@controller ~]# neutron net-list
+--------------------------------------+---------------+-------------------------------------------------------+
| id                                   | name          | subnets                                               |
+--------------------------------------+---------------+-------------------------------------------------------+
| 99c68a93-336a-4605-aa78-343d41ca1206 | vmTest        | 79cb82a1-eac1-4311-8e6d-badcabd22e44 192.168.100.0/24 |    #需要启动的网络id号
+--------------------------------------+---------------+-------------------------------------------------------+

6. 获取coompute的主机名和zone名称

[root@controller ~]# nova service-list
+------------------+-------------------------+-------------------+---------+-------+----------------------------+-----------------+
| Binary           | Host                    | Zone              | Status  | State | Updated_at                 | Disabled Reason |
+------------------+-------------------------+-------------------+---------+-------+----------------------------+-----------------+
| nova-conductor   | ChuangYiYuan_10_16_2_8  | internal          | enabled | up    | 2016-01-23T04:54:58.000000 | -               |
| nova-cert        | ChuangYiYuan_10_16_2_8  | internal          | enabled | up    | 2016-01-23T04:54:52.000000 | -               |
| nova-consoleauth | ChuangYiYuan_10_16_2_8  | internal          | enabled | up    | 2016-01-23T04:54:57.000000 | -               |
| nova-scheduler   | ChuangYiYuan_10_16_2_8  | internal          | enabled | up    | 2016-01-23T04:54:57.000000 | -               |
| nova-compute     | ChuangYiYuan_10_16_2_11 | ChuangYiYuanZone1 | enabled | up    | 2016-01-23T04:54:56.000000 | -               |    #需要启动的compute节点
| nova-compute     | ChuangYiYuan_10_16_2_14 | ChuangYiYuanZone1 | enabled | up    | 2016-01-23T04:54:56.000000 | -               |

3. 在指定的compute节点启动虚拟机,并指定固定ip地址

[root@controller ~]# nova boot --flavor 10  \            #flavor名字
--p_w_picpath 37aaedc7-6fe6-4fc8-b110-408d166b8e51 \            #镜像id
--key-name  KEY  \                         #KEY名字
--availability-zone ChuangYiYuanZone1:ChuangYiYuan_10_16_2_11  \   #在制定的区域和主机名启动instance
--security-groups 663468d9-73b1-4b04-8d4c-dac1bf21a94d  \      #安全组
--nic net-id=99c68a93-336a-4605-aa78-343d41ca1206,v4-fixed-ip=192.168.100.200 happyblog_blog_51cto_com    #指定网络和IP地址
+--------------------------------------+------------------------------------------------+
| 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-000001f9                              |
| 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                            | 4T3vpfaXPTZe                                   |
| config_drive                         |                                                |
| created                              | 2016-01-23T04:44:51Z                           |
| flavor                               | V.GF1 (10)                                     |
| hostId                               |                                                |
| id                                   | 3f694eaf-aa87-456a-99ce-90dd9f4e45ee           |
| p_w_picpath                                | cirrors (37aaedc7-6fe6-4fc8-b110-408d166b8e51) |
| key_name                             | KEY                                            |
| metadata                             | {}                                             |
| name                                 | happyblog_blog_51cto_com                       |
| os-extended-volumes:volumes_attached | []                                             |
| progress                             | 0                                              |
| security_groups                      | 663468d9-73b1-4b04-8d4c-dac1bf21a94d           |
| status                               | BUILD                                          |
| tenant_id                            | 842ab3268a2c47e6a4b0d8774de805ae               |
| updated                              | 2016-01-23T04:44:52Z                           |
| user_id                              | bc5e46fc4204497185ae3ca6f8b7affb               |
+--------------------------------------+------------------------------------------------+

校验配置情况

[root@controller ~]# nova list | grep 3f694eaf-aa87-456a-99ce-90dd9f4e45ee
| 3f694eaf-aa87-456a-99ce-90dd9f4e45ee | happyblog_blog_51cto_com | ACTIVE | -          | Running     | vmTest=192.168.100.200   | ChuangYiYuan_10_16_2_11 |
[root@controller ~]# nova show 3f694eaf-aa87-456a-99ce-90dd9f4e45ee
+--------------------------------------+----------------------------------------------------------+
| Property                             | Value                                                    |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                                   |
| OS-EXT-AZ:availability_zone          | ChuangYiYuanZone1                                        |
| OS-EXT-SRV-ATTR:host                 | ChuangYiYuan_10_16_2_11                                  |    #指定的compute节点
| OS-EXT-SRV-ATTR:hypervisor_hostname  | ChuangYiYuan_10_16_2_11                                  |
| OS-EXT-SRV-ATTR:instance_name        | instance-000001f9                                        |
| OS-EXT-STS:power_state               | 1                                                        |
| OS-EXT-STS:task_state                | -                                                        |
| OS-EXT-STS:vm_state                  | active                                                   |
| OS-SRV-USG:launched_at               | 2016-01-23T04:45:06.000000                               |
| OS-SRV-USG:terminated_at             | -                                                        |
| accessIPv4                           |                                                          |
| accessIPv6                           |                                                          |
| config_drive                         |                                                          |
| created                              | 2016-01-23T04:44:51Z                                     |
| flavor                               | V.GF1 (10)                                               |
| hostId                               | b3a37b586ae2847a0b18c58ff7693b41762fa0bf6a3cc363c862761a |
| id                                   | 3f694eaf-aa87-456a-99ce-90dd9f4e45ee                     |
| p_w_picpath                                | cirrors (37aaedc7-6fe6-4fc8-b110-408d166b8e51)           |
| key_name                             | KEY                                                      |
| metadata                             | {}                                                       |
| name                                 | happyblog_blog_51cto_com                                 |
| os-extended-volumes:volumes_attached | []                                                       |
| progress                             | 0                                                        |
| security_groups                      | default                                                  |
| status                               | ACTIVE                                                   |
| tenant_id                            | 842ab3268a2c47e6a4b0d8774de805ae                         |
| updated                              | 2016-01-23T04:45:07Z                                     |
| user_id                              | bc5e46fc4204497185ae3ca6f8b7affb                         |
| vmTest network                       | 192.168.100.200                                          |    #指定的ip地址,good,完成
+--------------------------------------+----------------------------------------------------------+

4. 总结

   以上方法用于openstack的日常运维中,一般而言,不建议使用,建议使用nova内置的调度算法来完成。本人在实际的工作中,经常有指定compute机器和指定ip的需求。

5. 附录

附录提供了nova boot用法相关的参数

[root@controller ~]# nova help boot

usage: nova boot [--flavor <flavor>] [--p_w_picpath <p_w_picpath>]

[--p_w_picpath-with <key=value>] [--boot-volume <volume_id>]

[--snapshot <snapshot_id>] [--num-instances <number>]

[--meta <key=value>] [--file <dst-path=src-path>]

[--key-name <key-name>] [--user-data <user-data>]

[--availability-zone <availability-zone>]

[--security-groups <security-groups>]

[--block-device-mapping <dev-name=mapping>]

[--block-device key1=value1[,key2=value2...]]

[--swap <swap_size>]

[--ephemeral size=<size>[,format=<format>]]

[--hint <key=value>]

[--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>]

[--config-drive <value>] [--poll]

<name>

Boot a new server.

Positional arguments:

<name>                Name for the new server

Optional arguments:

--flavor <flavor>     Name or ID of flavor (see 'nova flavor-list').

--p_w_picpath <p_w_picpath>       Name or ID of p_w_picpath (see 'nova p_w_picpath-list').

--p_w_picpath-with <key=value>

Image metadata property (see 'nova p_w_picpath-show').

--boot-volume <volume_id>

Volume ID to boot from.

--snapshot <snapshot_id>

Snapshot ID to boot from (will create a volume).

--num-instances <number>

boot multiple servers at a time (limited by quota).

--meta <key=value>    Record arbitrary key/value metadata to /meta.js on the

new server. Can be specified multiple times.

--file <dst-path=src-path>

Store arbitrary files from <src-path> locally to <dst-

path> on the new server. You may store up to 5 files.

--key-name <key-name>

Key name of keypair that should be created earlier

with the command keypair-add

--user-data <user-data>

user data file to pass to be exposed by the metadata

server.

--availability-zone <availability-zone>

The availability zone for server placement.

--security-groups <security-groups>

Comma separated list of security group names.

--block-device-mapping <dev-name=mapping>

Block device mapping in the format <dev-

name>=<id>:<type>:<size(GB)>:<delete-on-terminate>.

--block-device key1=value1[,key2=value2...]

Block device mapping with the keys: id=p_w_picpath_id,

snapshot_id or volume_id, source=source type (p_w_picpath,

snapshot, volume or blank), dest=destination type of

the block device (volume or local), bus=device's bus,

device=name of the device (e.g. vda, xda, ...),

size=size of the block device in GB, format=device

will be formatted (e.g. swap, ext3, ntfs, ...),

bootindex=integer used for ordering the boot disks,

type=device type (e.g. disk, cdrom, ...) and

shutdown=shutdown behaviour (either preserve or

remove).

--swap <swap_size>    Create and attach a local swap block device of

<swap_size> MB.

--ephemeral size=<size>[,format=<format>]

Create and attach a local ephemeral block device of

<size> GB and format it to <format>.

--hint <key=value>    Send arbitrary key/value pairs to the scheduler for

custom use.

--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>

Create a NIC on the server. Specify option multiple

times to create multiple NICs. net-id: attach NIC to

network with this UUID (required if no port-id), v4

-fixed-ip: IPv4 fixed address for NIC (optional),

port-id: attach NIC to port with this UUID (required

if no net-id)

--config-drive <value>

Enable config drive

--poll                Blocks while server builds so progress can be

reported.









转载于:https://blog.51cto.com/happylab/1737842

openstack运维实战系列(十)之nova指定compute节点和IP地址相关推荐

  1. openstack运维实战系列(一)之keystone用户建立

    1. 前言 在生产环境中,使用openstack已经有1年多的时间了,苦于一直没有时间,加上工作带来的懒惰,一直迟迟没有对openstack方面的知识做个总结,趁着年底,把过去一年多在生产环境中所遇到 ...

  2. openstack运维实战系列(十七)之glance与ceph结合

    1. 需求说明 glance作为openstack中p_w_picpath服务,支持多种适配器,支持将p_w_picpath存放到本地文件系统,http服务器,ceph分布式文件系统,glusterf ...

  3. Hadoop运维记录系列(十二)

    从公司离职有几天了,今天回去看同事,想一起吃饭,没成想摊上大事了.说下午hadoop集群的机房停电了,然后集群就启动不了了,几个人从下午4点多折腾到8点多还没搞定,有几台服务器找不到硬盘,还有内网pi ...

  4. Hadoop运维记录系列(十四)

    周末去了趟外地,受托给某省移动公司(经确认更正,是中国移动位置基地,不是省公司)做了一下Hadoop集群故障分析和性能调优,把一些问题点记录下来. 该系统用于运营商的信令数据,大约每天1T多数据量,2 ...

  5. Hadoop运维记录系列(十六)

    应了一个国内某电信运营商集群恢复的事,集群故障很严重,做了HA的集群Namenode挂掉了.具体过程不详,但是从受害者的只言片语中大概回顾一下历史的片段. Active的namenode元数据硬盘满了 ...

  6. Hadoop运维记录系列(十)

    昨天同事遇到一个hadoop故障,找了半天没看出问题,问到我这里,花了一会解决了一下,估计这是我给暴风的集群解决的最后的故障了,以后就不定给谁解决问题去了. 只截下来了Namenode的报错Log,D ...

  7. MySQL运维实战系列:MySQL5.7 Group By 问题

    一.环境 MySQL版本:MySQL5.7.22表结构:CREATE TABLE `crm_report_accounting_income` (`id` int(10) NOT NULL AUTO_ ...

  8. 大数据运维实战第十九课 Kafka 应用场景、集群容量规划、架构设计应用案例

    Kafka 基础与入门 1. Kafka 基本概念 Kafka 官方的定义:是一种高吞吐量的分布式发布/订阅消息系统.这样说起来可能不太好理解,这里简单举个例子:现在是个大数据时代,各种商业.社交.搜 ...

  9. OpenStack 运维 - 部署Nova组件 [T版]

    OpenStack 运维 - 部署Nova组件 一.创建Nova数据库并执行授权操作 二.管理Nova用户及服务 ① 创建Nova用户 ② 创建Nova服务 ③ Nova关联endpoint端点 ④ ...

最新文章

  1. 机器学习特征筛选:方差选择法VarianceThreshold
  2. 实现 ASP.NET 网站地图提供者
  3. python入门新手项目-Python入门实战项目有哪些适合新手?
  4. 实时计算 Flink性能调优
  5. 佛门重地,不适合搞这种事!!
  6. 北大博士的论文发表经验:快写、细改、慢投
  7. mysql一共有多少引擎_MySQL存储引擎你们知道多少?
  8. Lua1.0 代码分析 opcode.c
  9. 史上最全正则表达式语法,文末附常用表达式!
  10. 逻辑回归算法实战之信用卡欺诈检测
  11. 京东商城禁止一淘网蜘蛛抓取内容
  12. 专题:手把手学习硬件基础------10、常用器件
  13. SiTime硅晶振MEMS谐振子制作工艺详解
  14. 十句话,不黄不色,但很经典~~~~~~~~~~
  15. 云计算 基础服务 iscsi 实现
  16. 用有数据的单元格内容向下填充空白单元格
  17. 初学者:java练习题———含答案-------类与对象(2)
  18. 照片怎样变漫画图片?建议收藏这些方法
  19. Qt错误 error: C2228: “.exec”的左边必须有类/结构/联合 的解决方法
  20. eclipse按Ctrl键卡死的问题。已解决!

热门文章

  1. pic单片机ccp脉冲捕捉c语言程序,pic单片机CCP脉冲(PWM)输出
  2. LeetCode Minimum Path Sum(动态规划)
  3. Django的静态文件的配置
  4. P1417 烹调方案 (0/1背包+贪心)
  5. 面向对象--第三部分
  6. 使用ansible安装docker以及docker-compose
  7. 调试代码 2017-03-13
  8. ubuntu14.04无法连接有线连接问题
  9. 实验管理系统java,大学生创新实验室信息管理系统 java+mysql
  10. unity3d 数学基础与数学辅助类