热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Puppet安装OpenStackNova云计算平台

OpenStack从RackpaceCloud和NASA的合作中出现,它提供运行在标准化硬件上的云计算服务。现在一个有超过60家公司的社团正在研发它。OpenStack是Apache服务器许可并由许多更小的项目组成,包括Nova计算平台以及一个大规模可扩展冗余存储系统Swift。使用Op

 OpenStack从Rackpace Cloud和NASA的合作中出现,它提供运行在标准化硬件上的云计算服务。现在一个有超过60家公司的社团正在研发它。OpenStack是Apache服务器许可并由许多更小的项目组成,包括Nova计算平台以及一个大规模可扩展冗余存储系统Swift。

使用OpenStack的一个方法是使用Puppet并安装一个OpenStack Nova计算云,这就是我们将在这篇文章中讲述的内容。Nova计算组件大体上等效于Amazon EC2的功能。它允许你使用包括AMI镜像在内的镜像文件来部署虚拟机以及管理这些已部署的实例。

首先,我们将要构建一个Ubuntu 11.04主机(Ubuntu Natty的ISO文件)。最好是选择一个物理主机而不是一个虚拟机,这不仅是因为性能原因,还因为在一个虚拟化内部进行虚拟化会引起不可预知的结果。如果你想要运行许多不同的镜像,那么你将需要大量硬盘空间,至少10到20G。

接下来,你需要在主机上安装Puppet和Git:

$ sudo apt-get install ruby rubygems git
$ sudo gem install puppet

Nova需要通过一个PPA或者称为个人软件包存档来完成安装,它是一个包含Nova计算组件当前开发版本的软件包储存库。这是必需的,因为Nova处在一个过度的研发状态,同时最近打包的发行版本还不存在。

$ sudo apt-get install -y python-software-properties
$ sudo add-apt-repository ppa:nova-core/trunk

接着你需要更新APT储存库来获得新的PPA的详细信息:

$ sudo apt-get update

此时,使用Git从OpenStack处下载Puppet Lab OpenStack组件。

$ cd ~ && git clone ?recurse
git://github.com/puppetlabs/puppetlabs-openstack.git

把所下载的组件复制到Puppet组件路径:

$ sudo cp -R ~/puppetlabs-openstack/modules/* /etc/puppet/

现在你拥有了在主机上安装Nova所需的所有东西。想要进行实际的安装,你需要在主机上触发运行一个本地的Puppet。

$ sudo puppet apply --verbose ~/puppetlabs-openstack/manifests/all.pp

这将会运行all.pp Puppet清单,它将会安装并配置Nova的所有组件以及其支持包和必备条件。

一旦Puppet已运行完成(它可能会花一些时间,因为它必须下载许多程序包),然后你需要添加一些AMI格式的镜像。

$ cd /tmp
$ mkdir lucid_ami && cd lucid_ami
$ wget -q -O - http://173.203.107.207/ubuntu-lucid.tar | tar xSv

这会下载并解压一个包括我们可以用来创建实例的明晰示例Ubuntu镜像在内的压缩文件。然后,你将把这些镜像文件,包括一个内存盘、一个内核以及一个操作系统镜像文件,添加到一个称为Glance的服务中,这个服务是一个用于发现、记录并检索镜像的OpenStack服务。

首先添加内存盘和内核。

$ glance add name=ramdisk disk_format=ari container_format=ari is_public=True < initrd.img-2.6.32-23-server
$ glance add name=kernel disk_format=aki container_format=aki is_public=True < vmlinuz-2.6.32-23-server

然后你可以列出已经被添加的镜像:

$ glance index

发现2个公开的镜像...

编号  名称 磁盘格式   容器格式 大小
2  kernel  aki  aki  4099360
1 ramdisk  ari ari   7988037

你应该看到了你的内存盘镜像#1以及我们的内核#2。然后你可以连同我们明晰的操作系统镜像一起使用它们并也把它添加进去:

$ glance add name=lucid_ami disk_format=ami container_format=ami is_public=True ramdisk_id=1 kernel_id=2 < ubuntu-lucid.img

然后再次列出镜像文件,发现你现在拥有镜像#3:一个你将其作为一个虚拟实例推出的明晰的Ubuntu AMI。

$ glance index

发现3个公开的镜像文件...

编号 名称  磁盘格式  容器格式 大小
3  lucid_ami ami ami 524288000
2 kernel aki aki 4099360
1 ramdisk ari  ari  7988037

你也可以添加其它的多种格式的镜像到Glance。

接下来,你需要通过运行一些Nova子命令来设置你到Nova的访问权限和身份验证,这会产生一个密钥对,用来验证我们的Nova实例(类似于使用Amazon AWS的密钥对)。这些相同的命令还会创建一个Bash脚本,用来设置合适的环境变量来验证Nova。

$ cd ~
$ sudo nova-manage project zipfile nova novaadmin

现在,你应该拥有了一个包含密钥对和Bash脚本在内的被称为nova.zip的压缩文件,它需要解压:

$ unzip nova.zip

运行Bash脚本来填充我们的身份认证和环境变量。在你可以通过一个命令行会话与Nova进行交互之前,你需要运行这个脚本,或者把它的运行作为登录的一部分。

$ source novarc

最后,添加你的密钥对,调用配对的openstack:

$ euca-add-keypair openstack > ~/cert.pem

现在,你可以使用这个密钥对来运行一个实例了。寻找一个镜像来运行:

$ nova image-list
+----+-----------+--------+
| 编号 | 名称 | 状态 |
+----+-----------+--------+
| 1 | ramdisk | ACTIVE |
| 2 | kernel | ACTIVE |
| 3 | lucid_ami | ACTIVE |
+----+-----------+--------+

然后寻找这个镜像的一个特色来运行。特色描述了你将要运行的这个镜像的大小和类型。在Amazon AWS世界,这是一个小中、大实例间的不同之处。你将会发现该功能与Amazon EC2相似。

$ 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 | | | |
+----+-----------+-----------+------+----------+-------+------------+----------+

在这个例子中,我们将选择运行一个小特色的ami-00000003镜像实例,就是你刚刚添加的明晰Ubuntu镜像,并使用openstack密钥对:

$ euca-run-instances ami-00000003 -k openstack -t m1.tiny

启动和配置实例将会花费好几分钟的时间,同时你可以使用以下命令来跟踪它的状态:

$ euca-describe-instances
i-00000001 ami-00000003 11.0.0.2 11.0.0.2 building m1.tiny

这里你可以看到该实例已经启动并且已为其分配了一个IP地址:11.0.0.2。有了这个IP地址和你的密钥对,你现在就可以通过SSH连接到这个新的实例。

$ ssh -i ~/cert.pem root@11.0.0.2

当你登录到这个新的实例以后,你就可以设置它,在它上面部署应用程序以及使用它直到你不再需要它为止(你可以通过euca-terminate-instance命令来终止这个实例)。你也可以生成其它实例并使自己可以运行你自身的开源云。

OpenStack才刚刚起步,同时,包括身份验证和数据库服务等在内的许多附加的项目也正在进行中,而且现有的组件每天都在扩展和更新。如果你想要更深层次的了解OpenStack,那么你可以参考一些文档,或者看看邮件列表,在那里你可以得到帮助或者参与研发。

英文:How to install an OpenStack Nova compute cloud with Puppet


推荐阅读
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 本文详细介绍了Java中org.apache.logging.log4j.spi.AbstractLogger类的logIfEnabled()方法,包括其功能、参数说明及实际代码示例。通过这些示例,读者可以更好地掌握如何在项目中使用该方法进行日志记录。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 本文详细介绍了 Java 中的 org.apache.hadoop.registry.client.impl.zk.ZKPathDumper 类,提供了丰富的代码示例和使用指南。通过这些示例,读者可以更好地理解如何在实际项目中利用 ZKPathDumper 类进行注册表树的转储操作。 ... [详细]
author-avatar
奶油泡芙2覀21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有