如何使用虚拟机实例

所谓实例,是指具备特殊规格内存、硬盘空间以及CPU的虚拟机。在OpenStack Compute的辅助下,我们通过对云的调整及启用,可以让用户实现启动实例、重启实例以及保存快照以备日后再利用等工作。

通过观察用户仪表板中的实例,我们能够清楚地看到自己刚刚所启动的实例。对于每个实例,我们都有数个操作选项,例如终止实例、重新启动、保存快照等等——这些操作的实现都依靠OpenStack Compute API 1.1的支持。我们也可以打开一个控制台窗口或是查看某个处于仪表板内的实例的日志文件。

为镜像添加安全密钥

安全功能是我们控制发往自己虚拟机访问的必要保障,OpenStack通过两种认证机制管理客户端工具。一种是仪表板自带的用户名及密码机制;另一种则是“密钥对”,密钥为用户的实例提供安全验证。只有当用户能够同时通过以上两种认证过程时,才能够获得在OpenStack云中访问目标实例的权限。密钥对(包括公共密钥对与私有密钥对)在我们启用实例时可以作为非常有用的参数。举例来说,要启动一套实例并加以访问,我们必须利用SSH创建一套密钥对,这样就能够识别通过SSH访问该实例的用户。

OpenStack仪表板让我们能够在密钥对选项中通过点击创建新密钥对管理密钥。在下图当中,大家可以为自己的密钥对命名,然后点击创建密钥按钮。创建新密钥对的过程包括登记公共密钥及下载私有密钥(一个.pem文件)两部分。由于这一创建工作完全是为我们的使用服务,因此请务必像对待其它SSH私有密钥一样妥善加以保管。详见图四。

openstack创建出的实例状态错误 openstack应用实例_centos

 
图四

利用工具为自动化脚本启动实例

我们可以轻松地通过仪表板启动实例,但更多时候大家也许希望能够利用命令行加以启动,以使用某些脚本。这里只要安装python-nova客户端,我们就能在命令行中获得可以使用Compute API接口的nova shell命令。安装客户端,然后提供用户名及密码,设置适当的环境变量,这样我们就拥有了在命令行中向云端发送命令的能力。

安装python-nova客户端, 点此下载 原始码,并将其安装于大家常用的python环境中。


$ curl -O http://pypi.python.org/packages/source/p/python-novaclient/pythonnovaclient-2.6.3.tar.gz
$ tar -zxvf python-novaclient-2.6.3.tar.gz
$ cd python-novaclient-2.6.3
$ sudo python setup.py install


现在大家已经安装了python-nova客户端,输入以下内容以确认安装:


$ nova help


此时大家应该看到一个nova命令行客户端的所有命令与参数列表。通过设置环境变量所需的参数,我们可以在命令行上快速执行这些命令。为nova命令添加--username,或者将这些参数设为环境变量:


export NOVA_USERNAME=joecool
export NOVA_API_KEY=coolword
export NOVA_PROJECT_ID=coolu


项目ID与Tenant一样,都依赖于我们所使用的验证服务。当云管理员设置OpenStack时,应该注意为其分配一个类似NOVA_URL这样能够为nova所辨识的验证端点。


export NOVA_URL=http://hostname:5000/v2.0
export NOVA_VERSION=1.1


在建立自己的云之前,我们需要通过向镜像服务查询哪些配置类型可以奏效,来了解什么样的镜像能够被正确使用。镜像服务有点像云领域的iTunes:我们可以在利用自己常用的镜像在云中创建实例之前,先在列表中查看哪些镜像适用。大家可以利用以下命令获得镜像信息列表,包括名称、状态以及ID:


$ nova image-list


以下是返回信息的示例:


+----+-------------------------------------------------------+--------+
| ID |                          Name                         | Status |
+----+-------------------------------------------------------+--------+
| 1  | aki-tty                                               | ACTIVE |
| 2  | ari-tty                                               | ACTIVE |
| 3  | ami-tty                                               | ACTIVE |
| 6  | CentOS_5.4_x64                                        | ACTIVE |
| 14 | maverick-kernel                                       | ACTIVE |
| 15 | maverick                                              | ACTIVE |
| 20 | ubuntu-kernel                                         | ACTIVE |
| 21 | ubuntu-ramdisk                                        | ACTIVE |
| 22 | ubuntu                                                | ACTIVE |
| 24 | CentOS_5.6_x64_v5.7.14_Dev1                           | ACTIVE |
+----+-------------------------------------------------------+--------+


接下来大家需要了解其中每一项的相对大小,这里使用flavor-list参数。


$ nova flavor-list       
+----+-----------+-----------+------+----------+-------+------------+----------+
| ID |    Name   | Memory_MB | Swap | Local_GB | VCPUs | RXTX_Quota | RXTX_Cap |
+----+-----------+-----------+------+----------+-------+------------+----------+
| 1  | m1.tiny   | 512       |      | 0        |       |            |          |
| 2  | m1.small  | 2048      |      | 20       |       |            |          |
| 3  | m1.medium | 4096      |      | 40       |       |            |          |
| 4  | m1.large  | 8192      |      | 80       |       |            |          |
| 5  | m1.xlarge | 16384     |      | 160      |       |            |          |
| 89 | Boom      | 2         |      | 20       |       |            |          |
+----+-----------+-----------+------+----------+-------+------------+----------+


我们也可以使用grep来缩小查找结果列表,举例来说,通过以下命令查看CentOS镜像的信息:


$ nova image-list | grep 'CentOS'
| 6  | CentOS_5.4_x64                                        | ACTIVE |
| 24 | CentOS_5.6_x64_v5.7.14_Dev1                           | ACTIVE |


在反馈得出的信息方面,我们可以选择图像与描述相结合的方式创建自己的虚拟服务器,并启动实例。

要启动服务器,首先选择一个镜像,找出该镜像及相关描述的ID,并对其进行调整;接下来利用ID创建命令。根据上文所给出的资料,我们可以看到Ubuntu Maverick镜像的ID为15。如果我们实际只打算搭建一个2GBy内存、20GB硬盘空间的小型服务器,那么可以选择m1.small——因为它所使用的ID为2.将这些参数添加进boot命令中,这样新建虚拟服务器的工作就完成了。


$ nova boot --flavor=2 --image=15 testserver
+-----------+--------------------------------------+
|  Property |                Value                 |
+-----------+--------------------------------------+
| adminPass | ****************                     |
| created   | 2011-09-01T21:40:41Z                 |
| flavor    | m1.small                             |
| hostId    |                                      |
| id        | 1805                                 |
| image     | maverick                             |
| metadata  | {}                                   |
| name      | testserver                           |
| progress  | 0                                    |
| status    | BUILD                                |
| updated   | 2011-09-01T21:40:41Z                 |
| uuid      | ce044452-f22e-4ea4-a3ec-d1cde80cf996 |
+-----------+--------------------------------------+


现在,大家使用nova list命令即可查看自己在云中所部署的新服务器:


$ nova list
+------+------------+--------+--------------------------------+
|  ID  |    Name    | Status |            Networks            |
+------+------------+--------+--------------------------------+
| 1805 | testserver | ACTIVE | private=10.4.96.81             |
+------+------------+--------+--------------------------------+


状态选项共有三种,分别是:ACTIVE(活跃), BUILDING(创建中)以及 UNKNOWN(未知)。BUILDING状态一般是暂时性的,因此大家很可能在自己操作的时候不会遇到。如果出现UNKNOWN状态,不妨反复运行nova list命令,直到该状态消失。

要查看特定服务器的全部信息,使用nova show命令加上我们从nova list命令中获得的服务器ID。


$ nova show 1805
+-----------------+----------------------------------------------------------+
|     Property    |                          Value                           |
+-----------------+----------------------------------------------------------+
| created         | 2011-09-01T21:40:41Z                                     |
| flavor          | m1.small                                                 |
| hostId          | 58a7430169aa42cde5ce2456b0cb5bb5ac1ab0703bab6420e8a49e6e |
| id              | 1805                                                     |
| image           | maverick                                                 |
| metadata        | {}                                                       |
| name            | testserver                                               |
| private network | 10.4.96.81                                               |
| progress        | 100                                                      |
| status          | ACTIVE                                                   |
| updated         | 2011-09-01T21:40:46Z                                     |
| uuid            | ce044452-f22e-4ea4-a3ec-d1cde80cf996                     |
+-----------------+----------------------------------------------------------+


通过以上几项nova命令的基本演练,现在大家已经在建立自有云的道路上迈出了第一步!