Linux中國

在樹莓派集群中部署 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](/data/attachment/album/202101/16/135551r85dz81iuhx85n9h.png "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](/data/attachment/album/202101/16/135551sr7xjrjj7n5xyik7.png "Ceph deployment")

下面的步驟

之前,我在另一個樹莓派集群中手動部署了一個 OpenStack 集群。我希望能將其與這個集群整合在一起。我也在研究用 TripleO 部署。

樹莓派、Ansible 和 OpenStack 的可能性是無窮的。開始做你自己的實驗,並在評論中告訴我結果如何。

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

作者:AJ Canlas 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國