如何使用Juju部署OpenStack云?

我想让测试云启动并运行,以准备部署12.04。 我和UEC搞砸了一下,但是找到任何有用的东西作为新堆栈的底漆更加困难。 有关于暗黑破坏神的通用文档,但在Ubuntu中可能会有很多方便的特定指南可以节省时间。

此外,尽管我很乐意,但我的预算不包括4-6k,以便在Canonical支持下运行一个小型集群。

安装OpenStack

如果你想快速启动并运行,请转到此处:

  • 如何安装OpenStack?

这个答案更详细地介绍了如何在OpenStack中使用Juju。

范围

OpenStack平台function强大,用途多样。 本部分文档主要涉及使用(但不限于)Canonical组件(如MAAS,Juju和Ubuntu)部署运行OpenStack系统的“标准”。 适当时,将提及其他方法和软件。

假设

  1. 使用MAAS – 首先遵循这些说明。
  2. 使用Juju
  3. 本地网络配置 – 本文档假定您具有足够的本地网络配置,包括用于访问OpenStack云的单独接口。 理想的网络在[MAAS] [OpenStack的MAAS文档]中列出。

规划安装

在部署任何服务之前,评估可用资源以及如何使用它们非常有用。 OpenStack包含许多相互关联的服务(Nova,Swift等),每个服务在主机方面都有不同的要求。 例如,提供对象存储的Swift服务与提供计算资源的Nova服务具有不同的要求。

每个服务和建议的最低要求都在官方的OpenStack操作指南中列出

使用MAAS和Juju部署OpenStack的节点的推荐组合是系统中的所有节点都应该能够运行任何服务。 这是系统稳健性的最佳实践,因为任何物理节点都应该失败,另一个物理节点可以重新定位以取代它。 这显然扩展到任何硬件要求,如额外的网络接口。

如果出于经济原因或您选择使用不同配置的硬件,您应该注意到您将克服硬件故障的能力将会降低。 还需要将部署目标定位到特定节点 – 请参阅MAAS文档中有关标记的部分 。

创建OpenStack配置文件

我们将使用Juju魅力来部署OpenStack的组件部分。 每个魅力都包含了设置特定服务所需的一切。 但是,各个服务有许多配置选项,其中一些我们想要更改。

为了使此任务更容易和更可重现,我们将创建一个单独的配置文件,其中包含所有服务的相关选项。 这是用标准的YAML格式编写的( 如果您不熟悉,请参阅www.yaml.org )。

以下是openstack-config.yaml的示例:

keystone: admin-password: openstack debug: 'true' log-level: DEBUG nova-cloud-controller: network-manager: 'Neutron' quantum-security-groups: 'yes' neutron-external-network: Public_Network nova-compute: enable-live-migration: 'True' migration-auth-type: "none" virt-type: kvm #virt-type: lxc enable-resize: 'True' quantum-gateway: ext-port: 'eth1' plugin: ovs glance: ceph-osd-replication-count: 3 cinder: block-device: None ceph-osd-replication-count: 3 overwrite: "true" glance-api-version: 2 ceph: fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8 monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA== osd-devices: /dev/sdb osd-reformat: 'True' 

对于所有服务,我们可以将openstack-origin配置为指向安装源。 在这种情况下,我们将依赖默认值,它将指向Ubuntu 14.04 LTS Trusty版本的相关源。 本文档中解释了每种服务的进一步配置。

其他配置

其他设置和配置选项可用于部署OpenStack服务。 这些在Juju使用的个人魅力的文档中有详细说明,可以通过访问在线Juju魅力商店并使用页面左上角的搜索框搜索魅力进行检查。 然后在主页面的“配置”下详细说明配置设置,如下所示:

在此处输入图像描述

与Juju一起部署OpenStack

现在已经定义了配置,我们可以使用Juju来部署和关联服务。

初始化Juju

Juju需要最少量的设置。 在这里,我们假设它已经配置为与MAAS集群一起使用(有关详细信息,请参阅[Juju安装指南] [juju_install]。

首先,我们需要获取Juju将使用的图像和工具:

 juju sync-tools --debug 

然后我们可以创建引导实例:

 juju bootstrap --upload-tools --debug 

我们使用upload-tools开关来使用我们刚刚提取的工具的本地版本。 调试开关将提供详细的输出,这可能很有用。 这个过程可能需要几分钟,因为Juju正在创建一个实例并安装工具。 完成后,您可以使用以下命令检查系统的状态:

 juju status 

这应该返回如下:

 environment: maas machines: "0": agent-state: started agent-version: 1.18.1.1 dns-name: localhost instance-id: localhost series: trusty 

部署OpenStack Charms

现在Juju引导节点已启动并运行,我们可以部署进行OpenStack安装所需的服务。 要在部署这些服务时正确配置这些服务,我们将使用我们之前定义的配置文件,并将其与--config开关一起传递给每个deploy命令。 如果不同,请替换配置文件的名称和路径。

按以下顺序部署服务很有用但不是必需的。 还强烈建议打开一个额外的终端窗口并运行命令juju debug-log 。 这将在运行时输出所有服务的日志,并可用于故障排除。

还建议定期运行juju status命令,以检查每个服务是否已安装且运行正常。 Juju将自动尝试从在线魅力商店中获取最佳版本的魅力。 如果从受限或封闭的网络中进行安装,则可以预取所需的超级按钮。 请参阅[脱机魅力的文档] [魅力离线]。

 juju deploy --to=0 juju-gui juju deploy rabbitmq-server juju deploy mysql juju deploy --config openstack-config.yaml openstack-dashboard juju deploy --config openstack-config.yaml keystone juju deploy --config openstack-config.yaml ceph -n 3 juju deploy --config openstack-config.yaml nova-compute -n 3 juju deploy --config openstack-config.yaml quantum-gateway juju deploy --config openstack-config.yaml cinder juju deploy --config openstack-config.yaml nova-cloud-controller juju deploy --config openstack-config.yaml glance juju deploy --config openstack-config.yaml ceph-radosgw 

添加OpenStack服务之间的关系

虽然现在部署了服务,但它们尚未连接在一起。 每项服务目前都是孤立存在的。 我们使用juju add-relation命令让他们相互了解并设置任何相关的连接和协议。 这个额外的配置由个人魅力本身来处理。

我们应该通过设置Keystone授权服务及其数据库来开始添加魅力之间的关系,因为许多其他连接都需要这样做:

 juju add-relation keystone mysql 

我们等到关系设定。 完成后检查juju状态:

 juju status mysql juju status keystone 

这项服务可能需要一些时间来解决。 尽管可以继续添加关系(Juju管理待处理行为的队列),但就总体时间而言,它可能会适得其反,因为许多关系都指的是相同的服务。

还需要建立以下关系:

 juju add-relation nova-cloud-controller mysql juju add-relation nova-cloud-controller rabbitmq-server juju add-relation nova-cloud-controller glance juju add-relation nova-cloud-controller keystone juju add-relation nova-compute mysql juju add-relation nova-compute rabbitmq-server juju add-relation nova-compute glance juju add-relation nova-compute nova-cloud-controller juju add-relation glance mysql juju add-relation glance keystone juju add-relation cinder keystone juju add-relation cinder mysql juju add-relation cinder rabbitmq-server juju add-relation cinder nova-cloud-controller juju add-relation openstack-dashboard keystone juju add-relation swift-proxy swift-storage juju add-relation swift-proxy keystone 

最后,juju状态的输出应该表明所有关系都是完整的。 OpenStack云现在正在运行,但在准备使用之前需要填充一些其他组件。

Ken Pepple有一本关于部署OpenStack的书: http ://shop.oreilly.com/product/0636920021674.do

Ken的公司(Internap)拥有第一个商业化的OpenStack云计算服务。

http://www.theregister.co.uk/2011/10/28/internap_openstack_cloud/

Internap的云构建在XenServer平台(XCP)上作为虚拟机管理程序。

部署RDO是一个快速简便的过程。 设置OpenStack云大约需要15分钟,可以短至3个步骤。 http://openstack.redhat.com/Quickstart