ceph nautilus版本手動安裝


一、准備工作
測試環境:

vmware workstation15制作centos7虛擬機四台,分別命名為admin、node01、node02、node03.....(可安裝一台,其他克隆即可)。

四台機器,一台admin,其他三台為node01,node02和node03。node01、node02和node03均為兩塊硬盤,一塊安裝系統,另一塊做為osd。

測試環境都為一塊網卡一個網絡(實際環境分公共網絡public network和集群網絡cluster network)。

0、最小化安裝centos7,配置網絡連通性。(實際環境除了osd節點mon節點需要至少兩塊網卡)
# vi /etc/sysconfig/network-scripts/ifcfg-ens*
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.129.131
NETMASK=255.255.255.0
GATEWAY=192.168.129.2
DNS1=8.8.8.8

1、關閉防火牆牆
#systemctl stop firewalld
#systemctl disable firewalld

2、關閉selinux
# setenforce 0
#vi /etc/selinux/config
修改SELINUX=disabled
SELINUX=disabled
或者直接運行以下
#sed -i 's/=enforcing/=disabled/' /etc/selinux/config

3、設置時區,安裝ntp時間同步
設置時區
# timedatectl set-timezone Asia/Shanghai

安裝ntp。
#yum install ntp

時間同步對於整個集群十分重要,建議在集群中單獨設置一台ntp server,其他節點從該ntp server同步時間。
如admin設置為ntp server,其他從admin同步時間

admin:
#vi /etc/ntp.conf
#設置允許同步的網絡
restrict 192.168.129.0 mask 255.255.255.0 nomodify notrap
#設置上游時間服務器,修改server,不需要的前面加#號注釋掉
server cn.ntp.org.cn iburst

node端:
#vi /etc/ntp.conf
server admin_ip iburst
#systemctl start ntpd #開啟ntp
#systemctl enable ntpd #設置開機啟動
#ntpq -p #查看ntp同步情況

4、設置hostname
hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03

5、編輯/etc/hosts
vi /etc/hosts添加解析
192.168.129.130 admin
192.168.129.131 node01
192.168.129.132 node02
192.168.129.133 node03
並傳到其他節點去
#scp /etc/hosts admin:/etc/
#scp /etc/hosts node01:/etc/
#scp /etc/hosts node02:/etc/
#scp /etc/hosts node03:/etc/

6、用戶ssh免認證
#ssh-keygen
ssh-copy-id root@admin
ssh-copy-id root@node01
ssh-copy-id root@node02
ssh-copy-id root@node03
如果要全部相互免認證,則
#  vi ~/.ssh/config
Host *
StrictHostKeyChecking no
# cd ~/.ssh
scp authorized_keys config id_rsa admin:~/.ssh/
scp authorized_keys config id_rsa node01:~/.ssh/
scp authorized_keys config id_rsa node02:~/.ssh/
scp authorized_keys config id_rsa node03:~/.ssh/

7、添加repo源,選擇安裝rpm-nautilus版本
# yum -y install epel-release yum-plugin-priorities  https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm
#sed -i -e "s/enabled=1/enabled=1\npriority=1/g" /etc/yum.repos.d/ceph.repo

添加完畢查看/etc/yum.repos.d/ceph.repo,看版本是否正確,如有必要如加快速度可修改源,如在教育網可使用清華的源。

# more /etc/yum.repos.d/ceph.repo

#vi  /etc/yum.repos.d/ceph.repo

baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/$basearch

8、更新系統
如果必要給yum添加代理
#vi /etc/yum.conf
proxy=http://proxyip:port
proxy_username=name
proxy_password=passwd
#yum update –y

9、各節點安裝ceph
#yum -y install ceph ceph-radosgw
查看版本
[root@node01 ~]# ceph -v
ceph version 14.2.0 (3a54b2b6d167d4a2a19e003a705696d4fe619afc) nautilus (stable)

二、mon配置

整個集群都從一台mon節點開始。Ceph Monitor維護着展示集群狀態的各種圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變更的歷史信息(稱為 epoch )。實際環境一般需要三個mon來保證冗余和高可靠性。

1、登錄到node01,查看ceph目錄是否已經生成
# ls /etc/ceph
rbdmap

2、生成ceph配置文件
#touch /etc/ceph/ceph.conf

3、執行uuidgen命令,得到一個唯一的標識,作為ceph集群的ID
#uuidgen
62d31c7d-780f-40c3-9180-dbe1f7c5d508

4、手動配置ceph.conf
#vi /etc/ceph/ceph.conf

[global]
fsid = 62d31c7d-780f-40c3-9180-dbe1f7c5d508
mon initial members = node01
mon host = 192.168.129.131
public network = 192.168.129.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
#設置副本數
osd pool default size = 3
#設置最小副本數
osd pool default min size = 2
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
osd_mkfs_type = xfs
max mds = 5
mds max file size = 100000000000000
mds cache size = 1000000
#設置osd節點down后900s,把此osd節點逐出ceph集群,把之前映射到此節點的數據映射到其他節點。
mon osd down out interval = 900
[mon]
#把時鍾偏移設置成0.5s,默認是0.05s,由於ceph集群中存在異構PC,導致時鍾偏移總是大於0.05s,為了方便同步直接把時鍾偏移設置成0.5s
mon clock drift allowed = .50

5、為集群創建密鑰環、並生成監視器密鑰。
#ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

6、生成管理員密鑰環,生成 client.admin 用戶並加入密鑰環。
#sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'

7、生成一個引導-osd密鑰環,生成一個client.bootstrap-osd用戶並將用戶添加到密鑰環中
#sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd'

8、將生成的密鑰添加到ceph.mon.keyring
#sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
#sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring

9、使用主機名、主機IP地址(ES)和FSID生成monmap。把它保存成/tmp/monmap
monmaptool --create --add node01 192.168.129.131 --fsid 62d31c7d-780f-40c3-9180-dbe1f7c5d508 /tmp/monmap

10、創建一個默認的數據目錄
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node01

11、修改ceph.mon.keyring屬主和屬組為ceph
chown ceph.ceph /tmp/ceph.mon.keyring

12、初始化mon
sudo -u ceph ceph-mon --mkfs -i node01 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

*初始化完畢查看/var/lib/ceph/mon/ceph-node01下是否生成文件,如果沒有生成則是文件夾權限問題,需要將文件夾屬主改成ceph,以及ceph.mon.keyring屬主問題。

13、為了防止重新被安裝創建一個空的done文件
sudo touch /var/lib/ceph/mon/ceph-node01/done

14、啟動mon
#systemctl start ceph-mon@node01

15、查看狀態
# systemctl status ceph-mon@node01

16、設置開機啟動
# systemctl enable ceph-mon@node01

17、查看集群情況
[root@node01 ~]# ceph -s
cluster:
id: 62d31c7d-780f-40c3-9180-dbe1f7c5d508
health: HEALTH_WARN
1 monitors have not enabled msgr2
services:
mon: 1 daemons, quorum node01 (age 29m)
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
*存在health告警,啟用了msgr2后會消失。
# ceph mon enable-msgr2
然后重啟服務
# systemctl restart ceph-mon@node01

18、將/etc/ceph下文件拷貝到其他集群主機
# scp /etc/ceph/* root@node02:/etc/ceph/
# scp /etc/ceph/* root@node03:/etc/ceph/
# scp /etc/ceph/* root@admin:/etc/ceph/
拷貝過去以后其他節點也就可以執行ceph -s查看集群情況了。
第一次安裝如果出現key錯誤就重新開始。

 

添加其他mon
1、登錄新監視器主機創建默認目錄
ssh node02
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-node02

2、在臨時目錄獲取監視器密鑰環
# ceph auth get mon. -o /tmp/ceph.mon.keyring

3、獲取監視器運行圖
# ceph mon getmap -o /tmp/ceph.mon.map

4、修改ceph.mon.keyring屬主和屬組為ceph
chown ceph.ceph /tmp/ceph.mon.keyring

5、初始化mon
sudo -u ceph ceph-mon --mkfs -i node02 --monmap /tmp/ceph.mon.map --keyring /tmp/ceph.mon.keyring

6、為了防止重新被安裝創建一個空的done文件
# sudo touch /var/lib/ceph/mon/ceph-node02/done

7、啟動服務,它會自動加入集群
# systemctl start ceph-mon@node02
# systemctl status ceph-mon@node02
# systemctl enable ceph-mon@node02

9、查看集群
ceph -s

如存在警告1 monitors have not enabled msgr2,則:
#  ceph mon stat
會看到node01沒有啟用v2,
登錄到node01上運行:
# ceph mon enable-msgr2
然后重啟服務
# systemctl restart ceph-mon@node01

如果因添加node2導致集群出差,需要到node01去先修改配置,再從步驟1開始添加新的mon,node01步驟如下:
# systemctl stop ceph-mon@node01
# monmaptool /tmp/monmap --rm node02
# ceph-mon -i node01 --inject-monmap /tmp/monmap
# systemctl start ceph-mon@node01

 

三、配置OSD
Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的復制、恢復、回填、再均衡,並通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集群設定為有2個副本時,至少需要2個 OSD 守護進程,集群才能達到 active+clean 狀態( Ceph 默認有3個副本,但你可以調整副本數)。一般至少需要3個osd來保證冗余和可靠性。

准備磁盤,如sdb。
精簡型1、BLUESTORE方式

# ssh node01
# ls /dev/sd*
#sudo ceph-volume lvm create --data /dev/sdb
#sudo ceph-volume lvm list
顯示osd.num,num后面會用到。
# systemctl start ceph-osd@0
# systemctl status ceph-osd@0
# systemctl enable ceph-osd@0

node2、node3上也創建
其他節點需要提前導出/var/lib/ceph/bootstrap-osd/ceph.keyring,或從node01上拷貝。
#ssh node02
# ls /dev/sd*
# ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring
#sudo ceph-volume lvm create --data /dev/sdb
#sudo ceph-volume lvm list
顯示osd.num,num后面會用到。
# systemctl start ceph-osd@1
# systemctl status ceph-osd@1
# systemctl enable ceph-osd@1

[root@admin ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.05576 root default
-3 0.01859 host node01
0 hdd 0.01859 osd.0 up 1.00000 1.00000
-5 0.01859 host node02
1 hdd 0.01859 osd.1 up 1.00000 1.00000
-7 0.01859 host node03
2 hdd 0.01859 osd.2 up 1.00000 1.00000

精簡型2、FILESTORE方式

按照官方說明BLUESTORE方式效率比FILESTORE方式效率更高,對SSD優化良好

四、安裝mgr
在admin上:
1、創建認證key
#ceph auth get-or-create mgr.admin mon 'allow profile mgr' osd 'allow *' mds 'allow *'
2、創建目錄
#sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-admin/
3、導出key到指定目錄
# ceph auth get mgr.admin -o /var/lib/ceph/mgr/ceph-admin/keyring
4、啟動服務
# systemctl start ceph-mgr@admin
# systemctl status ceph-mgr@admin
# systemctl enable ceph-mgr@admin
[root@admin ~]# ceph -s
cluster:
id: 0affd701-e929-48e8-809d-c8295395ebaa
health: HEALTH_OK
services:
mon: 3 daemons, quorum node01,node02,node03 (age 7m)
mgr: admin(active, since 103s)
osd: 3 osds: 3 up (since 23m), 3 in (since 23m)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 42 GiB / 45 GiB avail
pgs:
在其他節點上安裝mgr:
#ceph auth get-or-create mgr.$name mon 'allow profile mgr' osd 'allow *' mds 'allow *'
#sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-$name/
# ceph auth get mgr.$name -o /var/lib/ceph/mgr/ceph-$name/keyring
# systemctl start ceph-mgr@$name
# systemctl status ceph-mgr@$name
# systemctl enable ceph-mgr@$name
如在node01上安裝后:
[root@node01 ~]# ceph -s
cluster:
id: 0affd701-e929-48e8-809d-c8295395ebaa
health: HEALTH_OK
services:
mon: 3 daemons, quorum node01,node02,node03 (age 10m)
mgr: admin(active, since 4m), standbys: node01
osd: 3 osds: 3 up (since 26m), 3 in (since 26m)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 42 GiB / 45 GiB avail

 

mgr安裝完畢后會看到存儲信息。集群基礎就算安裝完畢。

整個手動安裝過程容易出錯的有兩種情況:一、文件或文件夾權限是root而不是ceph;二、認證密鑰不一致,keyring要和ceph auth list中的一樣。

 

五、塊設備使用
在使用ceph塊設備時要用到rbd工具,需要rbd池,默認沒有rbd池,
要手工在osd中創建
# ceph osd lspools
# ceph osd pool create rbd 128
# ceph osd lspools #再次查看
# rbd pool init rbd #初始化rbd pool
創建一個10G的盤disk01
# rbd create disk01 --size 10G --image-feature layering
查看
# rbd ls -l
映射到本地
# sudo rbd map disk01
/dev/rbd0 #映射成了rbd0,現在就可以像使用本地硬盤一樣使用了
# rbd showmapped #查看映射情況
# sudo mkfs.xfs /dev/rbd0 #格式化該硬盤
# sudo mount /dev/rbd0 /mnt #掛載硬盤
# df -kh #查看掛載情況
/dev/rbd0 10G 33M 10G 1% /mnt

六、文件系統使用
首先配置MDS
1、創建目錄
# sudo -u ceph mkdir /var/lib/ceph/mds/ceph-node01
2、生成mds.node01密鑰
#ceph auth get-or-create mds.node01 osd "allow rwx" mds "allow" mon "allow profile mds"
3、導出mds密鑰
#ceph auth get mds.node01 -o /var/lib/ceph/mds/ceph-node01/keyring

​4、在ceph.conf中添加配置
[mds.{id}]
host = {id}

5、啟動服務
systemctl start ceph-mds@node01
systemctl status ceph-mds@node01
systemctl enable ceph-mds@node01

創建池
#ceph osd pool create cephfs_data 128
#ceph osd pool create cephfs_metadata 128
#ceph fs new cephfs cephfs_metadata cephfs_data
#ceph fs ls
#ceph mds stat

客戶端mount cephFS,我們在admin上測試
#yum -y install ceph-fuse
#ssh node01 "sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key
#chmod 600 admin.key
#mount -t ceph node01:6789:/ /mnt -o name=admin,secretfile=admin.key
# df -hT #查看掛載情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM