centos7安装ceph集群

部署前提

关闭SELinux
关闭firewalld,并禁止开机自启
禁止开机自启
四台虚拟机个准备2块100G的硬盘 共四个节点

192.168.10.152  ceph-mon1
192.168.10.153  ceph-mon2
192.168.10.154  ceph-mon3
192.168.10.158  ceph-osd4

在各个服务器的/etc/hosts上加上对应的ip.在管理节点上做各节点的免密登陆
在本文档中,使用的是ceph-mon1节点作为管理节点

ssh-keygen -t rsa -P ''

免密登录

ssh-copy-id ceph-mon1
ssh-copy-id ceph-mon2
ssh-copy-id ceph-mon3
ssh-copy-id ceph-osd4

Ceph-Deploy

ceph-deploy应该部署在专用的节点,也就是管理节点AdminHost上。
ceph-deploy无法处理客户端工具,如果你需要使用Ceph集群,需要自己安装和配置客户端,这个客户端可能是一个内核模块(librbd),也可能只是一个命令行工具。

集群拓扑和网络

没有区分Ceph集群内有流量

192.168.10.152 ceph-mon1
192.168.10.153 ceph-mon2
192.168.10.154 ceph-mon3
192.168.10.158 ceph-osd4

生产环境实现高可用性所推荐的节点数量:

Ceph-Mon:3个+
Ceph-Mgr:2个+
Ceph-Mds:2个+

yum源和初始化准备

安装过程中尽量使用阿里云的源,请事先在所有节点上配置好阿里云的ceph源

#vi /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

各节点cephadm用户添加sudo权限

useradd cephadm
echo '111111' | passwd --stdin cephadm 
echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm
chmod 0440 /etc/sudoers.d/cephadm

在管理节点上以cephadm用户的身份来做各节点ssh免密登录

su - cephadm
ssh-keygen -t rsa -P ''
ssh-copy-id cephadm@ceph-mon1
ssh-copy-id cephadm@ceph-mon2
ssh-copy-id cephadm@ceph-mon3
ssh-copy-id cephadm@ceph-osd4

yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm -f /etc/yum.repos.d/dl.fedoraproject.org*

#这一步非常重要,如果跳过这一步,直接进行ceph的安装,那么会报如下的错误:
Error: Package: 1:ceph-common-10.2.10-0.el7.x86_64 (Ceph)
          Requires: libbabeltrace.so.1()(64bit)
Error: Package: 1:librados2-10.2.10-0.el7.x86_64 (Ceph)
          Requires: liblttng-ust.so.0()(64bit)
Error: Package: 1:librgw2-10.2.10-0.el7.x86_64 (Ceph)
          Requires: libfcgi.so.0()(64bit)
Error: Package: 1:librbd1-10.2.10-0.el7.x86_64 (Ceph)
          Requires: liblttng-ust.so.0()(64bit)
Error: Package: 1:ceph-common-10.2.10-0.el7.x86_64 (Ceph)
          Requires: libbabeltrace-ctf.so.1()(64bit)

最后一步,安装Ceph

yum -y install ceph-deploy ceph-common 

管理节点以cephadm用户身份在家目录建立ceph-cluster目录

su - cephadm
mkdir ceph-cluster

切换至ceph-cluster目录

cd ceph-cluster

Mon

在管理节点以cephadm用户运行 想搞3个的话 这里写全部mon节点

ceph-deploy new ceph-mon1

然后在所有节点——mon、mgr、osd都要安装

yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm -f /etc/yum.repos.d/dl.fedoraproject.org*
yum -y install ceph-deploy ceph-common 

在管理节点以cephadm用户运行

cd ceph-cluster
ceph-deploy install --no-adjust-repos ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4

centos7安装ceph集群_第1张图片

在管理节点以cephadm用户运行

ceph-deploy mon create-initial

这一步其实是在生成keyring文件
centos7安装ceph集群_第2张图片
在管理节点以cephadm用户运行

ceph-deploy admin ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4

将配置和client.admin秘钥环推送到远程主机。
每次更改ceph的配置文件,都可以用这个命令推送到所有节点上
centos7安装ceph集群_第3张图片
在所有节点以root的身份运行

setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring 

ceph.client.admin.keyring文件是 ceph命令行 所需要使用的keyring文件
不管哪个节点,只要需要使用cephadm用户执行命令行工具,这个文件就必须要让cephadm用户拥有访问权限,就必须执行这一步
这一步如果不做,ceph命令是无法在非sudo环境执行的。

centos7安装ceph集群_第4张图片

Mgr

Ceph必须要有一个mgr节点,所以我们在管理节点执行:

su - cephadm
cd ceph-cluster

ceph-deploy mgr create ceph-mon1

centos7安装ceph集群_第5张图片

执行完成之后,在管理节点查看集群的健康状态,不过,这一步同样需要/etc/ceph/ceph.client.admin.keyring文件

su - cephadm
cd 
sudo cp ceph-cluster/{ceph.client.admin.keyring,ceph.conf} /etc/ceph/

在这里插入图片描述
ceph -s
centos7安装ceph集群_第6张图片

osd

列出osd节点上的所有可用磁盘

su - cephadm
cd ~/ceph-cluster/
ceph-deploy disk list ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4

centos7安装ceph集群_第7张图片
#要以cephadm用户在~/ceph-cluster/目录下执行 我这边的用来做存储的挂载盘都是dev/sdb 可以通过lsblk查看
清空osd节点上用来作为osd设备的磁盘

ceph-deploy disk zap ceph-mon1 /dev/sdb 
ceph-deploy disk zap ceph-mon2 /dev/sdb 
ceph-deploy disk zap ceph-mon3 /dev/sdb 
ceph-deploy disk zap ceph-osd4 /dev/sdb 
#两块盘就ceph-deploy disk zap ceph-osd4 /dev/sdb /dev/sdc

注意,这里其实是在执行dd命令,执行错了就麻烦打了,全盘清空。
centos7安装ceph集群_第8张图片

创建OSD

ceph-deploy osd create ceph-mon1 --data /dev/sdb
ceph-deploy osd create ceph-mon2 --data /dev/sdb
ceph-deploy osd create ceph-mon3 --data /dev/sdb
ceph-deploy osd create ceph-osd4 --data /dev/sdb

centos7安装ceph集群_第9张图片

查看集群状态 显示多了400G空间

ceph -s

centos7安装ceph集群_第10张图片
切回root 创建一个存储池,要想使用ceph的存储功能,必须先创建存储池
ceph osd pool create mypool 64 64

[cephadm@ceph-mon1 ceph-cluster]$ exit
[root@ceph-mon1 ~]# ceph osd pool create mypool 64 64
pool 'mypool' created

列出当前集群所有存储池

ceph osd pool ls
[root@ceph-mon1 ~]# ceph osd pool ls
mypool

rados lspools
[root@ceph-mon1 ~]# rados lspools
mypool

创建上传一个文件test.txt

echo '123' > /tmp/test.txt
rados put test /tmp/test.txt --pool=mypool

查看是否上传成功

rados ls -p mypool

获取一个文件到当前文件夹下并重命名为my_test

rados ls -p mypool
rados get test ./my_test -p mypool

test是对象的ID
my_test是outfile,即输出文件叫啥名字
-p指定存储池

[root@ceph-mon1 ~]# echo '123' > /tmp/test.txt
[root@ceph-mon1 ~]# rados put test /tmp/test.txt --pool=mypool
[root@ceph-mon1 ~]# rados ls -p mypool
test
[root@ceph-mon1 ~]# rados get test ./my_test -p mypool
[root@ceph-mon1 ~]# ll
total 8
-rw-------. 1 root root 1261 Aug 28 03:08 anaconda-ks.cfg
-rw-r--r--. 1 root root    4 Sep  6 07:36 my_test
[root@ceph-mon1 ~]# cat my_test 
123

删除一个文件

rados rm test -p mypool

列出指定存储池有哪些文件

rados ls --pool=mypool

扩展Ceph集群

添加mon节点:
#为了尽量完善一点,我们来演示一下。

su - cephadm
cd ~/ceph-cluster
ceph-deploy mon add ceph-mon2
ceph-deploy mon add ceph-mon3

查看mon的quorum状态

ceph quorum_status --format json-pretty

添加mgr节点,mgr是无状态的

ceph-deploy mgr create ceph-mon2

centos7安装ceph集群_第11张图片

如果报上面的错 修改ceph.conf

[cephadm@ceph-mon1 ceph-cluster]$ cat ceph.conf 
[global]
fsid = d6e4b992-91d4-466b-a076-e6680f34f6e4
mon_initial_members = ceph-mon1
mon_host = 192.168.10.152,192.168.10.153,192.168.10.154
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 192.168.10.0/24

centos7安装ceph集群_第12张图片
再执行就可以成功了

ceph-deploy mon add ceph-mon2
ceph-deploy mon add ceph-mon3

centos7安装ceph集群_第13张图片
查看集群状态 已经存在3个节点

ceph -s

centos7安装ceph集群_第14张图片

删除一个存储池

ceph osd pool rm mypool mypool --yes-i-really-really-mean-it

要求存储池的名字要写两遍
后面必须加–yes-i-really-really-mean-it
如果报错删除不掉 提示you must first set the mon_allow_pool_delete config option to true before you can destroy a pool 需要在ceph.conf中添加2条最终文件如下

cat /etc/ceph/ceph.conf 
[global]
fsid = d6e4b992-91d4-466b-a076-e6680f34f6e4
mon_initial_members = ceph-mon1
mon_host = 192.168.10.152
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
[mon]
mon allow pool delete = true

修改完成之后重启服务

sudo systemctl restart ceph-mon.target

继续删除试试

[cephadm@ceph-mon1 ceph-cluster]$ ceph osd pool delete fs_data fs_data --yes-i-really-really-mean-it
pool 'fs_data' removed

centos7安装ceph集群_第15张图片
在ceph-mon1上创建新的池子

[cephadm@ceph-mon1 ceph-cluster]$ ceph osd pool create cephfs_data 100 
pool 'cephfs_data' created
[cephadm@ceph-mon1 ceph-cluster]$ ceph osd pool create cephfs_metadata 100 
pool 'cephfs_metadata' created
[cephadm@ceph-mon1 ceph-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data 
new fs with metadata pool 6 and data pool 5

准备客户端服务器192.168.10.96安装cephfs 测试挂载
先修改/etc/yum.repos.d/ceph.repo如下

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc

关闭防火墙和selinux

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

安装ceph-fuse

yum -y install epel-release
yum clean all
yum repolist
yum -y install ceph-fuse

如果此时在192.168.10.96测试挂载的话 会卡在这里hang住 因为缺少mds报各种错

报错1

ceph-fuse -m 192.168.10.152:6789 /mnt/mycephfs2 
2019-09-07 01:13:32.891 7f7e36148c00 -1 init, newargv = 0x559014f1b860 newargc=7ceph-fuse[8733]: starting ceph client

报错2

[root@localhost ~]# ceph-fuse -m 192.168.10.152:6789 /mnt/mycephfs2 
2019-09-07 01:22:51.640 7f61fa603c00 -1 init, newargv = 0x555d97505860 newargc=7ceph-fuse[8760]: starting ceph client
ceph-fuse[8760]: probably no MDS server is up?

安装mds

在ceph-mon1上执行

su cephadm
cd ~/ceph-cluster/
ceph-deploy mds create ceph-mon2 ceph-mon3

centos7安装ceph集群_第16张图片

复制ceph.client.admin.keyring和ceph.conf 到本机的/etc/ceph下 这里由于96没有改host就用了ip

[root@localhost ~]# scp [email protected]:/etc/ceph/ceph.client.admin.keyring /etc/ceph
[email protected]'s password: 
ceph.client.admin.keyring                                                                                                  100%  151   150.7KB/s   00:00    
[root@localhost ~]# scp [email protected]:/etc/ceph/ceph.conf /etc/ceph
[email protected]'s password: 
ceph.conf                                                                                                                  100%  201   223.3KB/s   00:00    

[root@localhost ~]# chmod  600 /etc/ceph/ceph.client.admin.keyring
[root@localhost ~]# cp /usr/lib/systemd/system/[email protected]   /etc/systemd/system/ceph-fuse.service

修改/etc/systemd/system/ceph-fuse.service 如下

[root@localhost install]# cat /etc/systemd/system/ceph-fuse.service 
[Unit]
Description=Ceph FUSE client
After=network-online.target local-fs.target time-sync.target
Wants=network-online.target local-fs.target time-sync.target
Conflicts=umount.target
PartOf=ceph-fuse.target

[Service]
EnvironmentFile=-/etc/sysconfig/ceph
Environment=CLUSTER=ceph
#ExecStart=/usr/bin/ceph-fuse -f --cluster ${CLUSTER} %I
ExecStart=/usr/bin/ceph-fuse -f -o rw,noexec,nosuid,nodev /mnt
TasksMax=infinity
Restart=on-failure
StartLimitInterval=30min
StartLimitBurst=3

[Install]
WantedBy=ceph-fuse.target

重启服务

systemctl  start   ceph-fuse.service
systemctl status ceph-fuse.service

在这里插入图片描述
mkdir -p /mnt/mycephfs2
ceph-fuse -m 192.168.10.152:6789 /mnt/mycephfs2

在/mnt下创建一个test文件

echo "123" > /mnt/mycephfs2/123abc.txt

测试原来上传下载功能 不小心手残没打tmp后没加/

[root@localhost mycephfs2]# rados put 123abc.txt /mnt/mycephfs2/123abc.txt --pool=cephfs_data
[root@localhost mycephfs2]# rados get 123abc.txt /tmp123abc.txt -p cephfs_data
[root@localhost mycephfs2]# ll
总用量 1
-rw-r--r--. 1 root root 4 9月   7 16:40 123abc.txt
[root@localhost mycephfs2]# cat /tmp123abc.txt 
123

卸载挂载块

[root@localhost mycephfs2]# fusermount -zu /mnt/
mycephfs/ mycephfs2/ test       
[root@localhost mycephfs2]# fusermount -zu /mnt/mycephfs2
[root@localhost mycephfs2]# df -h
文件系统                 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root   50G   19G   32G   37% /
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.9M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda1               1014M 145M 870M   15% /boot
/dev/mapper/centos-home   46G   33M   46G    1% /home
tmpfs                   379M     0 379M    0% /run/user/0

centos7安装ceph集群_第17张图片
文件被存到了ceph中 卸载挂载块文件已经不存在

[root@localhost mycephfs2]# cd /mnt/mycephfs2/
[root@localhost mycephfs2]# ll
总用量 0

再次下载文件测试

[root@localhost mycephfs2]# rados get 123abc.txt /tmp/123abc.txt -p cephfs_data
[root@localhost mycephfs2]# cat /tmp/123abc.txt 
123

centos7安装ceph集群_第18张图片

参考b站老哥视频 其中错误和不足纠正了。仅供自己安装使用
https://www.bilibili.com/video/av62103142?t=455

你可能感兴趣的:(centos7安装ceph集群)