日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

面對時刻增長的數據,企業需要找到一種經濟、可靠、高效、可擴容的存儲數據的方式。ceph 無疑是個好選擇。本文是 “Ceph 分布式存儲最佳實踐” 的第一篇文章,主要包括以下主題:

 

  • Ceph 介紹
  • 部署環境介紹
  • 部署 Ceph 集群
  • 總結
1.1 Ceph 介紹

 

Ceph 是一個開源的、分布式的、可擴展的、軟件定義的存儲系統,可以提供塊、對象和文件存儲。

傳統的存儲系統通過一張表集中記錄元數據。客戶端每次發出讀寫請求,存儲系統首先從這個表中查找元數據,得到結果后,才能執行客戶端的操作請求。如果存儲集群很大,這種方式可能引發性能瓶頸,也限制了存儲系統的可擴展性。

Ceph 通過 CRUSH (Controlled Replication Under Scalable Hashing) 算法,在后臺動態計算數據讀取或寫入位置,客戶端直接連接 OSD,提高了數據的讀寫性能。通過動態計算元數據,Ceph 避免了元數據表的限制,提高了可擴展性。

Ceph 中包含了很多概念,比如 Monitor、Manager、OSD、PG、MDS 等。系列文章以部署一個高可用的 Ceph 集群作為開端,理論與實踐結合,逐步討論 Ceph 的概念及使用。因此搭建一套高可用的 Ceph 集群,是學習 “Ceph 分布式存儲最佳實踐” 的基礎。

1.2 部署環境介紹

完成本教程需要七個節點:一個節點作為 Ansible 控制節點,六個節點部署 Ceph 集群,它們的詳細角色如下。

1.2.1 節點信息

七個節點分別為 2 核 CPU、2 GB 內存的虛擬機,安裝了 Rocky linux release 9.1 操作系統。

Ansible Inventory hosts:

[ceph] ceph1.server.aiops.red ceph2.server.aiops.red ceph3.server.aiops.red ceph4.server.aiops.red ceph5.server.aiops.red ceph6.server.aiops.red

Ceph 集群主機角色如下:

主機名:ceph1.server.aiops.red, IP:10.211.55.44, 角色:cephadm、mon、mgr 主機名:ceph2.server.aiops.red, IP:10.211.55.45, 角色:mon、mgr 主機名:ceph3.server.aiops.red, IP:10.211.55.46, 角色:mon、mgr 主機名:ceph4.server.aiops.red, IP:10.211.55.48, 角色:osd, 額外磁盤:/dev/sdb、/dev/sdc、/dev/sdd 主機名:ceph5.server.aiops.red, IP:10.211.55.49, 角色:osd, 額外磁盤:/dev/sdb、/dev/sdc、/dev/sdd 主機名:ceph6.server.aiops.red, IP:10.211.55.50, 角色:osd, 額外磁盤:/dev/sdb、/dev/sdc、/dev/sdd 1.2.2 節點要求

為使安裝順利進行,節點應滿足以下要求。

1.2.2.1 時鐘同步

Ceph 集群各節點時鐘應保持一致,這也是分布式系統的基本要求。要自動化實現時鐘同步,可以參考 “Linux 9 自動化部署 NTP 服務”。

1.2.2.2 主機名解析

Ansible 控制節點、Ceph 各節點間應能通過主機名訪問。要實現主機名稱解析,可以在主機的 /etc/hosts 文件中指定節點的 IP、主機名條目,或者參考 “Linux 9 自動化部署 DNS 服務” 一文配置 DNS 服務。

1.2.2.3 賬號權限

Ansible 控制節點能夠免密登錄 Ceph 節點,并能免密執行 sudo。可以參考 “Linux 9 自動化部署 NTP 服務” 中的 “部署環境要求” 一節實現。在滿足了以上要求后,開始部署 Ceph 高可用集群。

1.3 使用 Cephadm 部署 Ceph 集群

在安裝 Ceph 集群自身時,使用 cephadm 工具;在對主機進行操作時,可以使用 Ansible 自動化工具。

1.3.1 更新軟件包

Ceph 節點是新裝的操作系統,最好統一執行軟件包的更新操作。可以通過 Ansible 完成,以下是自動更新軟件包、并在更新完成后重啟操作系統的 Ansible Playbook:

upgrade_packages.yaml:

#!/usr/bin/env ansible-Playbook --- - name: upgrade packages play hosts: ceph gather_facts: false become: true tasks: - name: upgrade packages task ansible.builtin.dnf: update_cache: true name: "*" state: latest register: upgradeResult - name: reboot system task reboot: when: upgradeResult.changed ...

執行此 Playbook,完成軟件包更新:

$ ansible-playbook upgrade_packages.yaml

此操作在 Ansible 節點上執行。

1.3.2 安裝依賴包

cephadm 部署 Ceph 集群時,依賴 Python/ target=_blank class=infotextkey>Python3、Systemd、Podman、LVM2,這些工具 Rocky Linux 9 默認已經安裝了。也可以通過以下 Playbook,執行安裝:

ceph-dependent.yaml:

--- - name: install cephadm dependent packages hosts: ceph become: true gather_facts: false tasks: - name: install packages dnf: name: - Python3 - lvm2 - podman state: present ...

在 Ansible 控制節點上執行:

[aiops@automate-host ceph]$ ansible-playbook ceph-dependent.yaml 1.3.3 安裝 Cephadm

登錄 ceph1.server.aiops.red 主機,執行以下操作。

安裝 ceph repo:

[root@ceph1 ~]# dnf search release-ceph Last metadata expiration check: 0:00:45 ago on Sun 05 Feb 2023 11:53:21 AM CST. =========== Name Matched: release-ceph =========== centos-release-ceph-pacific.noarch : Ceph Pacific packages from the CentOS Storage SIG repository centos-release-ceph-quincy.noarch : Ceph Quincy packages from the CentOS Storage SIG repository [root@ceph1 ~]# dnf install -y centos-release-ceph-quincy

安裝 cephadm

[root@ceph1 ~]# dnf install -y cephadm

cephadm 通過容器部署 Ceph 集群,因此用到了幾個鏡像。可以通過編輯該文件查看:

[root@ceph1 ~]# vim $(which cephadm) # 在打開的編輯器中搜索 images 關鍵字

安裝 ceph 客戶端:

[root@ceph1 ~]# cephadm install ceph-common 1.3.4 安裝 Ceph 集群

在 Ceph 集群的第一臺主機上,執行 cephadm bootstrap 命令創建 Ceph 集群,該命令會創建第一個 Monitor 守護進程,Monitor 守護進程需要監聽在一個地址上,因此需要為該命令提供一個 IP 地址:

root@ceph1 ~]# cephadm bootstrap --mon-ip 10.211.55.44 --allow-fqdn-hostname

安裝過程將持續一段時間,因為需要下載運行服務所需的容器鏡像。安裝完成后,注意類似以下的輸出內容:

Ceph Dashboard is now available at: URL: https://ceph1.server.aiops.red:8443/ User: admin Password: cpjxlxldcz

通過此信息,可以在瀏覽器中登錄 Ceph 集群的 Dashboard。第一次登錄,需要修改密碼。


 

圖 1-1, Ceph cluster Dashboard

集群處于非健康狀態。可以通過 ceph -s 命令查看詳細信息:

[root@ceph1 ~]# ceph -s cluster: id: 53522672-a50a-11ed-93ad-001c42a83cc8 health: HEALTH_WARN OSD count 0 < osd_pool_default_size 3 services: mon: 1 daemons, quorum ceph1.server.aiops.red (age 18m) mgr: ceph1.server.aiops.red.obitbj(active, since 16m) osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:

提示 OSD 的數量小于三。

1.3.5 添加主機到集群

將主機添加到集群,需要執行以下步驟:

首先,將部署集群時生成的公鑰 /etc/ceph/ceph.pub 添加到新主機的 root 用戶,該步驟可以通過 Ansible Playbook 完成。將 /etc/ceph/ceph.pub 文件從 ceph1.server.aiops.red 主機拷貝到 Ansible 主機,在 Ansible 主機上編輯 Playbook 文件。

copy_pub.yaml:

--- - name: initialization SSH key play hosts: ceph gather_facts: false become: true tasks: - name: initialization ssh key task ansible.builtin.authorized_key: comment: aiops user public key user: root key: "{{ lookup('file', '/home/aiops/playbooks/test/ceph/ceph.pub') }}" ...

在 Ansible 節點上執行 copy_pub.yaml Playbook 文件,完成 SSH 公鑰的添加:

[aiops@automate-host ceph]$ ansible-playbook copy_pub.yaml

然后,為 Ceph 集群添加節點,此步驟在 cephadm (ceph1.server.aiops.erd) 節點上完成:

[root@ceph1 ~]# ceph orch host add ceph2.server.aiops.red Added host 'ceph2.server.aiops.red' with addr '10.211.55.45' [root@ceph1 ~]# ceph orch host add ceph3.server.aiops.red Added host 'ceph3.server.aiops.red' with addr '10.211.55.46' ...

將所有節點加入 Ceph 集群。

查看集群中的節點:

[root@ceph1 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph1.server.aiops.red 10.211.55.44 _admin ceph2.server.aiops.red 10.211.55.45 ceph3.server.aiops.red 10.211.55.46 ceph4.server.aiops.red 10.211.55.48 ceph5.server.aiops.red 10.211.55.49 ceph6.server.aiops.red 10.211.55.50 6 hosts in cluster

因為缺少 OSD,集群狀態處于非健康狀態,接下來將 OSD 部署到集群。

1.3.6 部署 OSD

OSD (Object Storage Daemon) 用來存儲數據,處理數據的復制、恢復以及再平衡,并通過檢查其他 OSD 的心跳,為 Monitor、Manager 提供一些監控信息。通常,需要至少三個 OSD 來實現冗余和高可用性。

查看集群中可用設備:

ceph orch device ls


 

圖 1-2 列出 Ceph 集群中可用的設備

將集群中任何可用的設備作為 OSD:

[root@ceph1 ~]# ceph orch Apply osd --all-available-devices Scheduled osd.all-available-devices update...

再次檢查集群狀態:

ceph -s


 

圖 1-3, 集群狀態變為健康

集群健康狀態變為 OK。

查看 OSD:

ceph osd tree


 

圖 1-4, 查看 OSD 信息

1.3.7 部署 Monitor

Ceph Monitor (ceph-mon) 維護集群狀態的 maps,包括 monitor map、manager map、OSD map、MDS map 以及 CURSH map。這些 maps 是重要的集群狀態,需要 Ceph 守護進程互相協調。Monitors 也負責管理守護進程和客戶端之間的認證。通常需要至少三個 monitors 實現冗余和高可用性。

通過 ceph -s 或 Dashboard 頁面的 Cluster-Hosts 可以看到,默認啟動了 5 個 mon。一個或多個 mon 實例形成一個 Paxos 集群,提供可靠性。可以使用 --placement 選項將 mon 部署在指定的節點上:

ceph orch apply mon --placement="ceph1.server.aiops.red,ceph2.server.aiops.red,ceph3.server.aiops.red"


 

圖 1-5, 部署 mon

1.3.8 部署 Manager

Ceph Manager daemon (ceph-mgr) 負責跟蹤運行時指標和 Ceph 集群的當前狀態,包括存儲利用率、當前性能指標和系統負載。Ceph Manager 守護進程還托管 Python 模塊來管理和暴露 Ceph 集群的信息,包括基于 Web 的 Ceph Dashboard 和 REST API。通常需要至少兩個 Managers 來實現高可用性。

通常與監控守護程序一起運行,以提供額外的監控和接口給外部監控和管理系統:

ceph orch apply mgr --placement="ceph1.server.aiops.red,ceph2.server.aiops.red,ceph3.server.aiops.red"


 

圖 1-6, 部署 mgr

1.3.9 為節點設置標簽

Orchestrator 支持為主機分配標簽。每個主機可以有多個標簽:

ceph orch host label add ceph4.server.aiops.red osd-node


 

圖 1-7, 為主機設置標簽

1.4 總結

本章是 “Ceph 分布式存儲最佳實踐” 的開篇,主要介紹了 Ceph 集群的部署,以及一些基本概念。通過對本章的學習,你將能夠在基于 RPM 的 Linux 系統上部署 Ceph 分布式集群,并對集群做一些基本操作,如部署 OSD、Monitor、Manager,設置標簽等。

 

來源:魏文弟

分享到:
標簽:Linux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定