跳转到主要内容

用最少的基础设施部署Ceph

项目描述

ceph-deploy 是一种仅依赖服务器SSH访问、sudo和Python的Ceph部署方式。它在您的工作站上完全运行,无需服务器、数据库或其他任何东西。

如果您经常设置和拆除Ceph集群,并且希望尽量减少额外的繁琐流程,这个工具适合您。

README 提供了 ceph-deploy 的简要概述。如需详细文档,请访问 http://ceph.com/ceph-deploy/docs

此工具不是什么

它不是一个通用的部署系统,它仅适用于Ceph,且是为那些希望快速以合理的初始设置运行Ceph而不需要安装Chef、Puppet或Juju的用户设计的。

该工具不支持推送Ceph配置文件和用户之外的客户配置,希望对安全设置、分区或目录位置进行精细控制的用户应使用Chef或Puppet等工具。

安装

根据您打算如何使用ceph-deploy,您可能需要考虑不同的安装方式。对于自动化,您可能希望直接进行bootstrap。常规用户可能从操作系统软件包或Python包索引安装ceph-deploy

Python包索引

如果您熟悉Python安装工具(如pipeasy_install),您可以通过以下方式轻松安装ceph-deploy

pip install ceph-deploy

或者

easy_install ceph-deploy

它应该会自动获取所有依赖项并将其安装到当前用户的环境中。

我们强烈建议使用virtualenv并以封装方式安装依赖项。

DEB

所有新版本的ceph-deploy都被推送到所有ceph DEB发布仓库。

DEB发布仓库位于

http://ceph.com/debian-{release}
http://ceph.com/debian-testing

这意味着,例如,从http://ceph.com/debian-giant安装ceph-deploy将安装与从http://ceph.com/debian-fireflyhttp://ceph.com/debian-testing相同的版本。

RPM

所有新版本的ceph-deploy都被推送到所有ceph RPM发布仓库。

RPM发布仓库位于

http://ceph.com/rpm-{release}
http://ceph.com/rpm-testing

请确保为您的发行版添加正确的仓库(例如,el7与rhel7)。

这意味着,例如,从http://ceph.com/rpm-giant安装ceph-deploy将安装与从http://ceph.com/rpm-fireflyhttp://ceph.com/rpm-testing相同的版本。

初始化

要准备源代码树以供使用,请运行以下命令一次

./bootstrap

您可以将ceph-deploy脚本链接到某个方便的位置(例如~/bin),或将当前目录添加到PATH中,或者只需始终输入ceph-deploy的完整路径。

SSH和远程连接

ceph-deploy将在主机名与当前主机名不匹配时尝试通过SSH连接到主机。例如,如果您正在连接到主机node1,则只要当前主机的名称不是node1,它就会尝试SSH连接。

至少,ceph-deploy要求从运行脚本的主机以root用户身份无密码ssh连接到每个Ceph节点。

要启用此功能,为root用户生成一个新的ssh密钥对(无密码)并将其公钥(id_rsa.pubid_dsa.pub)放置在

/root/.ssh/authorized_keys

并确保以下行包含在sshd配置中

PermitRootLogin without-password
PubkeyAuthentication yes

运行ceph-deploy的机器不需要安装Ceph软件包,除非它需要直接使用ceph命令行工具来管理集群。

用户名

如果没有指定,连接将使用执行ceph-deploy的相同用户名进行。如果所有节点都共享相同的用户名,这很有用,但如果不是这样,可能会很麻烦。

避免这种情况的一种方法是在SSH配置中定义正确的连接用户名,但您也可以使用--username标志。

ceph-deploy --username ceph install node1

首先,ceph-deploy 将会依次使用 ceph@node1 来连接到该主机。

任何需要连接到远程主机的操作都会有相同的预期。

管理现有集群

您可以使用 ceph-deploy 为现有集群部署节点。为了获取集群配置文件(通常是 ceph.conf)的副本

ceph-deploy config pull HOST

您通常会还想收集用于该集群的加密密钥

ceph-deploy gatherkeys MONHOST

此时,您可以跳过以下创建新集群的步骤(您已经有了一个集群)和/或根据您要完成的工作,跳过安装和/或监控创建。

创建新集群

创建新配置

要创建新的配置文件和密钥,决定哪些主机将运行 ceph-mon,然后运行

ceph-deploy new MON [MON..]

列出监控器的主机名。每个 MON 可以是

  • 一个简单的主机名。它必须能够通过完全限定域名解析,但不能包含完全限定域名。

  • 一个完全限定域名。主机名假设是第一个点之前的部分。

  • 一个 HOST:FQDN 对,包括主机名和完全限定域名或IP地址。例如,foofoo.example.comfoo:something.example.com,和 foo:1.2.3.4 都是有效的。注意,然而,主机名应该与主机 foo 上配置的相匹配。

上述操作将在您的当前目录中创建一个 ceph.confceph.mon.keyring

编辑初始集群配置

您需要检查生成的 ceph.conf 文件,并确保 mon_host 设置包含您希望监控器绑定的IP地址。这些是客户端最初用来验证集群的IP地址,并且它们需要由外部客户端主机和内部集群守护进程都能访问。

安装软件包

要在服务器上安装Ceph软件,请运行

ceph-deploy install HOST [HOST..]

这将安装当前的默认 稳定 版本。您可以通过命令行选项选择不同的发布轨道,例如使用发布候选

ceph-deploy install --testing HOST

或者测试开发分支

ceph-deploy install --dev=wip-mds-now-works-no-kidding HOST [HOST..]

代理或防火墙安装

如果尝试在防火墙后或通过代理安装,您可以使用 --no-adjust-repos,这将告诉 ceph-deploy 跳过对发行版仓库的任何更改,以便安装软件包,并直接进入安装过程。

这将允许没有互联网访问的环境指向 它自己的仓库。这意味着在尝试安装之前,那些仓库需要正确设置(并带有所有必要的依赖项进行镜像)。

另一种选择是将 wget 环境变量设置到正确的主机,例如,在每个节点上(因为 ceph-deploy 以 root 运行 wget)将以下行放入 /root/.wgetrc

http_proxy=http://host:port
ftp_proxy=http://host:port
https_proxy=http://host:port

部署监控器

要将 ceph-mon 实际部署到您选择的主机,请运行

ceph-deploy mon create HOST [HOST..]

如果没有明确列出主机,将在配置文件中的 mon_initial_members 中部署主机。也就是说,传递给 ceph-deploy new 的主机是这里的默认值。

收集密钥

为了将认证密钥(用于管理集群和启动新节点)收集到本地目录中,请运行

ceph-deploy gatherkeys HOST [HOST...]

其中 HOST 是监控主机之一。

一旦这些密钥存放在本地目录中,您就可以配置新的OSD等。

部署OSD

为了准备节点运行OSD,请运行

ceph-deploy osd create HOST:DISK[:JOURNAL] [HOST:DISK[:JOURNAL] ...]

之后,主机将为指定的数据磁盘运行OSD。如果您指定了原始磁盘(例如,/dev/sdb),将创建分区并使用GPT标签来标记和自动激活OSD卷。如果指定了现有分区,则不会修改分区表。如果要在DISK上首先销毁现有分区表,可以包含--zap-disk选项。

如果已有一个准备好的磁盘或目录,该磁盘或目录已准备好成为OSD,您也可以这样做

ceph-deploy osd activate HOST:DIR[:JOURNAL] [...]

这在对卷挂载进行自我管理时很有用。

管理主机

为了准备一个具有ceph.confceph.client.admin.keyring密钥环的主机,以便它可以管理集群,请运行

ceph-deploy admin HOST [HOST ...]

忘记密钥

newgatherkeys将一些Ceph认证密钥放入本地目录中的密钥环中。如果您担心出于安全原因它们在那里,请运行

ceph-deploy forgetkeys

然后它们将被删除。如果您稍后需要它们来部署更多节点,只需重新运行

ceph-deploy gatherkeys HOST [HOST...]

然后它们将从现有的监控节点检索。

多个集群

所有上述命令都接受--cluster=NAME选项,允许您从一台工作站方便地管理多个集群。例如

ceph-deploy --cluster=us-west new
vi us-west.conf
ceph-deploy --cluster=us-west mon

常见问题解答(FAQ)

首先

请确保您拥有ceph-deploy的最新版本。它正在积极开发中,每周(平均)都有新版本发布。最新版本的ceph-deploy将有一个--version标志,您可以使用它,否则请通过您的包管理器检查并更新,如果有任何新版本。

为什么功能X没有实现?

通常,在有人想开始使用ceph并且该功能在该上下文中有意义的情况下,才会添加功能。如果您认为这是正确的,并且您已经阅读了“这个工具不是什么”,仍然认为功能X应该存在于ceph-deploy中,请向ceph tracker打开功能请求:http://tracker.ceph.com/projects/ceph-deploy/issues

一个命令给了我一个错误,发生了什么?

ceph-deploy的大部分命令都旨在在创建初始配置时配置的主机上远程运行。如果某个命令没有按预期工作,请尝试在远程主机上运行失败的命令并断言该行为。

如果在远程主机上行为相同,那么这很可能不是ceph-deploy本身的问题。确保您捕获了ceph-deploy输出和远程主机上的命令输出。

监控器问题

如果您的监控器没有启动,请确保您在运行ceph-deploy mon create {hostname}时使用的{hostname}与远程主机中的实际hostname -s匹配。

ceph-deploy的新版本应该会在结果不同时警告您,但这可能会阻止监控器达到法定人数。

开发ceph-deploy

既然你已经对Ceph有了深入的了解,你可能想为ceph-deploy项目做出贡献。

资源

错误跟踪:[http://tracker.ceph.com/projects/ceph-deploy/issues](http://tracker.ceph.com/projects/ceph-deploy/issues)

邮件列表和IRC信息与ceph相同:[http://ceph.com/resources/mailing-list-irc/](http://ceph.com/resources/mailing-list-irc/)

提交补丁

请添加测试用例来覆盖你添加的任何代码。你可以通过在git克隆内部运行tox来测试你的更改(你还需要mockpytest)。

创建提交信息时,请使用git commit -s或在其他地方添加Signed-off-by: Your Name <email@address.dom>到你的提交信息中。

然后可以通过GitHub上的拉取请求提交补丁。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

ceph-deploy-2.0.1.tar.gz (115.1 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面