學習CentOS7下使用ceph-deploy搭建Ceph

Ceph 獨一無二地在一個統一的系統中同時提供了對象、塊、和文件存儲功能。

Ceph 簡介 http://docs.ceph.org.cn/start/intro/

不管你是想爲雲平臺提供Ceph 對象存儲和/或 Ceph 塊設備,還是想部署一個 Ceph 文件系統或者把 Ceph 作爲他用,所有 Ceph 存儲集羣的部署都始於部署一個個 Ceph 節點、網絡和 Ceph 存儲集羣。 Ceph 存儲集羣至少需要一個 Ceph Monitor 和兩個 OSD 守護進程。而運行 Ceph 文件系統客戶端時,則必須要有元數據服務器( Metadata Server )。

  • Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的複製、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集羣設定爲有2個副本時,至少需要2個 OSD 守護進程,集羣才能達到 active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。
  • Monitors: Ceph Monitor維護着展示集羣狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱爲 epoch )。
  • MDSs: Ceph 元數據服務器( MDS )爲 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,可以在不對 Ceph 存儲集羣造成負擔的前提下,執行諸如 ls、find 等基本命令。

Ceph 把客戶端數據保存爲存儲池內的對象。通過使用 CRUSH 算法, Ceph 可以計算出哪個歸置組(PG)應該持有指定的對象(Object),然後進一步計算出哪個 OSD 守護進程持有該歸置組。 CRUSH 算法使得 Ceph 存儲集羣能夠動態地伸縮、再均衡和修復。

部署實驗準備。

使用ceph-deploy 管理安裝。
使用了VMware Workstation 創建了4個CentOS7虛擬機,作爲實驗主機。
設置主機名 主機IP
ceph-admin 192.168.199.80
ceph-1 192.168.199.81
ceph-2 192.168.199.82
ceph-3 192.168.199.83
一個 ceph-deploy 管理節點和一個三節點的Ceph 存儲集羣。

虛擬機基礎設置

1.設置 hosts 文件。
四個主機都編輯 /etc/hosts 文件

 vi /etc/hosts

末尾 添加。

192.168.199.80 ceph-admin
192.168.199.81 ceph-1
192.168.199.82 ceph-2
192.168.199.83 ceph-3

2.設置selinux。

即時生效。

setenforce 0

永久生效。便捷selinux/config 設置文件

vi /etc/selinux/config 

設置

SELINUX=permissive

設置配置文件後需要重啓後纔會生效。可以 setenforce 0 即時生效。

3.設置防火牆
Ceph Monitors 之間默認使用 6789 端口通信, OSD 之間默認用 6800:7300 這個範圍內的端口通信。 Ceph OSD 能利用多個網絡連接進行與客戶端、monitors、其他 OSD 間的複製和心跳的通信。
要設置firewalld允許相應的入站請求。

開放6789 端口

firewall-cmd --zone=public --add-port=6789/tcp --permanent

開放6800-7300 端口

firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent

重啓加載防火牆 策略 才能讓設置生效

firewall-cmd --reload

4.設置 時間同步。可以連通網絡的情況下。使用chronyd進行時間同步。

編輯 chronyd 配置文件。

vim /etc/chrony.conf

將原來默認的ntp服務器註釋掉,設置爲阿里的ntp服務器

server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst

重啓 chronyd 服務。

systemctl restart chronyd

5.安裝 epel-release

yum -y install epel*

6.設置ceph 安裝源。安裝版本luminous

vim /etc/yum.repos.d/ceph.repo

使用的阿里源

[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

安裝 ceph-deploy

** Ceph-Deploy不再被積極維護。它沒有在比Nautilus更新的版本上進行測試。它不支持RHEL 8、CentOS 8或更新的操作系統。**
但是 CentOS7 上部署 luminous 版本還是可以的。
只在 ceph-admin 節點執行
在ceph-admin 節點安裝ceph-deploy

1.確認打開了插件支持

yum install yum-plugin-priorities
cat /etc/yum/pluginconf.d/priorities.conf

確保

[main]
enabled = 1

2.安裝pip 執行ceph-deploy 一下命令 需要使用。

yum -y install python2-pip

3.設置ceph-admin 可以免密 ssh 連接 ceph-1 ceph-2 ceph-3

設置密鑰 按三次 Enter

 ssh-keygen

將密鑰拷貝到三個ceph節點

ssh-copy-id ceph-1

需要 yes 並且輸入 ceph-1 的 root密碼

ssh-copy-id ceph-2
ssh-copy-id ceph-3

可以測試一下 是否可以免密連接

ssh ceph-1

退出 ssh 連接

exit

4.安裝ceph-deploy

 yum -y install ceph-deploy

ceph-deploy 是ceph 集羣 部署 工具。

創建ceph 集羣。並進行基本設置。

按照官方文檔進行試驗
http://docs.ceph.org.cn/start/quick-ceph-deploy/

ceph集羣由 ceph-1 ceph-2 ceph-3 構成。

1.在ceph-1 ceph-2 ceph-3 節點安裝 ceph 軟件。

可以使用 ceph-admin上的ceph-deploy 自動安裝

ceph-deploy install ceph-1 ceph-2 ceph-3

或者各個 節點 手動安裝。

安裝依賴軟件包

sudo yum install snappy leveldb gdisk python-argparse gperftools-libs

安裝 ceph

 yum -y install ceph ceph-radosgw

2.ceph-admin上創建一個目錄。建立創建ceph集羣。指定初始化的 Ceph Monitor 節點。

mkdir my-cluster
cd my-cluster
ceph-deploy new ceph-1

ceph-1 節點作爲集羣的 mon 節點。稍後再添加其他的mon。在當前目錄可以看到ceph的 配置文件。編輯 一下保證 可以只設置兩個osd就讓ceph集羣達到 active+clean狀態。

vim ceph.conf

在 gloabal 模塊下添加。(當前應該只有一個模塊)

osd_pool_default_size = 2
public_network = 192.168.199.0/24

public network = {ip-address}/{netmask} 一行保證在添加額外的的mon時不出錯。

3.初始化ceph集羣(管理節點ceph-1執行)
配置初始 monitor(s)、並收集所有密鑰:

ceph-deploy mon create-initial

完成上述操作後,當前目錄裏應該會出現這些密鑰環:
{cluster-name}.client.admin.keyring
{cluster-name}.bootstrap-osd.keyring
{cluster-name}.bootstrap-mds.keyring
{cluster-name}.bootstrap-rgw.keyring
mon create-ininial

4.查看ceph集羣狀態

ceph -s

此時在 ceph-1 或者 ceph-2 ceph-3中。執行ceph -s 是無法成功地,因爲在指定位置沒有相應的配置文件或密鑰。
ceph-s無法查看
配置文件和密鑰在ceph-admin 的mycluster 目錄中。。。
ceph-admin 在該目錄執行相應命令可將配置文件添加到ceph集羣中。

ceph-deploy admin ceph-1 ceph-2 ceph-3

執行完畢 再次查看 ceph 狀態。。要在ceph集羣中的一個主機執行。ceph-admin 只負責ceph集羣中ceph 安裝搭建。如在ceph-1 執行

ceph -s

ceph -s無mgr
可以看到services 中mgr 顯示 no daemons active。

在安裝有mon的節點上安裝mgr。這是luminous版本中新增組件。該組件的主要作用是分擔和擴展monitor的部分功能,減輕monitor的負擔,讓更好地管理ceph存儲系統。 本來是可選安裝,現版本如12.2.13 是必須安裝

ceph-deploy mgr create ceph-1

ceph-admin執行完成後再次查看 ceph狀態
ceph -sHEALTH_WARN
可以看到集羣狀態是 HEALTH_WARN。 osd 的數量小於默認的2.因爲現在還未添加osd。

另一個查看ceph 集羣健康狀態的方法 是 命令 ceph health
detail 表示顯示詳情。

 ceph health
 ceph health detail

5.添加osd 模塊。
luminous 似乎不支持 直接將一個目錄設置成 osd。需要一個硬盤 或者硬盤分區。 ceph集羣各個主機添加一塊新硬盤。。。添加後映射爲 /dev/sdb
先添加 兩個 osd 。因爲設置了兩個osd即可達到 active+clean

格式化 硬盤。

ceph-deploy disk zap ceph-1 /dev/sdb
ceph-deploy disk zap ceph-2 /dev/sdb
ceph-deploy disk zap ceph-3 /dev/sdb

先添加兩個 osd

ceph-deploy osd create --data /dev/sdb ceph-1
ceph-deploy osd create --data /dev/sdb ceph-2

只添加一個時 ceph狀態
只添加一個osd
添加兩個osd 後狀態變爲HEATTH_OK
添加兩個osd後狀態

添加額外的 osd 和 mon。

添加擴充的的 osd 沒什麼區別

ceph-deploy osd create --data /dev/sdb ceph-3

新增 mon.
添加 Monitors

Ceph 存儲集羣需要至少一個 Monitor 才能運行。爲達到高可用,典型的 Ceph 存儲集羣會運行多個 Monitors,這樣在單個 Monitor 失敗時不會影響 Ceph 存儲集羣的可用性。Ceph 使用 PASOX 算法,此算法要求有多半 monitors(即 1 、 2:3 、 3:4 、 3:5 、 4:6 等 )形成法定人數。

使用 add 命令。一次只可以添加一個主機。

ceph-deploy mon add ceph-2

ceph-2添加mon
前面說過 每個運行了mon的節點上都需要安裝mgr 組件

ceph-deploy mgr create ceph-2

ceph-2安裝mgr

使用create 命令,一次可以創建多個 mon

ceph-deploy mon create ceph-3
ceph-deploy mgr create ceph-3

ceph-3添加mgr和mon

測試ceph 文件系統使用。

ceph 文件系統使用依賴 元數據服務器。 在ceph-1 節點安裝

ceph-deploy mds create ceph-1

安裝完成使用 ceph -s 是看不到mds 服務狀態的。(因爲不處於活動狀態)。在ceph集羣某一節點 查看

 ceph mds stat

查看 ceph 文件系統
ceph文件系統目前爲空
雖然已創建了元數據服務器(存儲集羣快速入門),但如果你沒有創建存儲池和文件系統,它是不會變爲活動狀態的。

先查看當前存儲池

ceph osd lspools

看其它文檔。。。一般來說有一個默認存儲池rbd的。可能是新版本的原因,默認已經沒有任何存儲池了。
默認沒有存儲池

創建pool,pool是ceph存儲數據時的邏輯分區,它起到namespace的作用。
創建兩個存儲池。存儲池設置涉及到了歸置組的設置。

歸置組。。。個人還不是特別明白歸置組的數量設置具體意義。
官方建議
確定 pg_num 取值是強制性的,因爲不能自動計算。下面是幾個常用的值:
•少於 5 個 OSD 時可把 pg_num 設置爲 128
•OSD 數量在 5 到 10 個時,可把 pg_num 設置爲 512
•OSD 數量在 10 到 50 個時,可把 pg_num 設置爲 4096
•OSD 數量大於 50 時,你得理解權衡方法、以及如何自己計算 pg_num 取值
其結果彙總後應該接近 2 的冪。彙總並非強制的,如果你想確保所有歸置組內的對象數大致相等,最好檢查下。
比如,一個配置了 200 個 OSD 且副本數爲 3 的集羣,你可以這樣估算歸置組數量:

(200 * 100)
----------- = 6667. Nearest power of 2: 8192
3

注,這是單個存儲池的計算方法。。。
當用了多個數據存儲池來存儲數據時,你得確保均衡每個存儲池的歸置組數量、且歸置組數量分攤到每個 OSD ,這樣才能達到較合理的歸置組總量,並因此使得每個 OSD 無需耗費過多系統資源或拖慢連接進程就能實現較小變遷。

這個不是很懂。也就只把官方文檔內容抄下來了。有一點注意。可以根據設置的歸置組數量和池數量計算出每個osd上歸置組的大約數量。。。比如三個存儲池,存儲池默認副本數爲2(osd_pool_default_size = 2)。設置存儲池是每個存儲池pg_num 都是 128。這時每個osd 上歸置組數量大約是 128 * 3 * 2 / 3 = 256 。。。
官方建議 每個OSD上大約100個歸置組。。。這個建議可以幫助我們計算。默認的每個osd上最大歸置組數量是250 當然是可以修改的。

mon_max_pg_per_osd 250

這樣 設置多個存儲池時,我們可以做一下數學題。把歸置組數量作爲要求的值?。儘量保證每個osd上歸置組數量在50-250 之間。儘量往100靠近(最好大於100)。。。最後選擇一個接近2的冪的值。
**比如。三個osds 副本數量是3(默認爲3),準備設置三個存儲池。
50 * 3(3個osd) <? * 3 * 3(三個存儲池,每個存儲池三個副本)<250 * 3(三個osd)
約 27< ? < 84
選擇一個 2的冪。。。那就是32 或者64。然後算一下哪個值 下osd上歸置組數量更接近 100
32 的話 32 * 3 * 3 / 3 = 96
64 的話 64 * 3 * 3 / 3 = 192
儘管 96 更接近 100 但是 感覺應該 歸置組數量是32和64 都可以。。。另,單個節點osd數量少的情況下mon_max_pg_per_osd 建議可以調大一點。
**
附,如果一個節點上有許多osd 那麼每個osd上的歸置組數量儘量少一點。

說了好多歸置組。重新回到 ceph 文件系統

一個 Ceph 文件系統需要至少兩個 RADOS 存儲池,一個用於數據、一個用於元數據。配置這些存儲池時需考慮:
•爲元數據存儲池設置較高的副本水平,因爲此存儲池丟失任何數據都會導致整個文件系統失效。
•爲元數據存儲池分配低延時存儲器(像 SSD ),因爲它會直接影響到客戶端的操作延時。

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 128

查看當前存儲池

ceph osd lspools

ceph文件系統存儲池

創建的ceph文件系統名 是fs_test

ceph fs new fs_test cephfs_metadata cephfs_data

查看 mds 服務,和 ceph 文件系統

 ceph mds stat
 ceph fs ls

ceph文件系統詳情
似乎只能設置一個文件系統名或者 一個元數據存儲池只能供一個文件系統使用。
因此 ceph fs new fs_test2 cephfs_metadata cephfs_data會失敗
元數據存儲池只可使用一次

接下來 使用一個ceph-client 主機測試ceph文件系統的使用。。。可以新建一個主機 ceph-client。將其加入 ceph-admin的hosts中。或者直接使用 ceph集羣中 某一主機。。。
新建 一主機 IP 192.168.199.85 由於只是測試ceph文件系統使用,不參與ceph集羣部署,因此不用設置 時間同步。但是 selinux和ceph安裝源要設置。

ceph-admin 的 /etc/hosts 文件加入 ceph-client
ceph-client
設置ceph-admin ssh 免密登錄 ceph-client

ssh-copy-id ceph-client

ceph-client安裝 ceph 軟件,依然在ceph-admin上執行

ceph-deploy install ceph-client

創建密鑰文件
1.在密鑰環文件中找到與某用戶對應的密鑰例如:

cat ceph.client.admin.keyring

當前也沒有創建其它用戶也只有這一個默認的。
2.找到用於掛載 Ceph 文件系統的用戶,複製其密鑰。大概看起來如下所示:
[client.admin]
key = AQCTUctes9x1NBAALpsftppssFdsDeFscvQZjA==
3.複製密鑰到一個文本中 該文本文件名 admin.secret
文本內容。

AQCTUctes9x1NBAALpsftppssFdsDeFscvQZjA==

4.複製該文本文件到 ceph-client 的某一個目錄中。比如root用戶根目錄。並確保該文件可讀

chmod +r admin.secret 

ceph fs文件系統可用兩種方式。內核驅動和用戶空間文件系統( FUSE )

內核驅動
創建掛載點

mkdir /mnt/test_cephfs

執行掛載指令,要在admin.secret 所在的目錄下執行,或者輸入admin.secret 的絕對路徑

mount -t ceph 192.168.199.81:6789:/ /mnt/test_cephfs -o name=admin,secretfile=admin.secret

192.168.199.81 可以是81 82 83。只要是mon所在節點即可。
內核驅動掛載
爲什麼容量是 13 這個我也不太清楚。。。理論上三個硬盤,每個都是10G。那一共是30G。然後備份數是2,那應該是15G吧。好吧,其實差不多。
取消掛載

umount -l /mnt/test_cephfs/

用戶空間文件系統( FUSE )
將ceph.client.admin.keyring 密鑰環複製到 ceph-client 中,假定還放在root目錄。
密鑰環放在root根目錄
ceph-client 上安裝ceph-fuse ceph-client 執行

yum -y install ceph-fuse

創建掛載點

mkdir /mnt/test_fuse

測試掛載
ceph-fuse
取消掛載

fusermount -u /mnt/test_fuse

fusermount -u
或者 直接 umount也是可以的

存儲池創建 和 配置文件修改應用

準備測試 ceph 塊設備使用。。。發現需要先創建一個存儲池。。。

ceph osd pool create rbd 128

創建存儲池失敗
因爲之前爲ceph 文件系統已經創建過 兩個存儲池。且 pg_num爲128。再創建一個 pg_num 爲128的存儲池的話。。。根據備份數量爲2 總的歸置組 是 768 超過的 mon_max_pg_per_osd(默認250)* 3(3個osd)。
解決辦法 一個是 修改ceph 配置文件,將mon_max_pg_per_osd 設置的更大一點。
還有一個 重新設置幾個存儲池的pg_num 設置的更小一點。(基本上不會這樣設置,因爲pg_num變更時只能設置的更大,不能設置的更小)要想實現,只能刪除原來的存儲池再重新創建。

方式一更簡單一點。。但是這裏採用的方式二。因爲是測試使用。。。

1.刪除ceph文件系統
停止mds服務

systemctl stop ceph-mds.target

刪除ceph 文件系統

ceph fs rm fs_test --yes-i-really-mean-it

刪除 mds 服務 mds的id默認從0開始,指定不存在的id並不會報錯

 ceph mds rm 0

2.刪除掉原來兩個存儲池
編輯 配置文件 ceph.conf
在 ceph-admin 主機的 /root/mycluster 目錄下 編輯

vim ceph.conf

新增

mon_allow_pool_delete = true

把新增的設置配置到ceph集羣。

ceph-deploy --overwrite-conf config push ceph-1 ceph-2 ceph-3

重啓 mon 服務

systemctl restart ceph-mon.target

刪除兩個存儲池

ceph osd pool delete cephfs_data cephfs_data --yes-i-really-really-mean-it
ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it

3.假設只有三個存儲池,副本數目爲2 根據建議每個osd上有大約100個歸置組 且小於250 大約計算出 每個存儲池的的pg_num 應是 64。

查看現有存儲池。發現爲空

ceph osd lspools

設置三個 存儲池。

ceph osd pool create cephfs_data 64
ceph osd pool create cephfs_metadata 64
ceph osd pool create rbd 64

其實現在只用設置一個 rbd 存儲池 就夠了。因爲現在測試塊存儲使用
只有一個存儲池的話 pg_num 又可以設置爲128

ceph osd pool create rbd 128

三個存儲池
有時候你可能要爲新創建的 rbd 存儲池設置相應的的application
大約分爲 塊存儲 文件系統 網關
enable use of an application [cephfs,rbd,rgw] on pool

ceph osd pool application enable rbd rbd --yes-i-really-mean-it

理所當然的設置爲 rbd

測試塊設備使用。

現在已經創建了rbd 的存儲池。可以測試塊設備的使用了。
簡單來說,塊設備可以虛擬出一塊硬盤,掛載到本地。或者供cloudstack等雲平臺使用。

在管理節點上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷貝到 ceph-client 。

ceph-deploy admin ceph-client

ceph-deploy 工具會把密鑰環複製到 /etc/ceph 目錄,要確保此密鑰環文件有讀權限(如 sudo chmod +r /etc/ceph/ceph.client.admin.keyring )。

在 ceph-client 節點上創建一個塊設備 image 。單位是M名稱 foo

rbd create --size 4096 foo

可以指定存儲池。

rbd create --size 4096 rbd/foo

一般不指定存儲池 會選擇存儲池 rbd
查看 新創建的塊設備

rbd ls

指定 存儲池

rbd ls rbd

查看塊設備詳細信息

rbd info foo

塊設備信息

調整塊設備映像大小

Ceph 塊設備映像是精簡配置,只有在你開始寫入數據時它們纔會佔用物理空間。然而,它們都有最大容量,就是你設置的 --size 選項。如果你想增加(或減小) Ceph 塊設備映像的最大尺寸,執行下列命令:

rbd resize --size 2048 foo (to increase)
rbd resize --size 2048 foo --allow-shrink (to decrease)

要掛載塊設備映像,先羅列出所有的映像。

rbd list

映射塊設備
用 rbd 把映像名映射爲內核模塊。必須指定映像名、存儲池名、和用戶名

sudo rbd map {pool-name}/{image-name} --id {user-name}

sudo rbd map rbd/foo --id admin

或者

sudo rbd map foo --name client.admin 

可能報錯

rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable foo object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address

按提示 執行

rbd feature disable foo object-map fast-diff deep-flatten

後再進行映射即可

sudo rbd map rbd/foo --id admin

映射前查看 磁盤信息

lsblk

映射前
映射後磁盤信息

lsblk
fdisk -l

映射後
查看已映射塊設備

rbd showmapped 

已映射塊設備
可以看到 塊設備映像 名 foo 存儲池 pool 映射到設備 /dev/rbd0

測試掛載本 設備 映像。
首先 設置 設備 文件格式 設置成 ext4

mkfs.ext4 /dev/rbd0

或者

mkfs.ext4 /dev/rbd/rbd/foo

設置 掛載點 開始掛載

mkdir /mnt/test_image
mount /dev/rbd0 /mnt/test_image/

掛載塊設備
/dev/rbd0 和 /dev/rbd/rbd/foo 是同一塊設備
同一塊設備
取消 模塊映射。

rbd unmap /dev/rbd0

或者

rbd unmap /dev/rbd/rbd/foo

取消模塊映射
刪除設備映像

rbd rm {image-name}

指定存儲池

rbd rm {pool-name}/{image-name}
rbd rm rbd/foo

刪除設備映像

**可以設置容量超過 可存儲量的映像設備。比如只有3個osd,每個硬盤10G 不算副本最多30G。。但是可以創建一個 50G的映像設備。**只有當真正向其中寫入數據纔會佔用真實硬盤空間。

測試使用塊設備當作cloudstack的主存儲。

當搭建好一個ceph 集羣后,可以用來做cloudstack的主存儲。

ceph初始搭建完成。上面沒有任何存儲池。
創建存儲池 cloudstack

ceph osd pool create cloudstack 128

創建用戶 cloudstack

ceph auth get-or-create client.cloudstack mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=cloudstack'

記下生成的 密鑰
cloudstack密鑰

cloudstack在添加主存儲時 可以 設置成ceph
主存儲 協議 選擇 rbd
RADOS Monitor 填寫ceph集羣運行 mon 服務的節點 其中一個,根據建議(你可以在多個 monitors 上創建一個輪詢域名服務)。
RADOS Pool 填寫 準備當作 cloudstack主存儲使用的存儲池 就是剛纔創建的 cloudstack
RADOS Pool 填寫 創建的用戶 cloudstack
RADOS Secret 填寫cloudstack 用戶的密鑰

AQDXqMxebgIhMRAAX8uVcfUXRRQsDXaInyin4g==

ceph作爲cloudstack主存儲

公共網絡和集羣網絡區分

官方建議用兩個網絡運營 Ceph 存儲集羣:一個公共網(前端)和一個集羣網(後端)。
上面部署 只用了一個網卡 公共網和集羣網使用的同一個網絡。

測試使用雙網絡。。。在虛擬機上測試。
虛擬機設置兩個網絡適配器
三個 ceph 集羣節點設置兩個就夠了,客戶端和集羣通信還是使用的公共網絡。
假設橋接的是公共網絡 NAT的是 集羣網絡,公共網絡要不能訪問集羣網絡。
ip addr
這時 ceph的配置文件應該是類似於

mon_initial_members = ceph-1
mon_host = 192.168.199.81
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

public_network = 192.168.199.0/24
cluster_network = 192.168.136.0/24

public_network 表示公共網絡網段
cluster_network 表示集羣網絡網段
mon_host 表示 監視器 所在主機。客戶端與集羣通信也是通過這個監視器完成的(應該吧)。

完成後查看,發現狀態正常(我這個是重新把ceph 集羣安裝了一遍。中間修改cluster_network和public_network 還需要更改 map 這個還不太明白)
集羣狀態正常

現在把其中一個節點的 NAT網絡關掉,也就是集羣網絡。 測試ceph-2
網絡正常
修改 ens34 網卡

vi /etc/sysconfig/network-scripts/ifcfg-ens34

修改ONBOOT 爲 no

ONBOOT=no

重啓網絡

systemctl restart network

NAT網絡失效

查看ceph集羣狀態
ceph 集羣

發現集羣狀態爲 WARN 少了一個 osd。看來集羣節點之間通信確實使用的集羣網。cluster_network 設置是生效的。

這時候再將NAT網絡開啓。。等了一段時間發現 ceph狀態還是沒有恢復正常
狀態WARN
查看osd 樹
ceph osd tree
keyikandao 編號爲1的osd 狀態 是down 主機時 ceph-2 也是就剛停止又重啓集羣網的主機。。。
這時候需要重新啓動該節點的osd 服務 在ceph-2主機執行

 systemctl start [email protected]

重新啓動osd服務
發現狀態正常了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章