pig2 发表于 2014-3-17 18:08:42

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

我们都知道openstack可以搭建云平台,那么具体该如何操作,文中对下面问题及其他问题作了一些说明。
如何从image启动虚拟机?
如何从volume启动虚拟机?
如何删除删除虚拟机?
如何迁移迁移虚拟机?
如何对对instance进行快照?
如何创建镜像?
如何删除镜像?
如何创建、删除卷?
如何在虚拟机中挂载卸载卷?
如何创建网络?
gre 模式下网络如何操作?
......

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# nova image-list
+--------------------------------------+-------------------------+--------+--------+
| ID                                 | Name                  | Status | Server |
+--------------------------------------+-------------------------+--------+--------+
| 9ff7fcf4-f502-41c5-9a85-9a89ba2493f4 | centos_4M               | ACTIVE |      |
| 533a5c7b-2177-4db2-b128-b88ac1779b5b | precise               | ACTIVE |      |
+--------------------------------------+-------------------------+--------+--------+运行nova flavor-list得到flavor id # 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      | {}          |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+-------------+运行nova boot命令,启动一台虚拟机,使用precise 的image,m1.tiny的flavor # novaboot --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1vm11.2. 从volume启动虚拟机

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

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

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

运行nova delete 删除虚拟机 # nova delete vm2-vol运行nova list查看是否删除成功

1.4. 迁移虚拟机

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

使用 nova image-create 对运行的instance进行快照,得到的快照是一个image,可以使用nova image-list 查看 # nova image-create vm1 vm1-snap1.6. 对instance的volume进行快照

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

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

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

编写user data,参考cloudinit

更改主机名# cat cloudconfig.yaml
#cloud-config
hostname: mynode
fqdn: mynode.example.com启动时,加上 --user-data 参数,如果metadata service工作正常,主机名会变成mynode,反之则证明metadata service工作不正常 # nova boot --user-data cloudconfig.yaml --image 533a5c7b-2177-4db2-b128-b88ac1779b5b --flavor 1vm3注入脚本# cat myscript.sh
#!/bin/sh
echo "Hello World.The time is now $(date -R)!" | tee /root/output.txt这段脚本会记录被注入脚本运行的时间,记录在 /root/output.txt 路径下。# 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登录到虚拟机查看是否生效 root@vm4:~# cat output.txt
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中 # wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img
# glance image-create --name precise --is-public true --container-format bare --disk-format qcow2 < precise-server-cloudimg-amd64-disk1.img
+------------------+--------------------------------------+
| Property         | Value                              |
+------------------+--------------------------------------+
| checksum         | 2cd973b67600cef111a2c951ef1084d2   |
| container_format | bare                                 |
| created_at       | 2013-03-13T05:10:06                  |
| deleted          | False                              |
| deleted_at       | None                                 |
| disk_format      | qcow2                              |
| id               | 2fd11347-c951-4f81-ac54-205afd783791 |
| is_public      | True                                 |
| min_disk         | 0                                    |
| min_ram          | 0                                    |
| name             | precise                              |
| owner            | None                                 |
| protected      | False                              |
| size             | 233832448                            |
| status         | active                               |
| updated_at       | 2013-03-13T05:10:31                  |
+------------------+--------------------------------------+运行 glance image-list 查看镜像状态,active为可以使用。# glance image-list
+--------------------------------------+-------------------------+-------------+------------------+-------------+--------+
| ID                                 | Name                  | Disk Format | Container Format | Size      | Status |
+--------------------------------------+-------------------------+-------------+------------------+-------------+--------+
| 2fd11347-c951-4f81-ac54-205afd783791 | precise               | qcow2       | bare             | 233832448   | active |
+--------------------------------------+-------------------------+-------------+------------------+-------------+--------+删除镜像

运行 glance image-delete 删除对应的image,参数为image id# glance image-delete 2fd11347-c951-4f81-ac54-205afd7837912.2. 卷操作

2.2.1 创建,删除卷

创建空卷

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

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

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

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

向虚拟机中添加卷

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

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

3.1 vlan 模式下的网络操作


vlan模式下的接口作用




3.1.1 创建网络

使用quantum net-create创建虚拟网络,quantum net-create参数中--provider:segmentation_id为vlan id ,这个vlan id在物理交换机中必须提前建立 # quantum net-create vlan-net --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 1024
Created a new network:
+---------------------------+--------------------------------------+
| Field                     | Value                              |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 347039c5-bfd6-498b-999a-a577a998427d |
| name                      | vlan-net                           |
| provider:network_type   | vlan                                 |
| provider:physical_network | physnet1                           |
| provider:segmentation_id| 1024                                 |
| router:external         | False                              |
| shared                  | False                              |
| status                  | ACTIVE                               |
| subnets                   |                                    |
| tenant_id               | acbd5e5812c1475f9ec60104569710f4   |
+---------------------------+--------------------------------------+3.1.2 创建子网

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

网络为刚创建的网络# 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 vm73.2 gre 模式下的网络操作

3.2.1 创建gre网络

下载quantum script 运行脚本# bash quantum-networking.sh3.2.3 启动虚拟机

网络为刚创建的网络,这个过程和vlan模式一样 # 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))

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

hefeiqh 发表于 2015-10-12 11:21:13

非常感谢
页: [1]
查看完整版本: OpenStack Folsom 版搭建云平台基本操作使用指南