Ubuntu 20.04 LTS 使用 cephadm 部署 ceph octopus 實驗記錄


參考:https://docs.ceph.com/en/octopus/install/

1. 安裝 CEPH 方法介紹

推薦方法

Cephadm使用容器和 systemd 安裝和管理 Ceph 集群,並與 CLI 和儀表板 GUI 緊密集成。

  • cephadm 僅支持 Octopus 和更新版本。
  • cephadm 與新的編排 API 完全集成,並完全支持新的 CLI 和儀表板功能來管理集群部署。
  • cephadm 需要容器支持(podman 或 docker)和 Python 3。

Rook部署和管理在 Kubernetes 中運行的 Ceph 集群,同時還支持通過 Kubernetes API 管理存儲資源和配置。我們推薦 Rook 作為在 Kubernetes 中運行 Ceph 或將現有 Ceph 存儲集群連接到 Kubernetes 的方式。

  • Rook 僅支持 Nautilus 和更新版本的 Ceph。
  • Rook 是在 Kubernetes 上運行 Ceph 或將 Kubernetes 集群連接到現有(外部)Ceph 集群的首選方法。
  • Rook 支持新的 Orchestrator API。完全支持 CLI 和儀表板中的新管理功能。

其他方法

ceph-ansible 使用 Ansible 部署和管理 Ceph 集群。

  • ceph-ansible 被廣泛部署。
  • ceph-ansible 未與 Nautlius 和 Octopus 中引入的新編排器 API 集成,這意味着較新的管理功能和儀表板集成不可用。

ceph-deploy是一個快速部署集群的工具。

重要的 ceph-deploy 不再積極維護。它沒有在比 Nautilus 更新的 Ceph 版本上進行測試。它不支持 RHEL8、CentOS 8 或更新的操作系統。

2. Cephadm 介紹

Cephadm 通過從管理器守護進程通過 SSH 連接到主機來部署和管理 Ceph 集群,以添加、刪除或更新 Ceph 守護進程容器。它不依賴於 Ansible、Rook 或 Salt 等外部配置或編排工具。

Cephadm 管理 Ceph 集群的整個生命周期。它首先在單個節點(一個監視器和一個管理器)上引導一個小型 Ceph 集群,然后使用編排接口(“day 2”命令)擴展集群以包含所有主機並提供​​所有 Ceph 守護進程和服務。這可以通過 Ceph 命令行界面 (CLI) 或儀表板 (GUI) 執行。

Cephadm 是 Octopus v15.2.0 版本中的新功能,不支持舊版本的 Ceph。

Cephadm 是新的。在使用 cephadm 部署生產系統之前,請閱讀穩定性。

穩定性

Cephadm 是 Octopus 版本中的一項新功能,在生產和規模上的使用有限。我們希望用戶嘗試使用 cephadm,尤其是對於新集群,但請注意,某些功能仍然很粗糙。我們期望在 Octopus 的前幾個錯誤修復版本中進行相當頻繁的更新和改進。

目前支持以下組件的 Cephadm 管理:

  • Monitors
  • Managers
  • OSDs
  • CephFS file systems
  • rbd-mirror

以下組件正在使用cephadm,但文檔沒有我們想要的那么完整,並且在不久的將來可能會有一些變化:

  • RGW
  • dmcrypt OSD

Cephadm 對以下功能的支持仍在開發中:

  • NFS
  • iSCSI

如果遇到問題,您可以隨時使用以下命令暫停 cephadm:

ceph orch pause

或者使用以下命令完全關閉 cephadm:

ceph orch set backend ''
ceph mgr module disable cephadm

3. 部署一個新的 CEPH 集群

Cephadm 通過在單個主機上“引導”創建一個新的 Ceph 集群,擴展集群以包含任何額外的主機,然后部署所需的服務。

要求

  • Systemd
  • 用於運行容器的 Podman 或 Docker
  • 時間同步(如chrony或NTP)
  • LVM2 用於配置存儲設備

任何現代 Linux 發行版都應該足夠了。依賴項由下面的引導程序自動安裝。

當前建議使用 Ubuntu 20.04 LTS 發行版,因其自帶 octopus 的安裝包。

引導一個新集群

您需要知道集群的第一個監視器守護程序使用哪個IP 地址。這通常只是第一台主機的 IP。如果有多個網絡和接口,請確保選擇一個可供訪問 Ceph 集群的任何主機訪問的網絡和接口。

要引導集群:

# mkdir -p /etc/ceph
# cephadm bootstrap --mon-ip *<mon-ip>*

此命令將:

  • 在本地主機上為新集群創建一個 monitor 和 manager 守護進程。
  • 為 Ceph 集群生成一個新的 SSH 密鑰並將其添加到 root 用戶的/root/.ssh/authorized_keys文件中。
  • 將與新集群通信所需的最小配置文件寫入/etc/ceph/ceph.conf.
  • 將client.admin管理(特權!)密鑰的副本寫入/etc/ceph/ceph.client.admin.keyring.
  • 將公鑰的副本寫入 /etc/ceph/ceph.pub.

默認引導行為適用於絕大多數用戶。請參閱下面的一些可能對某些用戶有用的選項,或運行以查看所有可用選項:cephadm bootstrap -h

  • 為了方便起見,Bootstrap 將訪問新集群所需的文件寫入/etc/ceph中 ,以便安裝在主機本身上的任何 Ceph 包(例如,訪問命令行界面)可以輕松找到它們。

但是,使用 cephadm 部署的守護進程容器根本不需要 /etc/ceph。使用 --output-dir 選項將它們放在不同的目錄中,避免與同一主機上的現有 Ceph 配置(cephadm 或其他)發生任何潛在沖突。

  • 您可以通過將任何初始 Ceph 配置選項放入標准 ini 樣式配置文件並使用 --config 選項,將它們傳遞給新集群。例如:
# cat <<EOF > initial-ceph.conf
[global]
osd crush chooseleaf type = 0
EOF

# cephadm bootstrap --config initial-ceph.conf ...
  • 您可以使用 --ssh-user 選項選擇 cephadm 將用於連接到主機的 ssh 用戶。ssh 密鑰將被添加到 /home/ /.ssh/authorized_keys. 此用戶將需要無密碼的 sudo 訪問權限。

  • 如果您在需要登錄的經過身份驗證的注冊表上使用容器,您可以添加三個參數 --registry-url ,--registry-username ,--registry-password 或者 --registry-json 。Cephadm 將嘗試登錄此注冊表,以便它可以拉取您的容器,然后將登錄信息存儲在其配置數據庫中,以便添加到集群的其他主機也可以使用經過身份驗證的注冊表。

啟用 CEPH CLI

Cephadm 不需要在主機上安裝任何 Ceph 包。但是,我們建議啟用對ceph 命令的輕松訪問。做這件事有很多種方法:

  • 該命令會在安裝了所有 Ceph 包的容器中啟動一個 bash shell。
# cephadm shell
  • 要執行ceph命令,您還可以像這樣運行命令:
# cephadm shell -- ceph -s
  • 您可以安裝該ceph-common軟件包,其中包含所有ceph命令,包括ceph、rbd、mount.ceph(用於掛載 CephFS 文件系統)等:
# cephadm add-repo --release octopus
# cephadm install ceph-common

或者,本實驗使用APT直接安裝軟件包:apt install ceph-common ceph-base

確認該ceph命令可訪問:

# ceph -v

使用以下ceph命令確認該命令可以連接到集群及其狀態:

# ceph status

將主機添加到集群

要將每個新主機添加到集群,請執行兩個步驟:

  • 在新主機的 root 用戶authorized_keys文件中安裝集群的公共 SSH 密鑰 :
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*

例如:

# ssh-copy-id -f -i /etc/ceph/ceph.pub root@host2
# ssh-copy-id -f -i /etc/ceph/ceph.pub root@host3
  • 告訴 Ceph 新節點是集群的一部分:
# ceph orch host add *newhost*

例如:

# ceph orch host add host2
# ceph orch host add host3

部署額外的監視器(可選)

一個典型的 Ceph 集群有三個或五個分布在不同主機上的監視器守護進程。如果集群中有五個或更多節點,我們建議部署五個監視器。

當 Ceph 知道監視器應該使用哪個 IP 子網時,它可以隨着集群的增長(或收縮)自動部署和擴展監視器。默認情況下,Ceph 假定其他監視器應該使用與第一個監視器的 IP 相同的子網。

如果您的 Ceph 監視器(或整個集群)位於單個子網上,那么默認情況下,cephadm 會在您向集群添加新主機時自動添加最多 5 個監視器。不需要進一步的步驟。

  • 如果監視器應該使用特定的 IP 子網,您可以使用CIDR格式(例如,10.1.2.0/24)配置它:
# ceph config set mon public_network *<mon-cidr-network>*

例如:

# ceph config set mon public_network 10.1.2.0/24

Cephadm 僅在已配置子網中配置了 IP 的主機上部署新的監視器守護進程。

  • 如果要調整 5 台監視器的默認值:
# ceph orch apply mon *<number-of-monitors>*
  • 在一組特定的主機上部署監視器:
# ceph orch apply mon *<host1,host2,host3,...>*

確保在此列表中包含第一個(引導)主機。

  • 您可以通過使用主機標簽來控制監視器在哪些主機上運行。將mon標簽設置為適當的主機:
# ceph orch host label add *<hostname>* mon

查看當前主機和標簽:

# ceph orch host ls

例如:

# ceph orch host label add host1 mon
# ceph orch host label add host2 mon
# ceph orch host label add host3 mon
# ceph orch host ls
HOST   ADDR   LABELS  STATUS
host1         mon
host2         mon
host3         mon
host4
host5

告訴 cephadm 根據標簽部署監視器:

# ceph orch apply mon label:mon
  • 您可以為每個監視器和控件的放置位置明確指定 IP 地址或 CIDR 網絡。要禁用自動監視器部署:
# ceph orch apply mon --unmanaged

要部署每個額外的監視器:

# ceph orch daemon add mon *<host1:ip-or-network1> [<host1:ip-or-network-2>...]*

例如,要在網絡中使用 IP 地址 10.1.2.123 和 10.1.2.0/24 部署第二個監視器 newhost1 和第三個監視器 newhost2

# ceph orch apply mon --unmanaged
# ceph orch daemon add mon newhost1:10.1.2.123
# ceph orch daemon add mon newhost2:10.1.2.0/24

ceph orch apply mon 命令可能會造成混淆。因此,我們建議使用 YAML 規范。

每個“ceph orch apply mon”命令都會取代之前的命令。這意味着當您想要將監視器應用於多個主機時,您必須使用正確的基於逗號分隔的列表語法。如果您不使用正確的語法,您將在進行中破壞您的操作。

例如:

# ceph orch apply mon host1
# ceph orch apply mon host2
# ceph orch apply mon host3

這導致只有一台主機應用了監視器:host3。

(第一個命令在 host1 上創建一個監視器。然后第二個命令破壞了 host1 上的監視器並在 host2 上創建了一個監視器。然后第三個命令破壞了 host2 上的監視器並在 host3 上創建了一個監視器。在這個場景中,此時,僅在 host3 上有一個監視器。)

要確保將監視器應用於這三個主機中的每一個,請運行如下命令:

# ceph orch apply mon "host1,host2,host3"

或者不要使用“ceph orch apply mon”命令,運行如下命令:

# ceph orch apply -i file.yaml

這是一個示例file.yaml文件:

service_type: mon
placement:
  hosts:
   - host1
   - host2
   - host3

部署 OSD

可以通過以下方式顯示所有群集主機上的存儲設備清單:

# ceph orch device ls

如果滿足以下所有條件,則認為存儲設備可用:

  • 設備必須沒有分區。

  • 設備不得具有任何 LVM 狀態。

  • 不得安裝設備。

  • 設備不得包含文件系統。

  • 設備不得包含 Ceph BlueStore OSD。

  • 設備必須大於 5 GB。

Ceph 拒絕在不可用的設備上配置 OSD。

有幾種方法可以創建新的 OSD:

  • 告訴 Ceph 消耗任何可用和未使用的存儲設備:
# ceph orch apply osd --all-available-devices
  • 從特定主機上的特定設備創建 OSD:
# ceph orch daemon add osd *<host>*:*<device-path>*

例如:

# ceph orch daemon add osd host1:/dev/sdb
# ceph orch apply osd -i spec.yml

例如:

service_type: osd
service_id: default_drive_group  <- name of the drive_group (name can be custom)
placement:
  host_pattern: '*'              <- which hosts to target, currently only supports globs
data_devices:                    <- the type of devices you are applying specs to
  all: true                      <- a filter, check below for a full list

在所有匹配全局模式“*”的主機上,將任何可用設備(ceph-volume 決定什么是“可用”)轉換為 OSD。(glob 模式與來自 host ls 的注冊主機匹配)

部署 MDS

使用 CephFS 文件系統需要一個或多個 MDS 守護進程。如果使用較新的 ceph fs volume 接口來創建新的文件系統,則會自動創建這些文件。有關更多信息,請參閱FS 卷和子卷。
https://docs.ceph.com/en/octopus/cephfs/fs-volumes/#fs-volumes-and-subvolumes

部署元數據服務器:

# ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"

有關放置規范的詳細信息,請參閱:https://docs.ceph.com/en/octopus/mgr/orchestrator/#orchestrator-cli-placement-spec


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM