用最少的基础设施部署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安装工具(如pip
和easy_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-firefly或http://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-firefly或http://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.pub
或id_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地址。例如,foo,foo.example.com,foo:something.example.com,和 foo:1.2.3.4 都是有效的。注意,然而,主机名应该与主机 foo 上配置的相匹配。
上述操作将在您的当前目录中创建一个 ceph.conf 和 ceph.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.conf和ceph.client.admin.keyring密钥环的主机,以便它可以管理集群,请运行
ceph-deploy admin HOST [HOST ...]
忘记密钥
new和gatherkeys将一些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来测试你的更改(你还需要mock和pytest)。
创建提交信息时,请使用git commit -s或在其他地方添加Signed-off-by: Your Name <email@address.dom>到你的提交信息中。
然后可以通过GitHub上的拉取请求提交补丁。
项目详情
ceph-deploy-2.0.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | aa34fa0ef75946d4aff63dbe639c7add4034b90b974954c7bde54fb4fc0817e5 |
|
MD5 | 2dd9c21f5373b3513ab6bfa38d96426d |
|
BLAKE2b-256 | 1f158dcbd2054670a8761d6484e588739cac5681e5661e9379862d121188b545 |