ceph nautilus版本手动安装

怎甘沉沦 提交于 2020-03-05 07:22:47

一、准备工作
测试环境:

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 #查看挂载情况

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!