Ubuntu20.04使用cephadm部署ceph集群

文章目錄

  • Requirements
  • 環境
  • 安裝Cephadm
  • 部署Ceph單機集群
    • 引導(bootstrap)建立新集群
  • 管理OSD
    • 列出可用的OSD設備
    • 部署OSD
    • 刪除OSD
  • 管理主機
    • 列出主機信息
    • 添加主機到集群
    • 從集群中刪除主機
  • 部署Ceph集群

Cephadm通過在單個主機上創建一個Ceph單機集群,然后向集群中添加主機以擴展集群,進而部署其他服務。

VMware安裝Ubuntu20.04并使用Xshell連接虛擬機:https://blog.csdn.net/gengduc/article/details/134889416

Requirements

  • Python3

  • Systemd

  • Podman或Docker

    apt install docker.io # 安裝docker
    systemctl status docker.service ## 查看服務運行狀態
    

    image-20231209111837217

  • 時間同步chrony或NTP

    apt install chrony
    systemctl status chronyd.service	
    

    image-20231209112049187

  • LVM2

環境

主機名hostname硬盤設備ip地址Ceph服務
node01一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd192.168.64.128mon×1、mgr×1、osd×3
node02一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd192.168.64.129mon×1、mgr×1、osd×3
node03一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd192.168.64.130mon×1、mgr×1、osd×3

image-20231209112911326

我們將通過cephadm部署Ceph集群,在node01上先部署Ceph單機集群,然后添加node02和node03主機擴展至三臺設備集群。

安裝Cephadm

【node01執行】

apt install cephadm # 安裝cephadm工具whereis cephadm # 檢查安裝情況
# 輸出如下內容
root@node01:~# whereis cephadm
cephadm: /usr/sbin/cephadm

部署Ceph單機集群

引導(bootstrap)建立新集群

Cephadm部署Ceph的方式成為==bootstrap(引導)==。創建新Ceph集群的第一步是在Ceph集群的第一臺主機上運行cephadm bootstrap命令。在Ceph集群的第一臺主機上運行cephadm bootstrap命令的行為會創建Ceph集群的第一個“監視守護進程”,并且該監視守護進程需要IP地址。您必須將Ceph集群node01的IP地址傳遞給ceph bootstrap

cephadm bootstrap --mon-ip <node01的ip地址>
# 例如
cephadm bootstrap --mon-ip 192.168.64.128
root@node01:~# cephadm bootstrap --mon-ip 192.168.64.128
Creating directory /etc/ceph for ceph.conf # 創建配置文件目錄
Verifying podman|docker is present... # docker/podman存在
Verifying lvm2 is present... # lvm2存在
Verifying time synchronization is in place... # 時間同步
Unit systemd-timesyncd.service is enabled and running # 時間同步啟用并正在運行
Repeating the final host check...
podman|docker (/usr/bin/docker) is present # docker存在
systemctl is present 
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK # 主機狀態OK
Cluster fsid: 3c6aed32-9644-11ee-b2df-17e04a57112a # 集群fsid,是集群的唯一標識
Verifying IP 192.168.64.128 port 3300 ... # 驗證主機端口
Verifying IP 192.168.64.128 port 6789 ...
Mon IP 192.168.64.128 is in CIDR network 192.168.64.0/24 # mon IP地址,及所在網段
Pulling container image quay.io/ceph/ceph:v15... # 拉去ceph鏡像
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start... # 等待mon啟動
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf... # 生成集群的最小配置
Restarting the monitor...
Setting mon public_network...
Creating mgr...
Verifying port 9283 ...
Wrote keyring to /etc/ceph/ceph.client.admin.keyring # 生成密鑰環
Wrote config to /etc/ceph/ceph.conf # 寫入配置
Waiting for mgr to start... # 等待mgr啟動
Waiting for mgr...
mgr not available, waiting (1/10)...
mgr not available, waiting (2/10)...
mgr not available, waiting (3/10)...
mgr not available, waiting (4/10)...
mgr not available, waiting (5/10)...
mgr not available, waiting (6/10)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 5...
Mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to to /etc/ceph/ceph.pub # 寫入SSH密鑰到ceph.pub
Adding key to root@localhost's authorized_keys...
Adding host node01...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Enabling mgr prometheus module...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 13...
Mgr epoch 13 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at: # Ceph Dashboard可用URL: https://node01:8443/User: adminPassword: qdnqrh6owzYou can access the Ceph CLI with:sudo /usr/sbin/cephadm shell --fsid 3c6aed32-9644-11ee-b2df-17e04a57112a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringPlease consider enabling telemetry to help improve Ceph:ceph telemetry onFor more information see:https://docs.ceph.com/docs/master/mgr/telemetry/Bootstrap complete. # 引導創建集群完成
  • 在node01上為新集群創建mon和mgr守護程序。
  • 為Ceph集群生成新的SSH密鑰,并將其添加到root用戶的/root/.ssh/authorized_keys文件中。
  • 將公鑰的副本寫入/etc/ceph/ceph.pub
  • 將最小配置文件寫入/etc/ceph/ceph.conf。與集群通信需要此文件。
  • 寫入client.admin管理(特權!)密鑰/etc/ceph/ceph.client.admin.keyring
  • _admin標簽添加到node01引導主機。默認情況下,任何帶有此標簽的主機都將(也)獲得/etc/ceph/ceph.conf/etc/ceph/ceph.client.admin.keyring的副本。

驗證:查看集群狀態

cephadm類似與進入docker容器的docker exec命令

image-20231209114758590

Ceph DashBoard訪問地址:https://192.168.64.128:8443。

沒有配置本地主機的DNS解析,不要直接使用主機名node01訪問)。

image-20231209115816841

管理OSD

列出可用的OSD設備

# 查看設備列表,顯示可用作OSD的設備
ceph orch device ls [--hostname=...] [--wide] [--refresh]

image-20231209143959076

部署OSD

# 創建新的OSD
ceph orch daemon add osd <host>:<device-path> [--verbose]
root@node01:/# ceph orch daemon add osd node01:/dev/sdb
Created osd(s) 0 on host 'node01'
root@node01:/# ceph orch daemon add osd node01:/dev/sdc
Created osd(s) 1 on host 'node01'
root@node01:/# ceph orch daemon add osd node01:/dev/sdd
Created osd(s) 2 on host 'node01'

image-20231209144550094

刪除OSD

ceph orch osd rm <osd_id(s)> [--replace] [--force] # 刪除OSD
ceph orch device zap <hostname> <path> # 擦除設備(清除設備)

image-20231209170002319

管理主機

列出主機信息

ceph orch host ls [--format yaml] [--host-pattern <name>] [--label <label>] [--host-status <status>] [--detail]

image-20231209170333041

添加主機到集群

將新主機添加到集群,兩個步驟:

  1. 在新主機的root用戶的authorized_keys文件中安裝群集的公共SSH密鑰:

    ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
    

    image-20231209170809005

  2. 告訴Ceph集群新主機是集群的新節點:

    ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]
    

    image-20231209172951801

    image-20231209174620368

這里在將node03添加進集群的時候,node03節點的mgr服務沒有部署成功。重新放置部署。

image-20231209200225260

image-20231209200608505

image-20231209201336589

從集群中刪除主機

從主機中刪除守護進程后,才可以安全的刪除主機。

ceph orch host rm <host> # 從集群中刪除主機

image-20231209192503208

部署Ceph集群

按照上面的方法部署三臺設備的Ceph集群,步驟如下:

  1. 使用cephadm bootstrap引導部署Ceph單機集群
  2. 在引導主機node01上部署OSD
  3. 向集群中添加主機node02、node03
  4. 分別在node02和node03上部署OSD

image-20231209201827764

至此,三臺設備的集群部署完成!通過Ceph Dashboard查看集群信息。
image-20231209202115189

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210077.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210077.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210077.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

游戲開發庫

整理了38個Python游戲開發庫 https://zhuanlan.zhihu.com/p/505095419 https://zhuanlan.zhihu.com/p/262012936 2023 年最佳游戲引擎推薦 https://zhuanlan.zhihu.com/p/624771157 十大開源游戲引擎深入比較之美 https://blog.51cto.com/u_15273495/2915535 panda3d https:…

【EI會議征稿中】第三屆網絡安全、人工智能與數字經濟國際學術會議(CSAIDE 2024)

第三屆網絡安全、人工智能與數字經濟國際學術會議&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 第二屆網絡安全、人工智能與數字經濟國際學術會議&#xff08;CSAIDE 2023&…

Verilog基礎:寄存器輸出的兩種風格

相關文章 Verilog基礎https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 Verilog中的寄存器操作一般指的是那些對時鐘沿敏感而且使用非阻塞賦值的操作。例如狀態機中的狀態轉移&#xff0c;實際上就是一種寄存器操作&#xff0c;因為這相…

聽GPT 講Rust源代碼--src/tools(10)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_is_empty_from_len.rs 在Rust源代碼中&#xff0c;rust-analyzer是一個Rust語言的IDE插件和代碼分析器。其中&#xff0c;generate_is_empty_from_len.rs是rust-analyzer中的一個處理程序&#x…

終于有人把tcp、http、rpc和grpc總結完整了

隨著微服務的迅速發展&#xff0c;各大互聯網企業也投入到微服務的?使用種。微服務最大的特點是&#xff0c;跨進程、跨服務、跨語言之間的調用&#xff0c;使得我們能夠像調用本地類、函數一樣。當微服務具備該特點&#xff0c;將我們復雜的業務拆分成不同的服務&#xff0c;…

CentOS7安裝Docker,DockerCompose

安裝docker 1、卸載docker 查看是否有舊版本docker docker info首先檢測我們虛擬機是否已經安裝過Docker&#xff0c;如果安裝則需卸載。代碼中“\”符號為換行符&#xff0c;相當于一行內容分為多行&#xff0c;這是檢測docker的各種組件 yum remove docker \docker-clien…

VGG模型

概念&#xff1a; CNN感受野 在卷積神經網絡中&#xff0c;決定某一層輸出結果中的一個元素所對應的輸入層的區域大小&#xff0c;被稱作感受野&#xff08;receptive field&#xff09;。通俗的解釋是&#xff0c;輸出feature map上的一個單元對應輸入層上的區域大小。 VGG…

協同過濾算法springboot+java+ssm高校圖書館圖書借閱管理系統k32vr

課題主要分為四大模塊&#xff1a;即管理員模塊&#xff0c;員工模塊&#xff0c;教師模塊和學生模塊&#xff0c;主要功能包括&#xff1a;首頁&#xff0c;個人中心&#xff0c;員工管理&#xff0c;學生管理&#xff0c;教師管理&#xff0c;圖書分類管理&#xff0c;圖書信…

wsl2 ubuntu上搭建OpenIM

文檔 踩坑 版本要選擇好&#xff0c;不要直接main來跑&#xff0c;目前版本OpenIMServer 有release-v3.3和release-v3.4&#xff0c;對應Chat版本的release-v1.4和release-v1.4。但我跑3.4是有問題的&#xff0c;切到3.3可以跑通。export OPENIM_IP"http://ip:10002"…

HNU計算機結構體系-實驗2:CPU動態指令調度Tomasulo

文章目錄 實驗2 CPU動態指令調度Tomasulo一、實驗目的二、實驗說明三、實驗內容問題1&#xff1a;問題2&#xff1a;問題3&#xff1a;問題4&#xff1a;問題5&#xff1a; 四、思考題問題1&#xff1a;問題2&#xff1a; 五、實驗總結 實驗2 CPU動態指令調度Tomasulo 一、實驗…

【數據挖掘】國科大蘇桂平老師數據庫新技術課程作業 —— 第三次作業

part 1 設計一個學籍管理小系統。系統包含以下信息&#xff1a; 學號、學生姓名、性別、出生日、學生所在系名、學生所在系號、課程名、課程號、課程類型&#xff08;必修、選修、任選&#xff09;、學分、任課教師姓名、教師編號、教師職稱、教師所屬系名、系號、學生所選課…

汽車網絡安全--ISO\SAE 21434解析(一)

目錄 1.標準總覽 2.示例分析 2015年美國黑帽大會,知名網絡安全專家Charlie Miller和Chris Valasek詳細描述了他們是如何在有限距離下通過WiFI入侵到Jeep大切諾基的中控系統,從此關于汽車網絡安全的討論拉開了序幕。 2016 年,ISO 道路車輛技術委員會與 SAE 聯合成立 SC32/…

【算法每日一練]-結構優化(保姆級教程 篇5 樹狀數組)POJ3067日本 #POJ3321蘋果樹 #POJ2352星星

目錄 今天知識點 求交點轉化求逆序對&#xff0c;每次操作都維護一個y點的前綴和 樹的變動轉化成一維數組的變動&#xff0c;利用時間戳將節點轉化成區間 先將y排序&#xff0c;然后每加入一個就點更新求一次前綴和 POJ3067&#xff1a;日本 思路&#xff1a; POJ3321蘋…

案例063:基于微信小程序的傳染病防控宣傳系統

文末獲取源碼 開發語言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 數據庫&#xff1a;mysql 5.7 開發軟件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序開發軟件&#xff1a;HBuilder …

leetcode系列:反轉鏈表的形象表示

反轉鏈表是一道比較簡單的題&#xff0c;主要考察的是對鏈表數據結構的理解和雙指針應用&#xff0c;比較容易出錯的地方是指針的移動順序。在練習的過程中想到了一個比較形象的表示方法&#xff0c;于是記錄下來。 # Definition for singly-linked list. # class ListNode: #…

地理信息系統概論

地理信息系統概論 第一章導論第二章地理信息系統的數據結構第三章空間數據的處理第四章地理信息系統空間數據庫第五章空間分析的原理與方法第六章地理信息系統的應用模型第七章地理信息系統的設計與評價第八章地理信息系統產品的輸出與設計 第一章導論 數據與信息的關系&#…

Java基礎-java.util.Scanner接收用戶輸入

目錄 1. 導入所需要的jar包2. 編寫代碼運行3. 輸出運行結果 1. 導入所需要的jar包 import java.util.Scanner;2. 編寫代碼運行 public class ScannerDemo {public static void main(String[] args) {/** 使用Scanner接收用戶鍵盤輸入的數據* 1. 導包&#xff1a;告訴程序去JD…

【Python】translate包報錯RuntimeError: generator raised StopIteration

根據網上有些教程&#xff0c;使用translate包翻譯稍微復雜語句的時候&#xff0c;會報錯RuntimeError: generator raised StopIteration 實際測試之后發現&#xff0c;主要是from_lang、to_lang兩個參數的設置有問題&#xff0c;比如有人說中文寫"Chinese"、"Z…

Mysql、Oracle安全項檢查表及操作腳本

軟件開發全資料獲取&#xff1a;點我獲取 Mysql檢查表 Oracle檢查表

【華為OD題庫-073】字符串變換最小字符串-java

題目 題目描述: 給定一個字符串s&#xff0c;最多只能進行一次變換&#xff0c;返回變換后能得到的最小字符串(按照字典序進行比較)。變換規則:交換字符串中任意兩個不同位置的字符。 輸入描述: —串小寫字母組成的字符串s 輸出描述: 按照要求進行變換得到的最小字符串 備注: s…