在树莓派集群中部署 Ceph
创始人
2024-03-02 06:20:19
0

使用 ceph-ansible 安装 Ceph 存储,并将其部署在树莓派集群中。

Ceph 是一个开源软件存储平台,它在统一的存储集群中提供对象、块和文件系统存储。我第一次使用 Ceph 是在 OpenStack 中集成它的时候。一开始,我很困惑,既然存储设备广泛存在,为什么要使用 Ceph。但在使用了三年多之后,这个平台的稳定性和完整性一再证明了它的价值。

本文将告诉你如何使用 ceph-ansible(Ceph 官方支持的 Ansible playbook)安装 Ceph,并将其部署在树莓派集群中。

材料:

  1. 树莓派 4B 4GB 型号四台。
  2. 四张 32GB 的 microSD 卡(用于启动操作系统)
  3. 四个树莓派外壳,带风扇和散热片(非常重要)
  4. 四个树莓派充电器
  5. 6 个 32GB U 盘(用于 Ceph OSD 节点)

架构:

Project architecture

关于配置:

  • 前端和后端网络都在同一个子网中
  • Ceph Monitor 软件使用 4GB 内存的树莓派 4B。
  • Ceph OSD 节点使用相同的树莓派型号,但有两个 U 盘用于 OSD 磁盘

使用 ceph-ansible 部署 Ceph

使用 Ceph 的 Ansible 仓库可以让部署变得顺畅简单

1、复制 ssh 密钥到所有服务器

我在所有的服务器上都有一个名为 cephadmin 的共同用户(在此背景下,每个树莓派都是一台服务器)。cephadmin 用户配置了无密码的 sudo,以方便工作。

使用 ssh-keygen 生成密钥后,使用 ssh-copy-id 部署所有密钥。

我使用了一个 Bash for 循环,因为我使用的是一致并递增的主机名:

$ for i in {0..3}; \
  do ssh-copy-id cephadmin@rpi4b4-$i; \
done

你需要每个接受并输入密码,但你可以用 expect 来自动完成。

2、克隆 ceph-ansible 并安装依赖

安装 Git 来克隆仓库:

$ sudo yum install git -y

克隆 ceph-ansible 仓库:

$ git clone https://github.com/ceph/ceph-ansible.git
$ cd ceph-ansible/

我使用的是 CentOS 7 的 AArch64 构建,所以在继续之前,我必须安装一些所需的包。

首先安装 Python pip

$ sudo yum install python3-pip -y

接着是 ceph-ansible 需要的包:

$ sudo yum install python3-devel libffi-devel openssl-devel -y

最后,ceph-ansible 需要的依赖:

$ pip3 install -r requirements.txt --user

我收到了这个错误:

You are linking against OpenSSL 1.0.2, which is no longer supported by the OpenSSL project.
To use this version of cryptography you need to upgrade to a newer version of OpenSSL. For
this version only you can also set the environment variable
CRYPTOGRAPHY_ALLOW_OPENSSL_102 to allow OpenSSL 1.0.2.

这可能与架构有关,因为我无法在 CentOS 7 虚拟机中复现该错误。

部署时,将 CRYPTOGRAPHY_ALLOW_OPENSSL_102 导出为 True,这样 Ansible 就可以运行了。

$ export CRYPTOGRAPHY_ALLOW_OPENSSL_102=True

3、配置 ceph-ansible 进行部署

现在你可以使用 ceph-ansible 部署 Ceph 了。

复制 site.yml.samplesite.yml

$ mv site.yml.sample site.yml

group_vars 目录下创建 all.yml

$ cat << EOF >> group_vars/all.yml
ceph_origin: repository
ceph_repository: community
ceph_repository_type: cdn
ceph_stable_release: nautilus
monitor_interface: wlan0
public_network: "192.168.100.0/24"
cluster_network: "192.168.100.0/24"
dashboard_enabled: false
configure_firewall: false
EOF

group_vars 目录下创建 osds.yml

$ cat << EOF >> group_vars/all.yml
osd_scenario: collocated
devices:
 - /dev/sda
 - /dev/sdb
EOF

创建一个 inventory 文件:

$ cat << EOF >> inventory
[mons]
rpi4b4-0

[osds]
rpi4b4-1
rpi4b4-2
rpi4b4-3
EOF

在写这篇文章的时候,ceph-ansible 仓库里有一个 bug(根据这个 bug 工单)。你可以通过编辑角色的第 85 行和第 86 行来减轻这个 bug。

    - (wait_for_all_osds_up.stdout | from_json)["osdmap"]["num_osds"] | int > 0
    - (wait_for_all_osds_up.stdout | from_json)["osdmap"]["num_osds"] == (wait_for_all_osds_up.stdout | from_json)["osdmap"]["num_up_osds"]

4、部署 Ceph

用你的 inventory 文件运行 Ansible 剧本:

$ ansible-playbook -i inventory site.yml

15-20 分钟后,你应该看到这个结果:

Ceph deployment

下面的步骤

之前,我在另一个树莓派集群中手动部署了一个 OpenStack 集群。我希望能将其与这个集群整合在一起。我也在研究用 TripleO 部署。

树莓派、Ansible 和 OpenStack 的可能性是无穷的。开始做你自己的实验,并在评论中告诉我结果如何。


via: https://opensource.com/article/21/1/ceph-raspberry-pi

作者:AJ Canlas 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

Proxmox VE 9....
IT之家 8 月 5 日消息,正值 Proxmox 开发商创立 2...
2025-08-06 06:43:13
通过Linux串口实现树莓...
目录 一  串口说明 二  USB—TTL模块 ● usb-ttl...
2025-06-01 20:44:00
嵌入式Linux入门必看!...
最近总有人问我:想学嵌入式Linux,到底该买哪块开发板?这问题就...
2025-05-10 12:17:26
不明白为什么在树莓派上使用...
在树莓派上使用join()函数会导致TypeError错误的原因是...
2024-12-26 22:02:04
不明白为什么我的树莓派3没...
要解决树莓派3没有向服务器发送RSSI数据的问题,以下是一些可能的...
2024-12-26 21:30:46
步进电机在工作一段时间后停...
步进电机在工作一段时间后停止工作,尽管代码仍然正常,可能有以下几个...
2024-12-25 21:02:03

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...