2016年10月21日 星期五

在 CentOS7/RHEL7 上,安裝 Ceph Storage 系統

設定提要:
  • 使用 Ceph Hammer 套件來架設!
  • 先暫停 firewalld 服務,以利架設過程!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install centos-release-ceph-hammer
    #yum -y install ceph-deploy
    
  2. 建立 Ceph 設定目錄:
    #mkdir ~/ceph-deploy
    
  3. 建立 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #ceph-deploy new serverc serverd servere
    
    (若無架設 DNS Server,請預先在 /etc/hosts 建立相關主機設定,並複至到其他主機)
    192.168.0.1 serverc serverc.example.com
    192.168.0.2 serverd serverd.example.com
    192.168.0.3 servere servere.example.com
    
    
  4. 建立 ssh key ,並複製到其他主機:
    #ssh-keygen -t rsa
    #ssh-copy-id root@serverd
    #ssh-copy-id root@servere
    
  5. 修改 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #vim ceph.conf
    (增加下列設定:)
    osd journal size = 1024
    osd pool default size = 2
    osd pool default min size = 1
    public network = 192.168.0.0/24
    [mon]
    mon osd allow primary affinity = 1
    
  6. 安裝 Ceph 至各主機上:
    #ceph-deploy install serverc serverd servere
    
  7. 在 ServerC 上,安裝 Ceph 監視器,監視各主機運作:
    #ceph-deploy mon create serverc serverd servere
    
  8. 在 ServerC 上,收集 Ceph 監視器金鑰:
    #ceph-deploy gatherkeys serverc
    
  9. 在 ServerC 上,查詢 Ceph Cluster 狀態:
    #ceph -s
    
  10. 在 ServerC 上,查詢 ServerC 的硬碟空間狀態:
    #ceph-deploy disk list serverc
    
  11. 使用各 Server 上的 vdb 的硬碟空間:
    #cd ~/ceph-deploy
    #ceph-deploy osd create serverc:vdb serverd:vdb servere:vdb
    
    (做完後,記得要重開機!)
    
  12. 在 ServerC 上,再次查詢 Ceph Cluster 狀態:
    #ceph -s
    
  13. 在 ServerC 上,查詢 Ceph Cluster 狀態的方式:
    #ceph -w
    #service ceph status mon
    #service ceph status osd
    #ps -ef | grep ceph-osd
    #service ceph stop osd
    #ceph osd tree
    #service ceph start osd
    #ceph osd tree
    
  14. 如果修改了 ceph-deploy 下的 ceph.conf 檔案,可重新再配置 ceph :
    #vim ~/ceph-deploy/ceph.conf
    (加入下列幾行:)
    [mon]
    mon_clock_drift_allowed = 1
    mon_clock_drift_warn_backoff = 30
    
    (開啟重新配置)
    #ceph-deploy --overwrite-conf config push serverc serverd servere
    #service ceph restart mon
    #ssh serverd "service ceph restart mon"
    #ssh servere "service ceph restart mon"
    

RADOS 驗證:
  1. 在 ServerC 上,建立一個小檔案,並上載到 RADOS server:
    #dd if=/dev/zero of=/tmp/test bs=10M count=1
    #rados mkpool data
    #rados -p data put test1 /tmp/test
    #rados df
    
    (再多推一些東西上去:)
    #rados -p data put test2 /tmp/test
    #rados -p data put test3 /tmp/test
    #rados df
    
  2. 刪除 RADOS server 內的資料:
    #rados -p data rm test1
    #rados -p data rm test2
    #rados -p data rm test3
    

CephX 的驗證機制:
  1. 在 ServerC 上,使用 Ceph 的監看模式,查看CephX上的ID與金鑰:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin/keyring -w
    
  2. 使用 rbd 指令,建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring create --size 1024 testimg
    
  3. 使用 rbd 指令,移除先前建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring rm testimg
    
  4. 可以利用 Shell 指令,指定一部份的 rbd 指令:
    #CEPH_ARGS='--id user --keyring /etc/ceph/ceph.client.user.keyring'
    
  5. 增加一個使用者 rhuser 到 Ceph 內:
    ceph auth get-or-create client.rhuser mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.rhuser.keyring
    
  6. 查詢使用者相關資料與權限:
    #ceph auth list
    
  7. 修訂使用者 rhuser 相關資料與權限:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin.keyring auth caps client.rhuser osd 'allow * pool=data' mon 'allow *'