找回密码
 骑士注册

QQ登录

微博登录

搜索
❏ 站外平台:

Linux中国开源社区 技术 查看内容

OpenStack详细解读:定义,好处与使用实例

2011-11-22 09:47       

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

我们可以轻松地通过仪表板启动实例,但更多时候大家也许希望能够利用命令行加以启动,以使用某些脚本。这里只要安装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命令的基本演练,现在大家已经在建立自有云的道路上迈出了第一步!

创建自定义镜像,并打包上传至OpenStack

成功从列表中查看当前可用的镜像之后,大家可能还希望添加符合自己需要的镜像。要创建自定义镜像,首要要从ISO文件开始。CentOS、Debian、Fedora或者Ubuntu,只要合用,都可以下载对应的ISO文件。 点击此处 获 取适合初学者的初始镜像。在这里获取的都是.tar及.gz文件,其中包含虚拟机镜像(*.img),一套Xen兼容内核/虚拟磁盘(后者由xen-内核 /vmlinuz*与xen-内核/initrd*两部分构成)以及一套KVM兼容内核/虚拟磁盘(后者由kvm-内核/vmlinuz*与kvm-内核 /initrd*两部分构成)。大家可以通过命令行或者使用VirtualBox以及kvm之类的虚拟化平台打造自定义镜像。创建一个.vdi镜像,再利 用quemu-utils中的quemu-img工具将其转换为可用格式。

大家可能还希望让镜像变得更大,向其中添加类似Linux标准基础这样的软件包,以使其更适合日常工作中的实际应用。一旦在VirtualBox或 者其它任何平台上完成了自定义工作,将最终文件拷贝到安装了euca2ools的Linux计算机中。在文章的下一节中,我将向大家介绍如何将自己的自定 义镜像通过命令行中的euca-命令导入OpenStack云中。

如何将新镜像导入OpenStack镜像服务(Glance)

当一套自定义虚拟机镜像创建完成,我们可以将磁盘镜像数据及镜像元数据存储在镜像服务中。

这里使用Eucalyptus工具集也是个不错的选择,该工具集是一款作用于云的开源命令行客户端,并且兼容Amazon的EC2 API。安装euca2ools命令行工具并确保自己的环境包含了Eucalyptus运行所必需的认证机制。

上传内核,并注意Amazon内核镜像(简称AKI):

euca-bundle-image -i kvm-kernel/vmlinuz-2.6.28-11-generic --kernel true
euca-upload-bundle -b jbbucket -m /tmp/vmlinuz-2.6.28-11-generic.manifest.xml
euca-register jbbucket/vmlinuz-2.6.28-11-generic.manifest.xml

上传虚拟磁盘并注意Amazon虚拟磁盘镜像(简称ARI),这样大家就能获得绑定镜像时必需的参考信息:

euca-bundle-image -i kvm-kernel/initrd.img-2.6.28-11-generic --ramdisk true
euca-upload-bundle -b jbbucket -m /tmp/initrd.img-2.6.28-11-generic.manifest.xml
euca-register jbbucket/initrd.img-2.6.28-11-generic.manifest.xml

上传自定义设备镜像,通过在之前步骤中获取到的值指定内核及虚拟磁盘:

euca-bundle-image -i centos-5.5-x86_64.img --kernel aki-XXXXXXXX --ramdisk ari-XXXXXXXX
euca-upload-bundle -b jbbucket -m /tmp/centos-5.5-x86_64.img.manifest.xml
euca-register jbbucket/centos-5.5-x86_64.img.manifest.xml

上传至镜像服务器的过程可能会持续一段时间——但当我们使用Eucalyptus的“describe images”命令时,新的AMI应该显示如下内容。

euca-describe-images
IMAGE    ami-reey5wk5    jbbucket/centos.5-5.x86-64.img.manifest.xml    myproject    available    private        x86_64    machine    ami-f4ks8moj    ami-jqxvgtmd

如何通过UI使用存储对象

大家可能利用REST API来访问自己在OpenStack中的存储对象,但更多的时候,我们只希望能有一套良好的用户界面,以便通过拖拽操作实现文件存储。开源客户端 Cyberduck,包括Mac OS X版本以及Windows版本,就针对从FTP到对象存储等一系列机制提供了一套用户界面。由于它的开源及跨平台特性,这款优秀的界面完全可以安装在 OpenStack对象存储当中(类似于Rackspace云文件)。大家在cyberduck.ch站点下载即可。要实现其在OpenStack中的安 装,我们需要变更某个 隐藏的配置选项 。这里需要将URL由default /v1.0修改为/auth/v1.0。要在Mac OS X中修改授权URL,则需要打开终端窗口并输入:

Defaults defaults write ch.sudo.cyberduck cf.authentication.context /auth/v1.0

Cyberduck 3.8.1中包含一个用于在打开某个链接时选择Swift(OpenStack对象存储)的下拉菜单。启动Cyberduck,然后点击新建连接工具栏按钮或者选择文件>打开连接。

选择Swift(OpenStack对象存储)并输入以下值:

  • Server(服务器):输入已安装的Swift服务器的URL。
  • Port(端口):由于用户是通过http进行连接,因此输入443.
  • Username(用户名):在冒号后输入账户名称,然后是用户名,例如test:tester。
  • Password(密码):根据上一步使用的账户名称及用户名输入对应密码。

图五显示的是一个Cyberduck Swift连接实例。

https://dn-linuxcn.qbox.me/data/attachment/album/201111/21/1110137qth8bgb0g7zta87.gif图五

大家在自己的对象存储系统中完成容器创建之后,就可以通过拖拽的方式将来自桌面的文件拷贝到Cyberduck当中,如图六所示。

https://dn-linuxcn.qbox.me/data/attachment/album/201111/21/111013uzp6ywpx9kzfa662.gif

图六

到这里,我们已经可以将所有的图片及视频作为内置冗余备份到大规模扩展存储系统当中。

获取帮助及其它进一步操作

如果大家在安装或测试过程中遇到问题,或者是无法使某些功能正常工作,OpenStack社区能够提供解决方案。Launchpad中的“Answers”主题是寻求帮助的理想所在。

Launchpad解答主题中的部分章节罗列如下:

如果还有其它疑问,各位不妨向 https://launchpad.net/~openstack 中的OpenStack邮件列表发送邮件,并在 文档 中留下评论,或者在 #openstack的IRC频道 中与其他共同讨论。

译文:http://os.51cto.com/art/201111/302661.htm

原文:http://drdobbs.com/web-development/231902601?pgno=1

12
查看其它分页:

最新评论

我也要发表评论

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。