1. 程式人生 > >Centos7上部署Ceph儲存叢集以及CephFS的安裝

Centos7上部署Ceph儲存叢集以及CephFS的安裝

Ceph已然成為開源社群極為火爆的分散式儲存開源方案,最近需要調研Openstack與Ceph的融合方案,因此開始瞭解Ceph,當然從搭建Ceph叢集開始。

        我搭建機器使用了6臺虛擬機器,包括一個admin節點,一個monitor節點,一個mds節點,兩個osd節點,一個client節點。機器的配置是:

> lsb_release -a

  1. LSB Version:    :core-4.1-amd64:core-4.1-noarch  
  2. Distributor ID: CentOS  
  3. Description:    CentOS Linux release 7.1.1503 (Core)   
  4. Release:    7.1.1503
  5. Codename:   Core  
> uname -r
  1. 3.10.0-229.el7.x86_64  
下面開始逐步介紹。0.叢集安裝前的準備工作a)檔案系統採用官方推薦的xfs(brtfs)
  1. >df  -T  
  2. >umount -l /data(去掉掛載點)  
  3. >mkfs.xfs -f /dev/vdb(強制轉換檔案系統)  
  4. >mount /dev/vdb /data(重新掛載)  
b)規範系統主機名
  1. > hostnamectl set-hostname {name}  
c)新增hosts檔案實現叢集主機名與主機名之間相互能夠解析(host 檔案新增主機名不要使用fqdn方式)

  1. > lsb_release -a   
  2. > uname -r  

0.1 安裝ceph部署工具:ceph-deploy
把軟體包源加入軟體倉庫。用文字編輯器建立一個YUM(Yellowing Updater,Modified)庫檔案,其路徑/etc/yum.repos.d/ceph.repo。例如:> sudo vim /etc/yum.repos.d/ceph.repo把如下內容粘帖進去,用 Ceph 的最新主穩定版名字替換{ceph-stable-release}(如firefly),用你的Linux發行版名字替換{distro}(如el6為 CentOS 6 、el7為 CentOS 7 、
rhel6為 Red Hat 6.5 、rhel7為 Red Hat 7 、fc19是 Fedora 19 、fc20是 Fedora 20 )。最後儲存到/etc/yum.repos.d/ceph.repo檔案中。
  1. [ceph-noarch]  
  2. name=Ceph noarch packages  
  3. baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch   
  4. enabled=1
  5. gpgcheck=1
  6. type=rpm-md  
  7. gpgkey=https://download.ceph.com/keys/release.asc  
更新軟體庫並安裝ceph-deploy:
  1. > sudo yum update && sudo yum install ceph-deploy  

0.2 每臺 ssh-copy-id 完成這些伺服器之間免ssh密碼登入;

注:很多資料說是用ssh-copy-id,筆者嘗試並不work,就將admin的key新增到其他機器上去即可。

0.3 配置ntp服務
  1. # yum -y install ntp ntpdate ntp-doc
  2. # ntpdate 0.us.pool.ntp.org
  3. # hwclock --systohc
  4. # systemctl enable ntpd.service
  5. # systemctl start ntpd.service

0.4 關閉防火牆或者開放 6789/6800~6900埠、關閉SELINUX
  1. # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  2. # setenforce 0
開啟 Ceph 需要的埠
  1. # yum -y install firewalld
  2. # firewall-cmd --zone=public --add-port=6789/tcp --permanent
  3. # firewall-cmd --zone=public --add-port=6800-7100/tcp --permanent
  4. # firewall-cmd --reload

1.叢集角色分配:
  1. 10.221.83.246   ceph-adm-node  
  2. 10.221.83.247   ceph-mon-node  
  3. 10.221.83.248   ceph-mds-node  
  4. 10.221.83.249   ceph-osd-node1  
  5. 10.221.83.250   ceph-osd-node2  
  6. 10.221.83.251   ceph-client-node  


2.部署monitor服務2.1 建立目錄
  1. mkdir  -p  ~/my-cluster  
  2. cd  ~/my-cluster  
hints:ceph-deploy會把檔案輸出到當前目錄,所以請確保在此目錄下執行ceph-deploy2.2 建立monitor節點:
  1. >ceph-deploy new  ceph-mon-node  
hints當前目錄下ls會有一個Ceph配置檔案、一個monitor金鑰環和一個日誌檔案>ceph.conf >ceph.log >ceph.mon.keyring2.3 修改副本數把Ceph配置檔案的預設副本數從3改成2,這樣只有兩個osd也能達到active+clean狀態,把下面這行加入到[global]段:
  1. > osd pool default size = 2
2.4 在所有節點安裝ceph
  1. >ceph-deploy install ceph-adm-node ceph-mon-node ceph-mds-node ceph-osd-node1 ceph-osd-node2 ceph-client-node  
2.5 安裝ceph monitor
  1. >ceph-deploy mon create ceph-mon-node  

解決方法:通過"hostnamectl set-hostname {name}"命令將所有主機名設定成與/etc/hosts裡面對應的主機名一致。2.6 收集各個節點的keyring檔案
  1. >ceph-deploy gatherkeys ceph-mon-node  
3.部署osd服務3.1 新增osd節點(所有osd節點執行)
  1. ssh ceph-osd-node{id}  
  2. mkdir -p /var/local/osd{id}  
  3. exit  
3.2 啟用osd
  1. #建立osd
  2. ceph-deploy osd prepare ceph-osd-node1:/var/local/osd1  ceph-osd-node2:/var/local/osd2   
  3. #啟用osd
  4. ceph-deploy osd activate ceph-osd-node1:/var/local/osd1 ceph-osd-node2:/var/local/osd2   

prepare->activate會出現上述問題,主要問題是:根本就沒有命令:systemctl enable [email protected] 應該是:systemctl status/start [email protected]解決方案,直接create來代替prepare和activate命令:
  1. ceph-deploy osd create ceph-osd-node1:/var/local/osd1 ceph-osd-node2:/var/local/osd2   

檢視狀態ceph-deploy osd list ceph-osd-node1 ceph-osd-node2
  1. [ceph-osd-node1][INFO  ] Running command: /usr/sbin/ceph-disk list  
  2. [ceph-osd-node1][INFO  ] ----------------------------------------  
  3. [ceph-osd-node1][INFO  ] ceph-0
  4. [ceph-osd-node1][INFO  ] ----------------------------------------  
  5. [ceph-osd-node1][INFO  ] Path           /var/lib/ceph/osd/ceph-0
  6. [ceph-osd-node1][INFO  ] ID             0
  7. [ceph-osd-node1][INFO  ] Name           osd.0
  8. [ceph-osd-node1][INFO  ] Status         up  
  9. [ceph-osd-node1][INFO  ] Reweight       1.0
  10. [ceph-osd-node1][INFO  ] Active         ok  
  11. [ceph-osd-node1][INFO  ] Magic          ceph osd volume v026  
  12. [ceph-osd-node1][INFO  ] Whoami         0
  13. [ceph-osd-node1][INFO  ] Journal path   /var/local/osd1/journal  
  14. [ceph-osd-node1][INFO  ] ----------------------------------------  
  1. [ceph-osd-node2][INFO  ] Running command: /usr/sbin/ceph-disk list  
  2. [ceph-osd-node2][INFO  ] ----------------------------------------  
  3. [ceph-osd-node2][INFO  ] ceph-1
  4. [ceph-osd-node2][INFO  ] ----------------------------------------  
  5. [ceph-osd-node2][INFO  ] Path           /var/lib/ceph/osd/ceph-1
  6. [ceph-osd-node2][INFO  ] ID             1
  7. [ceph-osd-node2][INFO  ] Name           osd.1
  8. [ceph-osd-node2][INFO  ] Status         up  
  9. [ceph-osd-node2][INFO  ] Reweight       1.0
  10. [ceph-osd-node2][INFO  ] Active         ok  
  11. [ceph-osd-node2][INFO  ] Magic          ceph osd volume v026  
  12. [ceph-osd-node2][INFO  ] Whoami         1
  13. [ceph-osd-node2][INFO  ] Journal path   /var/local/osd2/journal  
  14. [ceph-osd-node2][INFO  ] ----------------------------------------  
3.3 統一配置用ceph-deploy把配置檔案和admin金鑰拷貝到管理節點和ceph節點,這樣每次執行Ceph命令列時就無需指定monitor地址和ceph.client.admin.keyring了
  1. > ceph-deploy admin ceph-*(all ceph node)  
  2. > 例如:ceph-deploy admin ceph-osd-node1 ceph-osd-node2 ceph-mon-node ceph-mds-node ceph-client-node  
3.4 修改ceph.client.admin.keyring許可權:>chmod +r /etc/ceph/ceph.client.admin.keyring3.5 檢查是否成功:> 將keyring檔案移動到到/etc/ceph下面:mv *.keyring /etc/ceph> ceph health等peering完成後,叢集應該達到active+clean狀態。3.6 檢視osd狀態> ceph-disk activate-all4.部署msd服務
  1. > ceph-deploy mds create ceph-mds-node  
報錯:
原因在mds機器ceph-mds-node上面沒有找到[email protected]解決方案在ceph-mds-node機器上:cp [email protected][email protected]
5.叢集驗證5.1 驗證mds節點> ps -ef | grep mds> ceph mds stat
> ceph mds dump5.2 驗證mon節點> ps -ef | grep mon5.3 驗證osd節點> ps -ef | grep osd5.4 叢集狀態> ceph -s
以上基本上完成了ceph儲存叢集的搭建,那麼現在就需要進一步對特定的儲存方式進行配置。
6.建立ceph檔案系統6.1 在管理節點,通過ceph-deploy把ceph安裝到ceph-client節點上
  1. > ceph-deploy install ceph-client-node  
建立之前
  1. > ceph osd pool create cephfs_data <pg_num>  
  2. > ceph osd pool create cephfs_metadata <pg_num>  
  3. > ceph fd new <fs_name> cephfs_metadata cephfs_data  
其中:<pg_num> = 128 , <fs_name> = cephfs建立之後> ceph fs ls
> ceph mds stat
> ceph -s
7.掛載ceph檔案系統