雖然我自己也做過自行安裝,不過不知道哪裡弄錯了,成功次數有點少 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 寫下以下的設定:monitor 10.5.1.1 osd1 10.5.1.2 osd2 10.5.1.3 osd3 10.5.1.4而在 Monitor 節點與 OSD 節點的 /etc/hosts,則是寫以下的設定:
monitor 192.168.100.1 osd1 192.168.100.2 osd2 192.168.100.3 osd3 192.168.100.4這樣的目的是讓 Monitor 與 OSD 互相溝通時,能夠使用內部網路進行溝通,避免壓縮到外部網路的流量。
另外需要注意的是,上述的 hostname 會在以下的指令當中使用
但由於 ceph-deploy 工具在部署時,會需要指令上指定的 hostname 與對應主機自己的 hostname 完全一致,否則可能會出現類似以下的警告訊息:
[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] ********************************************************************************上述警告訊息是發生在 Admin 節點上 /etc/hosts 設定的 Monitor 節點名稱為 "monitor"、指令中也是以 "monitor" 作為參數
但實際在 Monitor 節點上的 /etc/hostname 內容則是 "ubuntu-monitor"。
2.2、設定 ssh
因為 ceph-deploy 會自動透過 ssh 連線到其他節點進行部署,所以必須設定 ssh 連線包括設定 ssh key 讓 ssh 連線時不需要輸入密碼、以及設定登入節點時的預設使用者名稱。
2.2.1、設定 ssh key
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,寫入以下的資訊去設定每個節點預設的登入帳號。
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 工具產生的所有檔案與記錄,皆會出現在當前資料夾)。
mkdir ~/ceph-deploy cd ~/ceph-deploy
- 建立 Ceph 叢集
ceph-deploy new monitor
這個指令執行後,會產生 ceph.conf 設定檔,如果需要變更設定檔內容,可以在這個時候先變更。 - 在每個節點上安裝 ceph 相關套件。
ceph-deploy install --release firefly monitor osd1 osd2 osd3
- 初始化 Monitor。
ceph-deploy mon create-initial ceph-deploy gatherkeys monitor
- 部署 OSD 節點。將 OSD 放在每個節點的 /mnt/storage-sdb、Journal 放在每個節點的 /mnt/storage-sdc。
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 位置,並非是必要動作。
ceph-deploy admin monitor osd1 osd2 osd3
4、確認 Ceph 狀態
首先在 Admin 節點上,將 ceph.conf 以及 keyring 都複製到預設的 /etc/ceph 目錄,讓下一個指令可以簡單一點。mkdir /etc/ceph cp ~/ceph-test/ceph.c* /etc/ceph接著執行以下指令,就可以看到部署出來的 Ceph 狀態了。如果一切正常的話,應該可以看到類似下面的結果。
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。
沒有留言:
張貼留言