在树莓派集群中部署Ceph

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

[[376596]]

 使用 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 循环,因为我使用的是一致并递增的主机名:

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

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

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

安装 Git 来克隆仓库:

  1. $ sudo yum install git -y

克隆 ceph-ansible 仓库:

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

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

首先安装 Python pip

  1. $ sudo yum install python3-pip -y

接着是 ceph-ansible 需要的包:

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

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

  1. $ pip3 install -r requirements.txt --user

我收到了这个错误:

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

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

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

  1. $ export CRYPTOGRAPHY_ALLOW_OPENSSL_102=True

3、配置 ceph-ansible 进行部署

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

复制 site.yml.sample 到 site.yml

  1. $ mv site.yml.sample site.yml

在 group_vars 目录下创建 all.yml

  1. $ cat << EOF >> group_vars/all.yml
  2. ceph_origin: repository
  3. ceph_repository: community
  4. ceph_repository_type: cdn
  5. ceph_stable_release: nautilus
  6. monitor_interface: wlan0
  7. public_network: "192.168.100.0/24"
  8. cluster_network: "192.168.100.0/24"
  9. dashboard_enabled: false
  10. configure_firewall: false
  11. EOF

在 group_vars 目录下创建 osds.yml

  1. $ cat << EOF >> group_vars/all.yml
  2. osd_scenario: collocated
  3. devices:
  4.  - /dev/sda
  5. - /dev/sdb
  6. EOF

创建一个 inventory 文件:

  1. $ cat << EOF >> inventory
  2. [mons]
  3. rpi4b4-0
  4.  
  5. [osds]
  6. rpi4b4-1
  7. rpi4b4-2
  8. rpi4b4-3
  9. EOF

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

  1.     - (wait_for_all_osds_up.stdout | from_json)["osdmap"]["num_osds"] | int > 0
  2.     - (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 剧本:

  1. $ ansible-playbook -i inventory site.yml

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

Ceph deployment

下面的步骤

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

树莓派、Ansible 和 OpenStack 的可能性是无穷的。

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2017-08-08 11:14:47

AzureKubernetes多容器应用程序

2020-07-16 21:00:05

树莓派Kubernetes集Linux

2022-08-31 08:30:32

kubernetesMetalLB

2021-01-15 08:07:30

Ceph octopu集群运维

2019-03-31 08:00:02

树莓派更新树莓派 Linux

2020-08-16 09:00:15

树莓派FedoraLinux

2019-03-24 20:30:18

树莓派Linux

2017-10-30 16:12:30

DockerServerless树莓派

2019-03-12 18:33:57

树莓派Linux

2017-03-22 10:06:40

ubuntuceph集群

2017-05-03 15:00:59

PC树莓派PIXEL OS

2023-03-09 11:35:40

2021-03-29 21:24:40

树莓派Linux

2022-02-11 09:24:05

树莓派OpenWrt固定IP服务

2019-03-23 19:33:14

树莓派Linux操作系统

2017-06-01 12:30:59

SQL云计算云端

2021-10-13 08:53:09

Docker Django 容器

2022-07-06 07:27:52

32Core树莓派集群

2018-10-12 11:20:20

树莓派NAS Linux

2024-03-22 15:28:36

树莓派Linux
点赞
收藏

51CTO技术栈公众号