使用 ceph-deploy 部署 Ceph

scuttlemonkey

如果您最近部署了 Ceph,而没有借助 Chef 或 Juju 等编排工具,您可能已经注意到 ceph-deploy 受到了很多关注。 Ceph-deploy 是部署 Ceph 的新独立方式(取代 mkcephfs),它仅依赖于 ssh、sudo 和一些 Python 来完成任务。 如果您正在试验 Ceph,或者经常部署和拆除 Ceph 集群,并且不想增加编排框架的开销,那么这可能是适合您的工具。

由于该工具最近经过了很多改进,我们想发布一个简单易懂的演练教程,以帮助人们上手。 但是,由于我们也喜欢来自社区的精彩内容,而不是我们一直垄断麦克风,因此我们认为复制社区贡献者 Loic Dachary 的博客会更好。 继续阅读他的 ceph-deploy 演练教程并尝试一下!

Ubuntu raring 创建一个 ceph-deploy 包并使用以下命令安装:

dpkg -i ceph-deploy_0.0.1-1_all.deb

生成一个没有密码的 ssh 密钥,并将其复制到每个主机上的 root .ssh/authorized_keys 文件中,ceph-deploy 将在这些主机上运行:

# ssh-keygen 生成公钥/私钥 rsa 密钥对。 输入要保存密钥的文件(/root/.ssh/id_rsa): 输入密码(留空表示无密码): 再次输入相同的密码: 您的身份已保存到 /root/.ssh/id_rsa。 您的公钥已保存到 /root/.ssh/id_rsa.pub。 密钥指纹是:ca:1f:c3:ce:8d:7e:27:54:71:3b:d7:31:32:14:ba:68 root@bm0014.the.re 密钥的随机艺术图像是:+--[ RSA 2048]----+ | .o. | | oo.o | | . oo.+| | . o o o| | SE o o | | . o. . | | o +. | | + =o . | | .*..o | +-----------------+

for i in 12 14 15

do ssh bm00$i.the.re cat >> .ssh/authorized_keys < .ssh/id_rsa.pub done

每个主机都安装了 Ubuntu raring,并且有一个备用的、未使用的磁盘位于 /dev/sdb。 使用以下命令安装 ceph 包:

ceph-deploy install bm0012.the.re bm0014.the.re bm0015.the.re

将每个 FQDN 的简短版本添加到每个主机的 /etc/hosts 中,因为 ceph-deploy 会假定它存在:

for host in bm0012.the.re bm0014.the.re bm0015.the.re do getent hosts bm0012.the.re bm0014.the.re bm0015.the.re | sed -e 's/.the.re//' | ssh $host cat >> /etc/hosts done

使用以下命令创建 ceph 集群配置:

# ceph-deploy new bm0012.the.re bm0014.the.re bm0015.the.re

并使用以下命令部署相应的 mon:

ceph-deploy mon create bm0012.the.re bm0014.the.re bm0015.the.re

即使在命令返回后,密钥在每个主机上生成还需要几秒钟:ceph-mon 进程显示何时完成。 在创建 osd 之前,可以使用以下命令从 mon 获取密钥:

ceph-deploy gatherkeys bm0012.the.re

然后使用以下命令创建 osd:

ceph-deploy osd create bm0012.the.re:/dev/sdb bm0014.the.re:/dev/sdb bm0015.the.re:/dev/sdb

几秒钟后,集群稳定下来,如以下所示:

# ceph -s health HEALTH_OK monmap e1: 3 mons at {bm0012=188.165:6789/0,bm0014=188.165:6789/0,bm0015=188.165:6789/0}, election epoch 24, quorum 0,1,2 bm0012,bm0014,bm0015 osdmap e14: 3 osds: 3 up, 3 in pgmap v106: 192 pgs: 192 active+clean; 0 bytes data, 118 MB used, 5583 GB / 5583 GB avail mdsmap e1: 0/0/1 up

创建一个 10GB RBD,挂载并销毁它:

# rbd create --size 10240 test1

rbd map test1 --pool rbd

mkfs.ext4 /dev/rbd/rbd/test1

mount /dev/rbd/rbd/test1 /mnt

df -h /mnt

Filesystem Size Used Avail Use% Mounted on /dev/rbd1 9.8G 23M 9.2G 1% /mnt

umount /mnt

rbd unmap /dev/rbd/rbd/test1

rbd rm test1

正在删除镜像:完成 100%...完成。

Ubuntu raring 包

一系列 补丁 修复了 ceph-deploy 包的次要构建和部署问题

  • debian 包需要 python-setuptools 作为构建依赖项
  • 将 python-pushy 添加到在 debian 上安装 ceph-deploy 时所需的软件包列表中
  • ceph-deploy 添加的路径列表无法涵盖所有部署场景。 特别是,如果从软件包安装,它将最终位于 /usr/lib/python2.7/dist-packages/ceph_deploy。 删除了错误消息:如果找不到模块,则 from 将失败。
  • 将缺少的 python-setuptools 运行时依赖项添加到 debian/control

重置安装

要从头开始重新启动(即丢弃所有数据和所有安装参数),请使用以下命令卸载软件:

ceph-deploy uninstall bm0012.the.re bm0014.the.re bm0015.the.re

并清除所有残留内容:

for host in bm0012.the.re bm0014.the.re bm0015.the.re do ssh $host apt-get remove --purge ceph ceph-common ceph-mds done

删除配置文件和数据文件:

for host in bm0012.the.re bm0014.the.re bm0015.the.re do ssh $host rm -fr /etc/ceph /var/lib/ceph done

重置磁盘:

for host in bm0012.the.re bm0014.the.re bm0015.the.re do ssh $host <<EOF umount /dev/sdb1 dd if=/dev/zero of=/dev/sdb bs=1024k count=100 sgdisk -g --clear /dev/sdb EOF done

[转载自]: Loic Dachary

如您所见,ceph-deploy 是一种简单轻便的部署 Ceph 集群的方式。 但是,值得注意的是,它无法对安全设置、分区或目录位置进行精细控制。 因此,如果您真的想在这些方面自定义 Ceph 集群,那么使用 Chef 、Puppet 或 Juju 等完整的编排和部署框架可能更适合您。

我们很乐意发布类似的内容,因此如果您有自己的 Ceph 相关操作指南或演练教程,我们很乐意了解。 欢迎随时将链接或转录发送到我们的 社区团队,我们将确保通过社交媒体或作为此处的嘉宾博客与整个社区分享它们。 谢谢!

scuttlemonkey 结束