雖然我自己也做過自行安裝,不過不知道哪裡弄錯了,成功次數有點少 XD
所以記錄下來的,主要是透過 ceph-deploy 工具的部署方法。
PS. 其實不看這篇文章,直接看官方文件也是一樣的~。
1、系統配置
部署架構中,有一台 Admin 節點負責執行部署程序,部署目標為 Monitor 節點以及三台 OSD 節點。其中 OSD 節點有兩顆 HDD 和一顆 SSD。HDD 有一顆拿來裝作業系統,剩下的 SSD 放 Journal、HDD 放 OSD。
2、環境配置
作業系統:Ubuntu 14.04.2 64-bit server使用者名稱(所有節點):ubuntu
ceph-deploy 版本(Admin 節點):1.4.0-0ubuntu1
ceph 版本(Monitor 與 OSD 節點):0.80.9-0ubuntu0.14.04.1
2.1、設定 hostname
為了方便後面的部署,在 Admin 節點的 /etc/hosts 寫下以下的設定:1 2 3 4 |
monitor 10.5.1.1 osd1 10.5.1.2 osd2 10.5.1.3 osd3 10.5.1.4 |
1 2 3 4 |
monitor 192.168.100.1 osd1 192.168.100.2 osd2 192.168.100.3 osd3 192.168.100.4 |
另外需要注意的是,上述的 hostname 會在以下的指令當中使用
但由於 ceph-deploy 工具在部署時,會需要指令上指定的 hostname 與對應主機自己的 hostname 完全一致,否則可能會出現類似以下的警告訊息:
1 2 3 4 5 6 |
[monitor][WARNIN] ******************************************************************************** [monitor][WARNIN] provided hostname must match remote hostname [monitor][WARNIN] provided hostname : monitor [monitor][WARNIN] remote hostname : ubuntu-monitor [monitor][WARNIN] monitors may not reach quorum and create-keys will not complete [monitor][WARNIN] ******************************************************************************** |
但實際在 Monitor 節點上的 /etc/hostname 內容則是 "ubuntu-monitor"。
2.2、設定 ssh
因為 ceph-deploy 會自動透過 ssh 連線到其他節點進行部署,所以必須設定 ssh 連線包括設定 ssh key 讓 ssh 連線時不需要輸入密碼、以及設定登入節點時的預設使用者名稱。
2.2.1、設定 ssh key
1 2 3 4 5 |
ssh -keygen ssh -copy- id ubuntu@monitor ssh -copy- id ubuntu@osd1 ssh -copy- id ubuntu@osd2 ssh -copy- id ubuntu@osd3 |
2.2.2、設定預設的登入帳號
編輯 ~/.ssh/config,寫入以下的資訊去設定每個節點預設的登入帳號。
1 2 3 4 5 6 7 8 9 10 11 12 |
Host monitor Hostname monitor User ubuntu Host osd1 Hostname osd1 User ubuntu Host osd2 Hostname osd2 User ubuntu Host osd3 Hostname osd3 User ubuntu |
2.3、準備 OSD 環境
在每個 OSD 節點上準備要給 Ceph 使用的環境。以下是以 HDD 掛載在 /mnt/storage-sdb、SSD 掛載在 /mnt/storage-sdc 為例,同時都是使用 XFS 檔案格式。3、部署 Ceph
以下的動作皆是在 Admin 節點上進行的。- 使用非 root 帳號,建立一個 ceph 資料夾,並且將當前目錄移至該 ceph 資料夾(因為 ceph-deploy 工具產生的所有檔案與記錄,皆會出現在當前資料夾)。
12mkdir
~
/ceph-deploy
cd
~
/ceph-deploy
- 建立 Ceph 叢集
1ceph-deploy new monitor
- 在每個節點上安裝 ceph 相關套件。
1ceph-deploy
install
--release firefly monitor osd1 osd2 osd3
- 初始化 Monitor。12
ceph-deploy mon create-initial
ceph-deploy gatherkeys monitor
- 部署 OSD 節點。將 OSD 放在每個節點的 /mnt/storage-sdb、Journal 放在每個節點的 /mnt/storage-sdc。12
ceph-deploy osd prepare osd1:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd0
osd2:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd1
osd3:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd2
ceph-deploy osd activate osd1:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd0
osd2:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd1
osd3:
/mnt/storage-sdb
:
/mnt/storage-sdc/journal-osd2
- 將 keyring 以及 ceph.conf 設定檔傳送到每個節點上。這個動作主要是方便使用者,可以在每個節點上使用 ceph 的 CLI 時,不需要自行指定 Monitor 以及 keyring 位置,並非是必要動作。
1ceph-deploy admin monitor osd1 osd2 osd3
4、確認 Ceph 狀態
首先在 Admin 節點上,將 ceph.conf 以及 keyring 都複製到預設的 /etc/ceph 目錄,讓下一個指令可以簡單一點。1 2 |
mkdir /etc/ceph cp ~ /ceph-test/ceph .c* /etc/ceph |
1 2 3 4 5 6 7 8 |
ubuntu@admin:~ /ceph-test $ ceph -s cluster 888cc004-021b-43e2-a9d5-794f450b97d3 health HEALTH_OK monmap e1: 1 mons at {monitor=140.92.25.110:6789 /0 }, election epoch 2, quorum 0 monitor osdmap e10: 3 osds: 3 up, 3 in pgmap v637: 192 pgs, 3 pools, 37524 kB data, 21 objects 204 MB used, 5586 GB / 5586 GB avail 192 active+clean |
5、Trouble Shouting
5.1、ceph-deploy mon create-initial 指令出現 no such file 的錯誤
參考 [1] 的回覆,依據網友 Travis Rhoden 的測試,問題可能發生在同時將 ceph-deploy 和 ceph 都安裝在 Monitor 節點上。因此如果沒有額外的主機可以作為部署用的 Admin 節點,建議可以利用 container 技術,在既有節點上做出 Admin 節點的 container。
沒有留言:
張貼留言