OpenStack详细解读定义好处与使用实例文档格式.docx
《OpenStack详细解读定义好处与使用实例文档格式.docx》由会员分享,可在线阅读,更多相关《OpenStack详细解读定义好处与使用实例文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
镜像元数据的容器格式包括Amazon的AKI、ARI以及AMI信息,标准OVF格式以及二进制大型数据。
最近根据投票结果纳入“核心”项目集团的新成员是一项代号为“Keystone”的身份服务以及一套基于Django的仪表板接口,后者的代号为“Horizon”。
本文中的仪表板示例也来源于这一项目。
初窥门径
尝试探索OpenStackCompute最为合适的起点莫过于devstack.org站点,它为开发人员或是概念验证者们提供了一套脚本化安装方案。
来自docs.openstack.org的OpenStack入门教程同样具备一步步详细的指示,帮助我们在Ubuntu11.10中设定OpenStackCompute、镜像服务以及多合一对象存储的安装。
如果大家拥有一台自己的服务器,并打算利用它搞一些概念验证工作,那么点击此处可以获取一套专门供裸机使用的StackOps安装系统。
有了它,我们可以通过CD或者USB记忆棒完成OpenStack的安装。
各位还可以利用docs.openstack.org上提供的对象存储管理员指南或者OpenStackCompute管理员指南中的安装说明,设置出生产级别的OpenStack对象存储集群或是OpenStackCompute云。
OpenStack的使用
安装结束之后,接下来我们就要看看如何利用部分安全功能,通过仪表板接口或是命令行启动OpenStackCompute实例。
我还将展示面向对象存储的、用于通过块存储备份镜像或者视频的接口。
登录到仪表板接口
OpenStack的仪表板是安装在运行着NovaAPI服务的节点中的。
通过这套仪表板,大家应该可以看出NovaAPI实例的URL与有效仪表板的证书一样,也包括用户名及密码。
只要有了用户名与密码,大家可以利用OpenStack仪表板实现许多功能。
首先,通过云管理员分配给我们的用户名及密码登录到仪表板中。
登录之后,可以看到服务器使用量与每台服务器的当前状态,如图一。
图一
大家也可以点击查看哪些服务器处于终止状态。
请注意,这里的正常运行时间并不会显示每套单独服务器的状态。
用户仪表板左侧的菜单提供的是我们所能执行的仪表板操作选项,所发出的命令通过API传递至终端。
系统面板(也就是页面最上方的菜单)提供另一套视图,使得管理员能够监控使用状态、检查云中正在运行的服务并管理用户及项目的配额。
如何在仪表板中启用实例
现在,大家已经初步熟悉了仪表板的总体布局,接下来就该利用自己的云启动一套新的虚拟机系统,也就是镜像实例。
一般来说,我们的云管理员应该已经上传了启动所必需的镜像。
如果没有,我将在后文中讨论如何创建自定义镜像。
要想启动镜像,首先找到仪表板中的镜像选项,在选定所要启动的镜像类型后点击启用按钮。
图二中显示了可用的几款Ubuntu服务器镜像以及一款Windows镜像。
图二
如果大家通过点击启动按钮完成镜像启动工作,那么接下来将会看到如图三所示的启动实例窗口。
图三
此窗口包含了为服务器命名、在启动中插入某些用户数据、选择CPU数量、硬盘空间以及RAM数量等功能,设置完成后点击“启动实例”。
现在我们已经拥有了一套虚拟服务器,无论是SSH还是正常使用都没问题,就像普通的服务器一样。
但同时我们也省去了大量组装、部署、布线等常规服务器所带来的诸多麻烦。
如何使用虚拟机实例
所谓实例,是指具备特殊规格内存、硬盘空间以及CPU的虚拟机。
在OpenStackCompute的辅助下,我们通过对云的调整及启用,可以让用户实现启动实例、重启实例以及保存快照以备日后再利用等工作。
通过观察用户仪表板中的实例,我们能够清楚地看到自己刚刚所启动的实例。
对于每个实例,我们都有数个操作选项,例如终止实例、重新启动、保存快照等等——这些操作的实现都依靠OpenStackComputeAPI1.1的支持。
我们也可以打开一个控制台窗口或是查看某个处于仪表板内的实例的日志文件。
为镜像添加安全密钥
安全功能是我们控制发往自己虚拟机访问的必要保障,OpenStack通过两种认证机制管理客户端工具。
一种是仪表板自带的用户名及密码机制;
另一种则是“密钥对”,密钥为用户的实例提供安全验证。
只有当用户能够同时通过以上两种认证过程时,才能够获得在OpenStack云中访问目标实例的权限。
密钥对(包括公共密钥对与私有密钥对)在我们启用实例时可以作为非常有用的参数。
举例来说,要启动一套实例并加以访问,我们必须利用SSH创建一套密钥对,这样就能够识别通过SSH访问该实例的用户。
OpenStack仪表板让我们能够在密钥对选项中通过点击创建新密钥对管理密钥。
在下图当中,大家可以为自己的密钥对命名,然后点击创建密钥按钮。
创建新密钥对的过程包括登记公共密钥及下载私有密钥(一个.pem文件)两部分。
由于这一创建工作完全是为我们的使用服务,因此请务必像对待其它SSH私有密钥一样妥善加以保管。
详见图四。
图四
利用工具为自动化脚本启动实例
我们可以轻松地通过仪表板启动实例,但更多时候大家也许希望能够利用命令行加以启动,以使用某些脚本。
这里只要安装python-nova客户端,我们就能在命令行中获得可以使用ComputeAPI接口的novashell命令。
安装客户端,然后提供用户名及密码,设置适当的环境变量,这样我们就拥有了在命令行中向云端发送命令的能力。
安装python-nova客户端,点此下载原始码,并将其安装于大家常用的python环境中。
$curl-Ohttp:
//pypi.python.org/packages/source/p/python-novaclient/pythonnovaclient-2.6.3.tar.gz
$tar-zxvfpython-novaclient-2.6.3.tar.gz
$cdpython-novaclient-2.6.3
$sudopythonsetup.pyinstall
现在大家已经安装了python-nova客户端,输入以下内容以确认安装:
$novahelp
此时大家应该看到一个nova命令行客户端的所有命令与参数列表。
通过设置环境变量所需的参数,我们可以在命令行上快速执行这些命令。
为nova命令添加--username,或者将这些参数设为环境变量:
exportNOVA_USERNAME=joecool
exportNOVA_API_KEY=coolword
exportNOVA_PROJECT_ID=coolu
项目ID与Tenant一样,都依赖于我们所使用的验证服务。
当云管理员设置OpenStack时,应该注意为其分配一个类似NOVA_URL这样能够为nova所辨识的验证端点。
exportNOVA_URL=http:
//hostname:
5000/v2.0
exportNOVA_VERSION=1.1
在建立自己的云之前,我们需要通过向镜像服务查询哪些配置类型可以奏效,来了解什么样的镜像能够被正确使用。
镜像服务有点像云领域的iTunes:
我们可以在利用自己常用的镜像在云中创建实例之前,先在列表中查看哪些镜像适用。
大家可以利用以下命令获得镜像信息列表,包括名称、状态以及ID:
$novaimage-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参数。
$novaflavor-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镜像的信息:
$novaimage-list|grep'
'
CentOS'
在反馈得出的信息方面,我们可以选择图像与描述相结合的方式创建自己的虚拟服务器,并启动实例。
要启动服务器,首先选择一个镜像,找出该镜像及相关描述的ID,并对其进行调整;
接下来利用ID创建命令。
根据上文所给出的资料,我们可以看到UbuntuMaverick镜像的ID为15。
如果我们实际只打算搭建一个2GBy内存、20GB硬盘空间的小型服务器,那么可以选择m1.small——因为它所使用的ID为2.将这些参数添加进boot命令中,这样新建虚拟服务器的工作就完成了。
$novaboot--flavor=2--image=15testserver
+-----------+--------------------------------------+
|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:
|uuid|ce044452-f22e-4ea4-a3ec-d1cde80cf996|
现在,大家使用novalist命令即可查看自己在云中所部署的新服务器:
$novalist
+------+------------+--------+--------------------------------+
|ID|Name|Status|Networks|
|1805|testserver|ACTIVE|private=10.4.96.81|
状态选项共有三种,分别是:
ACTIVE(活跃),BUILDING(创建中)以及UNKNOWN(未知)。
BUILDING状态一般是暂时性的,因此大家很可能在自己操作的时候不会遇到。
如果出现UNKNOWN状态,不妨反复运行novalist命令,直到该状态消失。
要查看特定服务器的全部信息,使用novashow命令加上我们从novalist命令中获得的服务器ID。
$novashow1805
+-----------------+----------------------------------------------------------+
|hostId|58a7430169aa42cde5ce2456b0cb5bb5ac1ab0703bab6420e8a49e6e|
|privatenetwork|10.4.96.81|
|progress|100|
|status|ACTIVE|
46Z|
通过以上几项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的EC2API。
安装euca2ools命令行工具并确保自己的环境包含了Eucalyptus运行所必需的认证机制。
上传内核,并注意Amazon内核镜像(简称AKI):
euca-bundle-image-ikvm-kernel/vmlinuz-2.6.28-11-generic--kerneltrue
euca-upload-bundle-bjbbucket-m/tmp/vmlinuz-2.6.28-11-generic.manifest.xml
euca-registerjbbucket/vmlinuz-2.6.28-11-generic.manifest.xml
上传虚拟磁盘并注意Amazon虚拟磁盘镜像(简称ARI),这样大家就能获得绑定镜像时必需的参考信息:
euca-bundle-image-ikvm-kernel/initrd.img-2.6.28-11-generic--ramdisktrue
euca-upload-bundle-bjbbucket-m/tmp/initrd.img-2.6.28-11-generic.manifest.xml
euca-registerjbbucket/initrd.img-2.6.28-11-generic.manifest.xml
上传自定义设备镜像,通过在之前步骤中获取到的值指定内核及虚拟磁盘:
euca-bundle-image-icentos-5.5-x86_64.img--kernelaki-XXXXXXXX--ramdiskari-XXXXXXXX
euca-upload-bundle-bjbbucket-m/tmp/centos-5.5-x86_64.img.manifest.xml
euca-registerjbbucket/centos-5.5-x86_64.img.manifest.xml
上传至镜像服务器的过程可能会持续一段时间——但当我们使用Eucalyptus的“describeimages”命令时,新的AMI应该显示如下内容。
euca-describe-images
IMAGEami-reey5wk5jbbucket/centos.5-5.x86-64.img.manifest.xmlmyprojectavailableprivatex86_64machineami-f4ks8mojami-jqxvgtmd
如何通过UI使用存储对象
大家可能利用RESTAPI来访问自己在OpenStack中的存储对象,但更多的时候,我们只希望能有一套良好的用户界面,以便通过拖拽操作实现文件存储。
开源客户端Cyberduck,包括MacOSX版本以及Windows版本,就针对从FTP到对象存储等一系列机制提供了一套用户界面。
由于它的开源及跨平台特性,这款优秀的界面完全可以安装在OpenStack对象存储当中(类似于Rackspace云文件)。
大家在cyberduck.ch站点下载即可。
要实现其在OpenStack中的安装,我们需要变更某个隐藏的配置选项。
这里需要将URL由default/v1.0修改为/auth/v1.0。
要在MacOSX中修改授权URL,则需要打开终端窗口并输入:
Defaultsdefaultswritech.sudo.cyberduckcf.authentication.context/auth/v1.0
Cyberduck3.8.1中包含一个用于在打开某个链接时选择Swift(OpenStack对象存储)的下拉菜单。
启动Cyberduck,然后点击新建连接工具栏按钮或者选择文件>
打开连接。
选择Swift(OpenStack对象存储)并输入以下值:
Server(服务器):
输入已安装的Swift服务器的URL。
Port(端口):
由于用户是通过http进行连接,因此输入443.
Username(用户名):
在冒号后输入账户名称,然后是用户名,例如test:
test