使用 ComodIT 部署 Ceph

scuttlemonkey

在今年的 Cloud Expo Europe 上,我与 ComodIT 的团队进行了一次愉快的交流,他们正在开发一些有趣的部署和编排工具。他们很乐意在本周早些时候将其工作包含在博客文章中,并允许我在此处复制它供您参考。

与往常一样,如果您中的任何一位对 Ceph 进行了有趣的操作,我们总是想了解一下。欢迎随时将链接发送至 @Ceph 或将其发送至我们的 社区 别名。现在,请享受本周的部署精彩内容。

轻松部署和扩展 Ceph 集群

在本博客文章中,我们将解释如何使用 ComodIT 的编排功能在云中部署和扩展一个托管分布式对象存储和文件系统的 Ceph 集群。编排已经在之前的文章中通过托管 WordPress 博客的 Web 集群进行了说明。我们已成功在 Amazon EC2 和 Openstack 上测试了 Ceph 集群的部署,但是应该可以使用 ComodIT 支持的任何平台(Eucalyptus、Rackspace 等),甚至可以将集群部署到裸机基础设施上。

scuttlemonkey:我按照下面的安装指南操作,并有一些笔记可能对其他人的测试有所帮助。请记住,此演示是作为一个概念验证而构建的,而不是一个强大的部署脚本。ComodIT 计划随着时间的推移改进该脚本,但我认为这展示了早期功能的一个很好的评估。

Ceph 编排脚本可在 ComodIT 仓库 中找到。

如果您有其他编排用例,我们很乐意为您提供帮助。请与我们联系,让我们讨论一下。

Ceph 集群

典型的 Ceph 集群由以下每个服务的多个实例组成

  • 监视器 (MONs),用于管理集群,
  • 元数据服务 (MDSs),用于管理文件系统命名空间,
  • 对象存储服务 (OSDs),用于实际存储数据。

特别是,为了获得大量的存储,OSD 应该特别多。多个 MON 和 MDS 允许实现可扩展性和可靠性。最后,数据在 OSD 之间复制以提高可靠性。

Ceph 集群可以通过以下两种方式进行扩展

  • 增加 MON 的数量,
  • 增加 OSD 的数量。

scuttlemonkey:实际上是三个,因为您可以独立地扩展(或排除,如果您不使用 CephFS)MDS。在本例中,ComodIT 将 MON/MDS 一起部署。另外请记住,CephFS 对于生产部署来说仍然有点粗糙。

要求

  1. 具有有效平台和分发的 ComodIT 帐户(您将无法在 ComodIT 提供的演示平台上部署此示例)。
  2. ComodIT Python 库(与命令行界面捆绑在一起,请参阅 本教程 以了解如何安装它)。

scuttlemonkey:值得注意的是,虽然我从一台最小化配置的 Ubuntu 机器上部署,但 ComodIT 的团队默认使用 CentOS 6.3 作为他们的大部分内容(这也是您以后在分发中需要使用的镜像)。因此,最好使用它进行测试。

部署

  1. 克隆演示公共仓库并进入 Ceph 集群文件夹

    git clone https://github.com/comodit/demos.git cd demos/ceph-cluster

  2. 创建一个 config.py 文件,内容如下

    scuttlemonkey:我注意到这里有一个 config.py.sample,所以我只是执行了 'cp config.py.sample config.py' 并编辑了所需的值。

    endpoint = "https://my.comodit.com/api"

    username = "" password = "" organization = "<org_name>"

    time_out = 60 * 30 # 秒

    admin_key = "AQAEKwlRgBqsDhAA7cwN/JtEyCym6vYN/ixHqA=="

    platform = {"name" : "<plat_name>", "settings" : { ... } }

    distribution = {"name" : "<dist_name>", "settings" : { ... } }

    其中是您的 ComodIT 凭据,<org_name> 是您组织的名称,<plat_name> 是您组织中的平台名称,<dist_name> 是您组织中的分发名称。您还应该填写平台和分发的设置。

    scuttlemonkey:平台和分发是您在 ComodIT Web GUI 中定义的。为了演示的目的,我建议创建一个并使用 'ec2' 平台,并使用 ComodIT 的 '默认分发'(一个已经配置了用户数据内容的 CentOS 镜像)。

    例如,您可以使用 Amazon EC2 平台和存储的 CentOS 6.3 AMI。在这种情况下,平台设置如下所示

    "settings" : { "ec2.instanceType": "t1.micro", "ec2.securityGroups": "default", "ec2.zone": "eu-west-1a", "ec2.keyPair": "" }

    scuttlemonkey:在这种情况下,我选择将 ec2.zone 留空,因为 Amazon 在我测试时对 us-east-1a 提出了异议。

    其中是一个密钥对名称,分发不需要设置

    "settings" : {}

  3. 设置您的 ComodIT 帐户,即创建 setup 脚本创建的所有必需的应用程序和环境

    ./setup.py

  4. 实际部署集群

    ./deploy.py

    由 1 个 MON、1 个 MDS 和 2 个 OSD 组成的简单 Ceph 集群由 3 个主机托管:MON 和 MDS 托管在同一主机上,OSD 拥有自己的主机。当然,这不是要在生产中使用的架构,您应该始终拥有多个 MON。在 Amazon EC2 上完成整个部署需要几分钟。

scuttlemonkey:值得注意的是,如果出现错误,或者您需要 ^C 退出以修复或调整某些内容,您将需要运行 ./teardown.py 脚本来重置 mon/osd 编号上存储的变量。如果您不这样做,它可能会一直等待一个永远不会部署的机器(毕竟这是一个早期原型)。

  1. 部署脚本打印出我们称之为主节点的公共地址,即托管监视器和 MDS 的计算机。您可以使用 SSH 连接到此主机,并使用以下命令检查集群的运行状况(以超级用户或 root 用户身份执行)

    ceph -s

    有关更多详细信息,请参阅 Ceph 文档

scuttlemonkey:如果您习惯于使用 Ubuntu 主机,就像我一样,您需要使用 'ec2-user' 和您在 ComodIT 设置中指定的密钥对来登录到您的 CentOS 机器。

扩展 (OSDs)

向已部署的集群添加 OSD

./scale_osds.py -c 1

-c 选项是要添加的 OSD 数量。

scuttlemonkey:在我的例子中,'-c 1' 部分导致脚本卡住(可能是由于 Cent vs Ubuntu 的参数解析问题)。我没有真正深入研究以找到原因,./scale_osds.py 脚本默认值为 1,所以我只是在没有参数的情况下运行它,它工作正常。

扩展 (MONs)

向已部署的集群添加监视器

./scale_mons.py -c 1

-c 选项是要添加的监视器数量。

scuttlemonkey:值得注意的是,Ceph 集群的最佳设置是拥有奇数个监视器以实现法定数量。我将此告知 ComodIT 的团队,他们将在即将发布的版本的部署中添加警告。现在,由您记住(尽管为了查看其部署,即使数量为偶数也可以正常工作)。

关闭集群

您可以删除在部署和扩展操作期间创建的所有主机

./teardown.py

如果您还想清理您的组织,即删除 setup 脚本创建的应用程序和环境

./cleanup.py

scuttlemonkey:就这样了,另一种轻松部署 Ceph 集群以进行测试或原型设计的方法。很高兴看到人们将 Ceph 融入到他们自己的工作流程和环境中。希望看到更多展示 Ceph 的项目!感谢 ComodIT 的团队,特别是 Gérard(下图左侧),构建此演示并与我们分享。

scuttlemonkey 退出。
——————–

转载自: http://www.comodit.com/2013/02/12/effortless-deployment-of-a-ceph-cluster/