1. 程式人生 > 其它 >安裝ceph (快速) 步驟二:儲存叢集

安裝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 狀態。