ceph 是一個将資料存儲在單一分布式計算機叢集上的開源軟體平台。當你計劃建構一個雲時,你首先需要決定如何實作你的存儲。開源的 ceph 是紅帽原生技術之一,它基于稱為 rados 的對象存儲系統,用一組網關 api 表示塊、檔案、和對象模式中的資料。由于它自身開源的特性,這種便攜存儲平台能在公有雲和私有雲上安裝和使用。ceph 叢集的拓撲結構是按照備份和資訊分布設計的,這種内在設計能提供資料完整性。它的設計目标就是容錯、通過正确配置能運作于商業硬體和一些更進階的系統。
ceph 能在任何 linux 發行版上安裝,但為了能正确運作,它需要最近的核心以及其它最新的庫。在這篇指南中,我們會使用最小化安裝的 centos-7.0。

<a></a>
<code>**ceph-storage**</code>
<code>os: centos linux 7 (core)</code>
<code>ram:1 gb</code>
<code>cpu:1 cpu</code>
<code>disk: 20</code>
<code>network: 45.79.136.163</code>
<code>fqdn: ceph-storage.linoxide.com</code>
<code></code>
<code>**ceph-node**</code>
<code>network: 45.79.171.138</code>
<code>fqdn: ceph-node.linoxide.com</code>
在安裝 ceph 存儲之前,我們要在每個節點上完成一些步驟。第一件事情就是確定每個節點的網絡已經配置好并且能互相通路。
配置 hosts
要在每個節點上配置 hosts 條目,要像下面這樣打開預設的 hosts 配置檔案(lctt 譯注:或者做相應的 dns 解析)。
<code># vi /etc/hosts</code>
<code>45.79.136.163 ceph-storage ceph-storage.linoxide.com</code>
<code>45.79.171.138 ceph-node ceph-node.linoxide.com</code>
安裝 vmware 工具
工作環境是 vmware 虛拟環境時,推薦你安裝它的 open vm 工具。你可以使用下面的指令安裝。
<code># yum install -y open-vm-tools</code>
配置防火牆
如果你正在使用啟用了防火牆的限制性環境,確定在你的 ceph 存儲管理節點和用戶端節點中開放了以下的端口。
你必須在你的 admin calamari 節點開放 80、2003、以及4505-4506 端口,并且允許通過 80 号端口通路到 ceph 或 calamari 管理節點,以便你網絡中的用戶端能通路 calamari web 使用者界面。
你可以使用下面的指令在 centos 7 中啟動并啟用防火牆。
<code># systemctl start firewalld</code>
<code># systemctl enable firewalld</code>
運作以下指令使 admin calamari 節點開放上面提到的端口。
<code># firewall-cmd --zone=public --add-port=80/tcp --permanent</code>
<code># firewall-cmd --zone=public --add-port=2003/tcp --permanent</code>
<code># firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent</code>
<code># firewall-cmd --reload</code>
在 ceph monitor 節點,你要在防火牆中允許通過以下端口。
<code># firewall-cmd --zone=public --add-port=6789/tcp --permanent</code>
然後允許以下預設端口清單,以便能和用戶端以及監控節點互動,并發送資料到其它 osd。
<code># firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent</code>
如果你工作在非生産環境,建議你停用防火牆以及 selinux 設定,在我們的測試環境中我們會停用防火牆以及 selinux。
<code># systemctl stop firewalld</code>
<code># systemctl disable firewalld</code>
系統更新
現在更新你的系統并重新開機使所需更改生效。
<code># yum update</code>
<code># shutdown -r 0</code>
現在我們會建立一個單獨的 sudo 使用者用于在每個節點安裝 ceph-deploy工具,并允許該使用者無密碼通路每個節點,因為它需要在 ceph 節點上安裝軟體和配置檔案而不會有輸入密碼提示。
運作下面的指令在 ceph-storage 主機上建立有獨立 home 目錄的新使用者。
<code>[root@ceph-storage ~]# useradd -d /home/ceph -m ceph</code>
<code>[root@ceph-storage ~]# passwd ceph</code>
節點中建立的每個使用者都要有 sudo 權限,你可以使用下面展示的指令賦予 sudo 權限。
<code>[root@ceph-storage ~]# echo "ceph all = (root) nopasswd:all" | sudo tee /etc/sudoers.d/ceph</code>
<code>ceph all = (root) nopasswd:all</code>
<code>[root@ceph-storage ~]# sudo chmod 0440 /etc/sudoers.d/ceph</code>
現在我們會在 ceph 管理節點生成 ssh 密鑰并把密鑰複制到每個 ceph 叢集節點。
在 ceph-node 運作下面的指令複制它的 ssh 密鑰到 ceph-storage。
<code>[root@ceph-node ~]# ssh-keygen</code>
<code>generating public/private rsa key pair.</code>
<code>enter file in which to save the key (/root/.ssh/id_rsa):</code>
<code>created directory '/root/.ssh'.</code>
<code>enter passphrase (empty for no passphrase):</code>
<code>enter same passphrase again:</code>
<code>your identification has been saved in /root/.ssh/id_rsa.</code>
<code>your public key has been saved in /root/.ssh/id_rsa.pub.</code>
<code>the key fingerprint is:</code>
<code>5b:*:*:*:*:*:*:*:*:*:c9 root@ceph-node</code>
<code>the key's randomart image is:</code>
<code>+--[ rsa 2048]----+</code>
<code>[root@ceph-node ~]# ssh-copy-id ceph@ceph-storage</code>
要配置 pid 數目的值,我們會使用下面的指令檢查預設的核心值。預設情況下,是一個小的最大線程數 32768。
如下圖所示通過編輯系統配置檔案配置該值為一個更大的數。
配置并驗證了所有網絡後,我們現在使用 ceph 使用者安裝 ceph-deploy。通過打開檔案檢查 hosts 條目(lctt 譯注:你也可以用 dns 解析來完成)。
<code># vim /etc/hosts</code>
<code>ceph-storage 45.79.136.163</code>
<code>ceph-node 45.79.171.138</code>
運作下面的指令添加它的庫。
<code># rpm -uhv http://ceph.com/rpm-giant/el7/noarch/ceph-release-1-0.el7.noarch.rpm</code>
或者建立一個新檔案并更新 ceph 庫參數,别忘了替換你目前的 release 和版本号。
<code>[root@ceph-storage ~]# vi /etc/yum.repos.d/ceph.repo</code>
<code>[ceph-noarch]</code>
<code>name=ceph noarch packages</code>
<code>baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch</code>
<code>enabled=1</code>
<code>gpgcheck=1</code>
<code>type=rpm-md</code>
<code>gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc</code>
之後更新你的系統并安裝 ceph-deploy 軟體包。
我們運作下面的指令以及 ceph-deploy 安裝指令來更新系統以及最新的 ceph 庫和其它軟體包。
<code>#yum update -y && yum install ceph-deploy -y</code>
使用下面的指令在 ceph 管理節點上建立一個目錄并進入新目錄,用于收集所有輸出檔案和日志。
<code># mkdir ~/ceph-cluster</code>
<code># cd ~/ceph-cluster</code>
<code># ceph-deploy new storage</code>
如果成功執行了上面的指令,你會看到它建立了配置檔案。
現在配置 ceph 預設的配置檔案,用任意編輯器打開它并在會影響你公共網絡的 global 參數下面添加以下兩行。
<code># vim ceph.conf</code>
<code>osd pool default size = 1</code>
<code>public network = 45.79.0.0/16</code>
現在我們準備在和 ceph 叢集關聯的每個節點上安裝 ceph。我們使用下面的指令在 ceph-storage 和 ceph-node 上安裝 ceph。
<code># ceph-deploy install ceph-node ceph-storage</code>
處理所有所需倉庫和安裝所需軟體包會需要一些時間。
當兩個節點上的 ceph 安裝過程都完成後,我們下一步會通過在相同節點上運作以下指令建立螢幕并收集密鑰。
<code># ceph-deploy mon create-initial</code>
現在我們會設定磁盤存儲,首先運作下面的指令列出你所有可用的磁盤。
<code># ceph-deploy disk list ceph-storage</code>
結果中會列出你存儲節點中使用的磁盤,你會用它們來建立 osd。讓我們運作以下指令,請使用你的磁盤名稱。
<code># ceph-deploy disk zap storage:sda</code>
<code># ceph-deploy disk zap storage:sdb</code>
為了最後完成 osd 配置,運作下面的指令配置日志磁盤以及資料磁盤。
<code># ceph-deploy osd prepare storage:sdb:/dev/sda</code>
<code># ceph-deploy osd activate storage:/dev/sdb1:/dev/sda1</code>
你需要在所有節點上運作相同的指令,它會清除你磁盤上的所有東西。之後為了叢集能運轉起來,我們需要使用以下指令從 ceph 管理節點複制不同的密鑰和配置檔案到所有相關節點。
<code># ceph-deploy admin ceph-node ceph-storage</code>
我們快完成了 ceph 叢集設定,讓我們在 ceph 管理節點上運作下面的指令檢查正在運作的 ceph 狀态。
<code># ceph status</code>
<code># ceph health</code>
<code>health_ok</code>
如果你在 ceph status 中沒有看到任何錯誤資訊,就意味着你成功地在 centos 7 上安裝了 ceph 存儲叢集。
在這篇詳細的文章中我們學習了如何使用兩台安裝了 centos 7 的虛拟機設定 ceph 存儲叢集,這能用于備份或者作為用于其它虛拟機的本地存儲。我們希望這篇文章能對你有所幫助。當你試着安裝的時候記得分享你的經驗。
本文來自雲栖社群合作夥伴“linux中國”,原文發表于2013-04-02.