分享

OpenStack Folsom 版搭建云平台基本操作使用指南

pig2 发表于 2014-3-17 18:08:42 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 31502
我们都知道openstack可以搭建云平台,那么具体该如何操作,文中对下面问题及其他问题作了一些说明。
如何从image启动虚拟机?
如何从volume启动虚拟机?
如何删除删除虚拟机?
如何迁移迁移虚拟机?
如何对对instance进行快照?
如何创建镜像?
如何删除镜像?
如何创建、删除卷?
如何在虚拟机中挂载卸载卷?
如何创建网络?
gre 模式下网络如何操作?
......

已有(3)人评论

跳转到指定楼层
pig2 发表于 2014-3-17 18:13:21
本帖最后由 pig2 于 2014-3-17 18:42 编辑



1.虚拟机操作

1.1. 从image启动虚拟机

需要参数 image id 和 flavor id

运行nova image-list 得到image id
  1. # nova image-list
  2. +--------------------------------------+-------------------------+--------+--------+
  3. | ID                                   | Name                    | Status | Server |
  4. +--------------------------------------+-------------------------+--------+--------+
  5. | 9ff7fcf4-f502-41c5-9a85-9a89ba2493f4 | centos_4M               | ACTIVE |        |
  6. | 533a5c7b-2177-4db2-b128-b88ac1779b5b | precise                 | ACTIVE |        |
  7. +--------------------------------------+-------------------------+--------+--------+
复制代码
运行nova flavor-list得到flavor id
  1. # nova flavor-list
  2. +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+
  3. | ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |
  4. +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+
  5. | 1  | m1.tiny   | 512       | 0    | 0         |      | 1     | 1.0         | True      | {}          |
  6. | 2  | m1.small  | 2048      | 20   | 0         |      | 1     | 1.0         | True      | {}          |
  7. | 3  | m1.medium | 4096      | 40   | 0         |      | 2     | 1.0         | True      | {}          |
  8. | 4  | m1.large  | 8192      | 80   | 0         |      | 4     | 1.0         | True      | {}          |
  9. | 5  | m1.xlarge | 16384     | 160  | 0         |      | 8     | 1.0         | True      | {}          |
  10. +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+
复制代码
运行nova boot命令,启动一台虚拟机,使用precise 的image,m1.tiny的flavor
  1. # nova  boot --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1  vm1
复制代码
1.2. 从volume启动虚拟机

主要参数和从image 启动一样,另外需要 block_device_mapping参数

使用nova volume-create 命令,从一个可启动的image 生成一个可启动的volume,image格式文件必须是raw格式
  1. # nova volume-create --image-id 533a5c7b-2177-4db2-b128-b88ac1779b5b --display-name precise-vol 10
  2. +---------------------+--------------------------------------+
  3. | Property            | Value                                |
  4. +---------------------+--------------------------------------+
  5. | attachments         | []                                   |
  6. | availability_zone   | nova                                 |
  7. | created_at          | 2013-03-12T07:47:03.224001           |
  8. | display_description | None                                 |
  9. | display_name        | precise-vol                          |
  10. | id                  | f18fc147-c16d-4a5a-a5cb-44cef08a6352 |
  11. | image_id            | 533a5c7b-2177-4db2-b128-b88ac1779b5b |
  12. | metadata            | {}                                   |
  13. | size                | 10                                   |
  14. | snapshot_id         | None                                 |
  15. | status              | creating                             |
  16. | volume_type         | None                                 |
  17. +---------------------+--------------------------------------+
复制代码
使用 nova boot 命令,从这个volume启动

tips:虽然是从volume启动,但是任然需要–image 参数,openstack不会从这个image启动 这是folsome版的一个bug,这个bug已经在grizzly版中得到修正,参考 http://docs.openstack.org/trunk/ ... ot-from-volume.html https://bugs.launchpad.net/nova/+bug/1008622
  1. # nova boot --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1 --block_device_mapping vda=f18fc147-c16d-4a5a-a5cb-44cef08a6352:::0 vm2-vol
复制代码
1.3. 删除虚拟机

运行nova delete 删除虚拟机
  1. # nova delete vm2-vol
复制代码
运行nova list查看是否删除成功

1.4. 迁移虚拟机

使用nova-manage service list查看可用的nova-compute节点, :-)状态为正常节点,XXX状态为故障,需要修复
  1. # nova-manage service list
  2. Binary           Host                                 Zone             Status     State Updated_At
  3. nova-cert        controller2                          nova             enabled    :-)   2013-03-12 08:04:46
  4. nova-consoleauth controller2                          nova             enabled    :-)   2013-03-12 08:04:46
  5. nova-scheduler   controller2                          nova             enabled    :-)   2013-03-12 08:04:45
  6. nova-compute     compute1                             nova             enabled    :-)   2013-03-12 08:04:44
  7. nova-compute     compute2                             nova             enabled    XXX   2013-03-11 07:29:21
复制代码
运行 nova show 查看虚拟机运行在哪一个物理计算节点上
  1. # nova show vm1
  2. | OS-EXT-SRV-ATTR:hypervisor_hostname | compute1
复制代码
运行 nova live-migration ,迁移到compute2节点上
  1. # nova live-migration vm1 compute2
复制代码
1.5. 对instance进行快照

使用 nova image-create 对运行的instance进行快照,得到的快照是一个image,可以使用nova image-list 查看
  1. # nova image-create vm1 vm1-snap
复制代码
1.6. 对instance的volume进行快照

如果虚拟机是从volume启动,对虚拟机快照就是直接对虚拟机启动的volume进行快照。

运行cinder list查看vm启动的volume id ,attached to 是虚拟机id
  1. # cinder list
  2. +--------------------------------------+-----------+--------------------------------------+------+-------------+--------------------------------------+
  3. |                  ID                  |   Status  |             Display Name             | Size | Volume Type |             Attached to              |
  4. | 444da795-8482-463d-aa27-d31b3b0c6b4f |   in-use  | ce87b5bf-8295-4569-821e-82f3e2c923bd |  10  |     None    | f18fc147-c16d-4a5a-a5cb-44cef08a6352 |
  5. +--------------------------------------+-----------+--------------------------------------+------+-------------+--------------------------------------+
复制代码
使用nova volume-snapshot-create 对虚拟机的volume进行快照
  1. # nova volume-snapshot-create --force True --display-name vol-snap1 444da795-8482-463d-aa27-d31b3b0c6b4f
  2. +---------------------+--------------------------------------+
  3. | Property            | Value                                |
  4. +---------------------+--------------------------------------+
  5. | created_at          | 2013-03-12T09:25:16.669465           |
  6. | display_description | None                                 |
  7. | display_name        | vol-snap1                            |
  8. | id                  | 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 |
  9. | size                | 10                                   |
  10. | status              | creating                             |
  11. | volume_id           | 444da795-8482-463d-aa27-d31b3b0c6b4f |
  12. +---------------------+--------------------------------------+
复制代码
运行 cinder snapshot-list 查看
  1. # cinder snapshot-list
  2. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
  3. |                  ID                  |              Volume ID               |   Status  |         Display Name         | Size |
  4. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
  5. | 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 | 444da795-8482-463d-aa27-d31b3b0c6b4f | available |          vol-snap1           |  10  |
  6. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
复制代码
1.7. 从volume的snapshot启动

先将volume的snapshot转换成一个新的volume ,大小为10G
  1. # nova volume-create --snapshot-id 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 --display-name vol-from-snap 10
  2. +---------------------+--------------------------------------+
  3. | Property            | Value                                |
  4. +---------------------+--------------------------------------+
  5. | attachments         | []                                   |
  6. | availability_zone   | nova                                 |
  7. | created_at          | 2013-03-12T09:34:53.498823           |
  8. | display_description | None                                 |
  9. | display_name        | vol-from-snap                        |
  10. | id                  | f18b2df7-b3be-44ad-b521-c69f04ab8c49 |
  11. | metadata            | {}                                   |
  12. | size                | 10                                   |
  13. | snapshot_id         | 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 |
  14. | status              | creating                             |
  15. | volume_type         | None                                 |
  16. +---------------------+--------------------------------------+
复制代码
得到新的volume id 后,从volume启动
  1. # nova boot --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1 --block_device_mapping vda=f18b2df7-b3be-44ad-b521-c69f04ab8c49:::0 vm2
复制代码
1.8. 使用metadata

编写user data,参考cloudinit

更改主机名
  1. # cat cloudconfig.yaml
  2. #cloud-config
  3. hostname: mynode
  4. fqdn: mynode.example.com
复制代码
启动时,加上 --user-data 参数,如果metadata service工作正常,主机名会变成mynode,反之则证明metadata service工作不正常
  1. # nova boot --user-data cloudconfig.yaml --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1  vm3
复制代码
注入脚本
  1. # cat myscript.sh
  2. #!/bin/sh
  3. echo "Hello World.  The time is now $(date -R)!" | tee /root/output.txt
复制代码
这段脚本会记录被注入脚本运行的时间,记录在 /root/output.txt 路径下。
  1. # nova boot --user-data myscript.sh --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1 --block_device_mapping vda=f18fc147-c16d-4a5a-a5cb-44cef08a6352:::0 vm4
复制代码
登录到虚拟机查看是否生效
  1. root@vm4:~# cat output.txt
  2. Hello World.  The time is now Wed, 13 Mar 2013 02:58:12 +0000!
复制代码
2.存储操作

2.1. 镜像操作

创建镜像

自己制作镜像,或者去 cloud ubuntu 下载ubuntu官方镜像,ubuntu官方镜像已经集成cloudinit 可以直接使用metadata service
下载 precise的img文件 ,并上传到glance中
  1. # wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
  2. # glance image-create --name precise --is-public true --container-format bare --disk-format qcow2 < precise-server-cloudimg-amd64-disk1.img
  3. +------------------+--------------------------------------+
  4. | Property         | Value                                |
  5. +------------------+--------------------------------------+
  6. | checksum         | 2cd973b67600cef111a2c951ef1084d2     |
  7. | container_format | bare                                 |
  8. | created_at       | 2013-03-13T05:10:06                  |
  9. | deleted          | False                                |
  10. | deleted_at       | None                                 |
  11. | disk_format      | qcow2                                |
  12. | id               | 2fd11347-c951-4f81-ac54-205afd783791 |
  13. | is_public        | True                                 |
  14. | min_disk         | 0                                    |
  15. | min_ram          | 0                                    |
  16. | name             | precise                              |
  17. | owner            | None                                 |
  18. | protected        | False                                |
  19. | size             | 233832448                            |
  20. | status           | active                               |
  21. | updated_at       | 2013-03-13T05:10:31                  |
  22. +------------------+--------------------------------------+
复制代码
运行 glance image-list 查看镜像状态,active为可以使用。
  1. # glance image-list
  2. +--------------------------------------+-------------------------+-------------+------------------+-------------+--------+
  3. | ID                                   | Name                    | Disk Format | Container Format | Size        | Status |
  4. +--------------------------------------+-------------------------+-------------+------------------+-------------+--------+
  5. | 2fd11347-c951-4f81-ac54-205afd783791 | precise                 | qcow2       | bare             | 233832448   | active |
  6. +--------------------------------------+-------------------------+-------------+------------------+-------------+--------+
复制代码
删除镜像

运行 glance image-delete 删除对应的image,参数为image id
  1. # glance image-delete 2fd11347-c951-4f81-ac54-205afd783791
复制代码
2.2. 卷操作

2.2.1 创建,删除卷

创建空卷

cinder create 需要一个参数size,这里指定10,默认单位为G;名称为empty-vol
  1. # cinder create --display-name empty-vol 10
  2. +---------------------+--------------------------------------+
  3. |       Property      |                Value                 |
  4. +---------------------+--------------------------------------+
  5. |     attachments     |                  []                  |
  6. |  availability_zone  |                 nova                 |
  7. |      created_at     |      2013-03-13T05:19:05.765784      |
  8. | display_description |                 None                 |
  9. |     display_name    |              empty-vol               |
  10. |          id         | eed6ef03-14f4-4cac-8182-3e19999f896d |
  11. |       metadata      |                  {}                  |
  12. |         size        |                  10                  |
  13. |     snapshot_id     |                 None                 |
  14. |        status       |               creating               |
  15. |     volume_type     |                 None                 |
  16. +---------------------+--------------------------------------+
复制代码
从image 创建卷

使用glance image-list查看可用image id,运行cinder create命令创建volume
  1. # cinder create --image-id 533a5c7b-2177-4db2-b128-b88ac1779b5b --display-name vol-from-image 10
  2. +---------------------+--------------------------------------+
  3. |       Property      |                Value                 |
  4. +---------------------+--------------------------------------+
  5. |     attachments     |                  []                  |
  6. |  availability_zone  |                 nova                 |
  7. |      created_at     |      2013-03-13T05:27:47.160512      |
  8. | display_description |                 None                 |
  9. |     display_name    |            vol-from-image            |
  10. |          id         | 4f111593-12e9-471b-939b-d72fee230cbd |
  11. |       image_id      | 533a5c7b-2177-4db2-b128-b88ac1779b5b |
  12. |       metadata      |                  {}                  |
  13. |         size        |                  10                  |
  14. |     snapshot_id     |                 None                 |
  15. |        status       |               creating               |
  16. |     volume_type     |                 None                 |
  17. +---------------------+--------------------------------------+
复制代码
对卷进行snapshot

对卷进行snapshot,参数为volume id
  1. # cinder snapshot-create --display-name vol-snapshot1 4f111593-12e9-471b-939b-d72fee230cbd
复制代码
运行cinder snapshot-list查看snapshot
  1. # cinder snapshot-list
  2. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
  3. |                  ID                  |              Volume ID               |   Status  |         Display Name         | Size |
  4. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
  5. | 647e1bb6-6087-48e4-8310-1b3047893ae5 | 4f111593-12e9-471b-939b-d72fee230cbd |  creating |        vol-snapshot1         |  10  |
  6. +--------------------------------------+--------------------------------------+-----------+------------------------------+------+
复制代码
从volume snapshot创建卷

在虚拟机从volume snapshot启动相关章节有详细描述
  1. # nova volume-create --snapshot-id 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 --display-name vol-from-snap 10
  2. +---------------------+--------------------------------------+
  3. | Property            | Value                                |
  4. +---------------------+--------------------------------------+
  5. | attachments         | []                                   |
  6. | availability_zone   | nova                                 |
  7. | created_at          | 2013-03-12T09:34:53.498823           |
  8. | display_description | None                                 |
  9. | display_name        | vol-from-snap                        |
  10. | id                  | f18b2df7-b3be-44ad-b521-c69f04ab8c49 |
  11. | metadata            | {}                                   |
  12. | size                | 10                                   |
  13. | snapshot_id         | 8cd8c57a-5ffa-4c92-98a2-ec10ae899166 |
  14. | status              | creating                             |
  15. | volume_type         | None                                 |
  16. +---------------------+--------------------------------------+
复制代码
2.2.2 在虚拟机中挂载卸载卷

向虚拟机中添加卷

使用nova volume-attach <server> <volume> <device>将卷添加到虚拟机中
  1. # nova volume-attach b30c0914-b87b-41d4-a381-7168d6be4cf3 eed6ef03-14f4-4cac-8182-3e19999f896d /dev/vdb
  2. +----------+--------------------------------------+
  3. | Property | Value                                |
  4. +----------+--------------------------------------+
  5. | device   | /dev/vdb                             |
  6. | id       | eed6ef03-14f4-4cac-8182-3e19999f896d |
  7. | serverId | b30c0914-b87b-41d4-a381-7168d6be4cf3 |
  8. | volumeId | eed6ef03-14f4-4cac-8182-3e19999f896d |
  9. +----------+--------------------------------------+
复制代码
到虚拟机中查看vdb是都添加成功
  1. # fdisk -l  | grep vdb
  2. Disk /dev/vdb doesn't contain a valid partition table
  3. Disk /dev/vdb: 10.7 GB, 10737418240 bytes
复制代码
将卷从虚拟机中卸载

使用nova volume-detach <server> <volume>将卷从虚拟机中卸载,卸载前请保证磁盘已经umount,否则数据无法保证数据一致性。
  1. # nova volume-detach b30c0914-b87b-41d4-a381-7168d6be4cf3 eed6ef03-14f4-4cac-8182-3e19999f896d
复制代码
到虚拟机中查看vdb是都卸载成功
  1. # fdisk -l  | grep vdb
  2. #
复制代码
3. 网络操作

3.1 vlan 模式下的网络操作


vlan模式下的接口作用
vm-network.jpg



3.1.1 创建网络

使用quantum net-create创建虚拟网络,quantum net-create参数中--provider:segmentation_id为vlan id ,这个vlan id在物理交换机中必须提前建立
  1. # quantum net-create vlan-net --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 1024
  2. Created a new network:
  3. +---------------------------+--------------------------------------+
  4. | Field                     | Value                                |
  5. +---------------------------+--------------------------------------+
  6. | admin_state_up            | True                                 |
  7. | id                        | 347039c5-bfd6-498b-999a-a577a998427d |
  8. | name                      | vlan-net                             |
  9. | provider:network_type     | vlan                                 |
  10. | provider:physical_network | physnet1                             |
  11. | provider:segmentation_id  | 1024                                 |
  12. | router:external           | False                                |
  13. | shared                    | False                                |
  14. | status                    | ACTIVE                               |
  15. | subnets                   |                                      |
  16. | tenant_id                 | acbd5e5812c1475f9ec60104569710f4     |
  17. +---------------------------+--------------------------------------+
复制代码
3.1.2 创建子网

使用quantum subnet-create创建子网,第一个参数为网络名,第二个参数为网络cidr
  1. # quantum subnet-create vlan-net 10.10.11.0/24
  2. Created a new subnet:
  3. +------------------+------------------------------------------------+
  4. | Field            | Value                                          |
  5. +------------------+------------------------------------------------+
  6. | allocation_pools | {"start": "10.10.11.2", "end": "10.10.11.254"} |
  7. | cidr             | 10.10.11.0/24                                  |
  8. | dns_nameservers  |                                                |
  9. | enable_dhcp      | True                                           |
  10. | gateway_ip       | 10.10.11.1                                     |
  11. | host_routes      |                                                |
  12. | id               | a8d6005f-c051-491d-aa92-19322206a992           |
  13. | ip_version       | 4                                              |
  14. | name             |                                                |
  15. | network_id       | 347039c5-bfd6-498b-999a-a577a998427d           |
  16. | tenant_id        | acbd5e5812c1475f9ec60104569710f4               |
  17. +------------------+------------------------------------------------+
复制代码
使用 查看刚创建的网络,及其子网
  1. # quantum net-list
  2. +--------------------------------------+--------------+--------------------------------------+
  3. | id                                   | name         | subnets                              |
  4. +--------------------------------------+--------------+--------------------------------------+
  5. | 347039c5-bfd6-498b-999a-a577a998427d | vlan-net     | a8d6005f-c051-491d-aa92-19322206a992 |
  6. +--------------------------------------+--------------+--------------------------------------+
复制代码
3.1.3 启动虚拟机

网络为刚创建的网络
  1. # nova boot --nic net-id=347039c5-bfd6-498b-999a-a577a998427d --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1 --block_device_mapping vda=f18fc147-c16d-4a5a-a5cb-44cef08a6352:::0 vm7
复制代码
3.2 gre 模式下的网络操作

3.2.1 创建gre网络

下载quantum script 运行脚本
  1. # bash quantum-networking.sh
复制代码
3.2.3 启动虚拟机

网络为刚创建的网络,这个过程和vlan模式一样
  1. # nova boot --nic net-id=347039c5-bfd6-498b-999a-a577a998427d --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1 --block_device_mapping vda=f18fc147-c16d-4a5a-a5cb-44cef08a6352:::0 vm7
复制代码
回复

使用道具 举报

gaoxx 发表于 2015-3-31 14:54:49
刚刚接触openstack,这几天看大牛的教程,获益匪浅,一步一步按您的步骤搭起来,现在控制节点 网络节点 计算机节点都搭起来了。不知道有没有问题 不过10.10.10.51/52/53 这几个IP都可以互相ping通。horrizon的dashboard也能进去。但是我在上面创建虚拟机的时候(
命令
root@xu-virtual-machine:/home/xu# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+
| ID | Name      | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | extra_specs |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+
| 1  | m1.tiny   | 512       | 0    | 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@xu-virtual-machine:/home/xu#
nova boot --image 7412aac2-3957-49a2-aee0-ecd8c67fcebe --flavor 5 vm1

ERROR: Quota exceeded for cores: Requested 8, but already used 18 of 20 cores (HTTP 413) (Request-ID: req-cb1d4ae0-1f10-4868-af04-d716c6d38597)

root@xu-virtual-machine:/home/xu#

或者:
root@xu-virtual-machine:/home/xu#
nova boot --image 7412aac2-3957-49a2-aee0-ecd8c67fcebe --flavor 3 vm1

ERROR: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-7703f7e0-d0bb-483c-81ed-7c64ed41a190))

我就不知道怎么进行下去了。比较笨。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条