安裝ceph (快速) 步驟二:儲存叢集
用 ceph-deploy 從管理節點建立一個 Ceph 儲存叢集,該叢集包含三個節點,以此探索 Ceph 的功能。
建立一個 Ceph 儲存叢集,它有一個 Monitor 和兩個 OSD 守護程序。一旦叢集達到 active + clean 狀態,再擴充套件它:增加第三個 OSD 、增加元資料伺服器和兩個 Ceph Monitors。為獲得最佳體驗,先在管理節點上建立一個目錄,用於儲存 ceph-deploy 生成的配置檔案和金鑰對。
切換到上一步建立的ceph_user普通使用者後再執行如下命令
su - ceph_user mkdir my-cluster cd my-cluster
ceph-deploy 會把檔案輸出到當前目錄,所以請確保在此目錄下執行 ceph-deploy 。
如果你是用另一普通使用者登入的,不要用 sudo 或在 root 身份執行 ceph-deploy ,因為它不會在遠端主機上呼叫所需的 sudo 命令。
禁用 requiretty
在某些發行版(如 CentOS )上,執行 ceph-deploy 命令時,如果你的 Ceph 節點預設設定了 requiretty 那就會遇到報錯。可以這樣禁用此功能:執行 sudo visudo ,找到 Defaults requiretty 選項,把它改為 Defaults:ceph !requiretty ,這樣 ceph-deploy 就能用 ceph 使用者登入並使用 sudo 了。
建立叢集
如果在某些地方碰到麻煩,想從頭再來,可以用下列命令清除配置:
ceph-deploy purgedata {ceph-node} [{ceph-node}]
ceph-deploy forgetkeys
用下列命令可以連 Ceph 安裝包一起清除:
ceph-deploy purge {ceph-node} [{ceph-node}]
如果執行了 purge ,你必須重新安裝 Ceph 。
在管理節點上,進入剛建立的放置配置檔案的目錄,用 ceph-deploy 執行如下步驟。
1.建立叢集。
# 命令舉例: ceph-deploy new {initial-monitor-node(s)} # 實際執行如下這個命令 ceph-deploy new node1
執行這個命令後報錯如下:
$ ceph-deploy new node1
Traceback (most recent call last):
File "/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources
解決辦法:
# 其他主機上也執行這個命令
# yum install gcc python-setuptools python-devel -y
在當前目錄下用 ls 和 cat 檢查 ceph-deploy 的輸出,應該有一個 Ceph 配置檔案、一個 monitor 金鑰環和一個日誌檔案。
$ ll
總用量 12
-rw-rw-r--. 1 ceph_user ceph_user 195 11月 30 16:45 ceph.conf
-rw-rw-r--. 1 ceph_user ceph_user 3166 11月 30 16:45 ceph-deploy-ceph.log
-rw-------. 1 ceph_user ceph_user 73 11月 30 16:45 ceph.mon.keyring
2.把 Ceph 配置檔案裡的預設副本數從 3 改成 2 ,這樣只有兩個 OSD 也可以達到 active + clean 狀態。把下面這行加入 [global]
段:
osd pool default size = 2
3.如果你有多個網絡卡,可以把 public network 寫入 Ceph 配置檔案的 [global] 段下。
public network = {ip-address}/{netmask}
4.安裝 Ceph
# 命令示例:ceph-deploy install {ceph-node} [{ceph-node} ...]
$ ceph-deploy install admin-node node1 node2 node3
報錯如下:
[ceph_deploy][ERROR ] RuntimeError: NoSectionError: No section: 'ceph'
解決辦法: yum remove -y ceph-release
把這個東西卸了,應該是這個的版本不相容。
ceph-deploy 將在各節點安裝 Ceph 。
注:如果你執行過 ceph-deploy purge ,你必須重新執行這一步來安裝 Ceph 。
5.配置初始 monitor(s)、並收集所有金鑰,完成上述操作後,當前目錄裡應該會出現這些金鑰環:
$ ceph-deploy mon create-initial
$ ll
總用量 540
-rw-------. 1 ceph_user ceph_user 113 11月 30 17:21 ceph.bootstrap-mds.keyring
-rw-------. 1 ceph_user ceph_user 113 11月 30 17:21 ceph.bootstrap-mgr.keyring
-rw-------. 1 ceph_user ceph_user 113 11月 30 17:21 ceph.bootstrap-osd.keyring
-rw-------. 1 ceph_user ceph_user 113 11月 30 17:21 ceph.bootstrap-rgw.keyring
-rw-------. 1 ceph_user ceph_user 151 11月 30 17:21 ceph.client.admin.keyring
-rw-rw-r--. 1 ceph_user ceph_user 220 11月 30 16:56 ceph.conf
-rw-rw-r--. 1 ceph_user ceph_user 273213 11月 30 17:21 ceph-deploy-ceph.log
-rw-------. 1 ceph_user ceph_user 73 11月 30 16:45 ceph.mon.keyring
只有在安裝 Hammer 或更高版時才會建立 bootstrap-rgw 金鑰環。
如果此步失敗並輸出類似於如下資訊 “Unable to find /etc/ceph/ceph.client.admin.keyring”,請確認 ceph.conf 中為 monitor 指定的 IP 是 Public IP,而不是 Private IP。
1.新增兩個 OSD 。
如何為 OSD 及其日誌使用獨立硬碟或分割槽,請參考 ceph-deploy osd 。http://docs.ceph.org.cn/rados/deployment/ceph-deploy-osd/
官網文件使用的是目錄,但是在實際操作的過程中,下一步的命令發生改變了,沒找到怎麼使用目錄來建立的,這裡採用裸盤的方式。
給node2和node3均新增一個20G的磁碟,也就是:/dev/vdb (根據實際情況來定)
然後,從管理節點執行 ceph-deploy 來準備 OSD 。
# 命令示例:ceph-deploy osd prepare {ceph-node}:/path/to/directory
# 這個命令廢棄了: ceph-deploy osd prepare node2:/var/local/osd0 node3:/var/local/osd1
# 使用裸磁碟的方式
$ ceph-deploy osd create --data /dev/vdb node2
$ ceph-deploy osd create --data /dev/vdb node3
最後,啟用 OSD 。
create 命令是依次執行 prepare 和 activate 命令的捷徑。
上一步執行過create了,表示的是已經啟用OSD了。
檢視詳情
$ ceph-deploy osd list node2
2.用 ceph-deploy 把配置檔案和 admin 金鑰拷貝到管理節點和 Ceph 節點,這樣你每次執行 Ceph 命令列時就無需指定 monitor 地址和 ceph.client.admin.keyring 了。
# 命令示例:ceph-deploy admin {admin-node} {ceph-node}
$ ceph-deploy admin admin-node node1 node2 node3
ceph-deploy 和本地管理主機( admin-node )通訊時,必須通過主機名可達。必要時可修改 /etc/hosts
,加入管理主機的名字。 (這一步在上一篇文章中已經做過了)
3.確保你對 ceph.client.admin.keyring 有正確的操作許可權。
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
4.建立mgr程序
$ ceph-deploy mgr create node1
若是不執行這一步,執行健康檢查提示如下
$ ceph health
HEALTH_WARN no active mgr
5.檢查叢集的健康狀況。
$ ceph health
等 peering 完成後,叢集應該達到 active + clean 狀態。