1. 程式人生 > >【Ceph學習之一】Centos7上部署Ceph儲存叢集以及CephFS的安裝

【Ceph學習之一】Centos7上部署Ceph儲存叢集以及CephFS的安裝

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

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

> lsb_release -a

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.1.1503 (Core) 
Release:	7.1.1503
Codename:	Core
> uname -r
3.10.0-229.el7.x86_64
下面開始逐步介紹。 0.叢集安裝前的準備工作 a)檔案系統採用官方推薦的xfs(brtfs)
>df  -T
>umount -l /data(去掉掛載點)
>mkfs.xfs -f /dev/vdb(強制轉換檔案系統)
>mount /dev/vdb /data(重新掛載)
b)規範系統主機名
> hostnamectl set-hostname {name}
c)新增hosts檔案實現叢集主機名與主機名之間相互能夠解析(host 檔案新增主機名不要使用fqdn方式)
> lsb_release -a 
> 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檔案中。
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-{ceph-release}/{distro}/noarch 
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
更新軟體庫並安裝ceph-deploy:
> sudo yum update && sudo yum install ceph-deploy

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

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

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

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

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


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

解決方法:通過"hostnamectl set-hostname {name}"命令將所有主機名設定成與/etc/hosts裡面對應的主機名一致。 2.6 收集各個節點的keyring檔案
>ceph-deploy gatherkeys ceph-mon-node
3.部署osd服務 3.1 新增osd節點(所有osd節點執行)
ssh ceph-osd-node{id}
mkdir -p /var/local/osd{id}
exit
3.2 啟用osd
#建立osd
ceph-deploy osd prepare ceph-osd-node1:/var/local/osd1  ceph-osd-node2:/var/local/osd2 
#啟用osd
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命令:
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
[ceph-osd-node1][INFO  ] Running command: /usr/sbin/ceph-disk list
[ceph-osd-node1][INFO  ] ----------------------------------------
[ceph-osd-node1][INFO  ] ceph-0
[ceph-osd-node1][INFO  ] ----------------------------------------
[ceph-osd-node1][INFO  ] Path           /var/lib/ceph/osd/ceph-0
[ceph-osd-node1][INFO  ] ID             0
[ceph-osd-node1][INFO  ] Name           osd.0
[ceph-osd-node1][INFO  ] Status         up
[ceph-osd-node1][INFO  ] Reweight       1.0
[ceph-osd-node1][INFO  ] Active         ok
[ceph-osd-node1][INFO  ] Magic          ceph osd volume v026
[ceph-osd-node1][INFO  ] Whoami         0
[ceph-osd-node1][INFO  ] Journal path   /var/local/osd1/journal
[ceph-osd-node1][INFO  ] ----------------------------------------
[ceph-osd-node2][INFO  ] Running command: /usr/sbin/ceph-disk list
[ceph-osd-node2][INFO  ] ----------------------------------------
[ceph-osd-node2][INFO  ] ceph-1
[ceph-osd-node2][INFO  ] ----------------------------------------
[ceph-osd-node2][INFO  ] Path           /var/lib/ceph/osd/ceph-1
[ceph-osd-node2][INFO  ] ID             1
[ceph-osd-node2][INFO  ] Name           osd.1
[ceph-osd-node2][INFO  ] Status         up
[ceph-osd-node2][INFO  ] Reweight       1.0
[ceph-osd-node2][INFO  ] Active         ok
[ceph-osd-node2][INFO  ] Magic          ceph osd volume v026
[ceph-osd-node2][INFO  ] Whoami         1
[ceph-osd-node2][INFO  ] Journal path   /var/local/osd2/journal
[ceph-osd-node2][INFO  ] ----------------------------------------
3.3 統一配置用ceph-deploy把配置檔案和admin金鑰拷貝到管理節點和ceph節點,這樣每次執行Ceph命令列時就無需指定monitor地址和ceph.client.admin.keyring了
> ceph-deploy admin ceph-*(all ceph node)
> 例如: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.keyring 3.5 檢查是否成功: > 將keyring檔案移動到到/etc/ceph下面:mv *.keyring /etc/ceph > ceph health 等peering完成後,叢集應該達到active+clean狀態。 3.6 檢視osd狀態 > ceph-disk activate-all 4.部署msd服務
> 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 dump 5.2 驗證mon節點 > ps -ef | grep mon 5.3 驗證osd節點 > ps -ef | grep osd 5.4 叢集狀態 > ceph -s
以上基本上完成了ceph儲存叢集的搭建,那麼現在就需要進一步對特定的儲存方式進行配置。
6.建立ceph檔案系統 6.1 在管理節點,通過ceph-deploy把ceph安裝到ceph-client節點上
> ceph-deploy install ceph-client-node
建立之前
> ceph osd pool create cephfs_data <pg_num>
> ceph osd pool create cephfs_metadata <pg_num>
> 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檔案系統 7.0 在管理節點使用ceph-deploy拷貝ceph配置檔案以及ceph.client.admin.keyring到ceph-client-node上面:
>ceph-deploy admin ceph-client-node
修改keyring檔案許可權:
> sudo chmod +r /etc/ceph/ceph.client.admin.keyring
monitor ip:10.221.83.247 7.1  核心驅動掛載Ceph檔案系統 7.1.1 建立掛載點 > sudo mkdir -p /mnt/mycephfs1 7.1.2 儲存金鑰cat /etc/ceph/ceph.client.admin.keyring  將key對應的值複製下來儲存到檔案:/etc/ceph/admin.secret中。 7.1.3 掛載 sudo mount -t ceph 10.221.83.247:6789:/  /mnt/mycephfs1 -o name=admin,secretfile=/etc/ceph/admin.secret

7.1.4 取消掛載 > sudo umount -l /mnt/mycephfs1 7.2 使用者控制元件掛載Ceph檔案系統 7.2.1 建立掛載點
> sudo mkdir -p /mnt/mycephfs2
7.2.2 安裝ceph-fuse
> sudo yum install -y ceph-fuse
7.2.3 掛載
> sudo ceph-fuse -m 10.221.83.247:6789  /mnt/mycephfs2
7.2.4 取消掛載
> fusermount -u /mnt/mycephfs2/

其他: 清理機器上的ceph相關配置: 停止所有程序:sudo stop ceph-all 解除安裝所有ceph程式:ceph-deploy uninstall [{ceph-node}] 刪除ceph相關的安裝包:ceph-deploy purge {ceph-node} [{ceph-data}] 刪除ceph相關的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}] 刪除key:ceph-deploy forgetkeys 解除安裝ceph-deploy管理: yum -y remove ceph-deploy

Author:憶之獨秀

Email:[email protected]