1. Ceph监视器(ceph-mon):用于维护集群状态映射(maintains maps of the cluster state),比如 ceph 集群中有多少存储池、每个存储池有多少 PG 以及存储池和 PG的映射关系等,monitor map, manager map, the OSD map, the MDS map, and theCRUSH map,这些映射是 Ceph 守护程序相互协调所需的关键群集状态,此外监视器还负责管理守护程序和客户端之间的身份验证(认证使用 cephX 协议)。通常至少需要三个监视器才能实现冗余和高可用性
2. Ceph管理器(ceph-mgr):ceph manager守护进程负责跟踪运行时指标和ceph集群当前的状态,包括存储利用率,当前性能指标和系统负载等,ceph-mgr还托管一些python模块,以实现基于web的ceph仪表盘和rest api,通常要实现高可用至少需要2个ceph-mgr进程,通常ceph-mon和ceph-mgr个数相同,1个ceph-mon同节点会伴随1个ceph-mgr守护进程。
3. Ceph对象存储(ceph-osd):提供存储数据,操作系统上的一个磁盘就是一个 OSD 守护程序,OSD 用于处理 ceph集群数据复制,恢复,重新平衡,并通过检查其他 Ceph OSD 守护程序的心跳来向 Ceph监视器和管理器提供一些监视信息。通常至少需要 3 个 Ceph OSD 才能实现冗余和高可用性。
4. Ceph元数据服务(ceph-mds):Ceph MDS为ceph文件系统存储元数据,注意Ceph块设备和对象存储不用mds存储元数据,Ceph MDS允许POSIX文件系统用户执行基本命令,而不会将压力都集中到Ceph OSD集群上,通常mds可以选择部署至少2个节点,可以和其他组件一起也可以分开。
基于以上,本次部署采用Ubuntu 18.04.5-server版本,Ceph采用pacific版
环境准备:计划采用9台虚拟机机分开部署,1台用于部署,3台监视,2台管理,最后3台存储节点,2个网段,一个用cluster,一个用于public
Cluster网段:172.16.1.0/24
Public网段: 192.168.79.0/24
具体规划如下:
基础配置:(这里可以先初始化一台模板,配置完后在克隆):
1.更换源,这里采用清华镜像地址:
wget -q -O- ‘https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc‘ | apt-key add -
Ubuntu18.04.x:
cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main
# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main"
>> /etc/apt/sources.list
更换完成后,执行apt-get update && apt-get upgrade
2.时间同步:
apt update
apt install chrony -y
vim /etc/chrony/chrony.conf
# 修改为阿?云时钟同步服务器
# 公?
server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst
server ntp7.aliyun.com minpoll 4 maxpoll 10 iburst
# 重启服务
systemctl restart chrony
systemctl status chrony
systemctl enable chrony
# 查看时钟同步状态
timedatectl status
# 写?系统时钟
hwclock -w
# 重启服务器
reboot
3.更改IP地址
配置完成后,执行netplan apply
4.添加一个Ceph账户并给与权限,后期OSD挂载可能涉及
groupadd -r -g 2022 ceph && useradd -r -m-s /bin/bash -u 2022 -g 2022 ceph && echo ceph:123456 | chpasswd
echo "ceph ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
5.配置/etc/hosts主机解析
在上面全部配置完成后,按规划地址克隆其他服务器,并更改IP
集群部署:
1.配置免秘钥登录:
在 ceph-deploy 节点配置允许以非交互的方式登录到各节点
root@ceph-deploy:~# ssh-keygen -t rsa
root@ceph-deploy:~# ssh-copy-id 172.16.1.161
root@ceph-deploy:~# ssh-copy-id 172.16.1.162
略(这里可以写脚本,批量执行)
2.安装 ceph 部署工具:
root@ceph-deploy:~# apt-cache madison ceph-deploy
回显如下:
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main amd64 Packages
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main i386 Packages
ceph-deploy |1.5.38-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe amd64 Packages
ceph-deploy | 1.5.38-0ubuntu | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe i386 Packages
3.初始化 mon 节点:
[root@ceph-deploy ~]# mkdir ceph-cluster
[root@ceph-deploy ~]# cd ceph-cluster/
初始化 mon 节点过程如下:
Ubuntu 各服务器需要单独安装 Python2:
root@ceph-mon1:~# apt install python2.7 -y
root@ceph-mon1:~# ln -sv /usr/bin/python2.7 /usr/bin/python2
完成后执行:ceph-deploy new --cluster-network 172.16.1.0/24 --public-network 192.168.79.0/24 ceph-mon1.example.com
验证初始化:
4.初始化 ceph 存储节点:
[ceph@ceph-deploy ceph-cluster]# ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3
5.配置 mon 节点并生成及同步秘钥(注意:在mon节点执行):
root@ceph-mon1:~# apt install ceph-mon
root@ceph-mon2:~# apt install ceph-mon
root@ceph-mon3:~# apt install ceph-mon
一路回车,3台mon节点一样操作
完成后,在deploy部署节点,执行
[root@ceph-deploy ceph-cluster]# ceph-deploy mon create-initial
在mon节点验证:
6.分发 admin 秘钥:
root@ceph-deploy:~# apt install ceph-common #先安装 ceph 的公共组件
root@ceph-node1:~# apt install ceph-common -y
root@ceph-node2:~# apt install ceph-common -y
root@ceph-node3:~# apt install ceph-common -y
root@ceph-node4:~# apt install ceph-common -y
root@ceph-deploy:/home/ceph/ceph-cluster# ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
如下图:
node节点验证:
7.配置 manager 节点:
初始化 ceph-mgr 节点:
[root@ceph-mgr1 ~]#apt install ceph-mgr
2台mgr节点一样操作:
完成后执行:
[root@ceph-deploy ceph-cluster]# ceph-deploy mgr create ceph-mgr1
mgr节点验证:
8.ceph-deploy 管理 ceph 集群:
在 ceph-deploy 节点配置一下系统环境,以方便后期可以执行 ceph 管理命令。
root@ceph-deploy:~# apt install ceph-common
[root@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-deploy #推送正证书给自己
执行:root@ceph-deploy:~/ceph-cluster# ceph -s
若显示有如下所示:
执行:root@ceph-deploy:~/ceph-cluster# ceph config set mon auth_allow_insecure_global_id_reclaim false
9:准备 OSD 节点:
擦除磁盘之前通过 deploy节点对 node 节点执行安装 ceph 基本运行环境
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node1
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node2
[root@ceph-deployceph-cluster]# ceph-deploy install --release pacific ceph-node3
查看列出磁盘信息:
[root@ceph-deploy ceph-cluster]# ceph-deploy disk list ceph-node1 #列出远端存储 node1 节点的磁盘信息
使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 数据磁盘:
[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdb
[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdc
[root@ceph-deploy ceph-cluster]#ceph-deploy disk zap ceph-node1 /dev/sdd
注:所有node节点执行同样操作
10.添加OSD
在部署节点执行:
ceph-deploy osd create ceph-node1 --data /dev/sdb
ceph-deploy osd create ceph-node1 --data /dev/sdc
ceph-deploy osd create ceph-node1 --data /dev/sdd
ceph-deploy osd create ceph-node2 --data /dev/sdb
ceph-deploy osd create ceph-node2 --data /dev/sdc
ceph-deploy osd create ceph-node2 --data /dev/sdd
ceph-deploy osd create ceph-node3 --data /dev/sdb
ceph-deploy osd create ceph-node3 --data /dev/sdc
ceph-deploy osd create ceph-node3 --data /dev/sdd
在node 节点验证:
11.扩容mod节点:
[root@ceph-deploy ceph-cluster]# ceph-deploy mon add ceph-mon2
[root@ceph-deploy ceph-cluster]# ceph-deploy mon add ceph-mon3
12.扩容mgr节点:
[root@ceph-deploy ceph-cluster]# ceph-deploy mgr create ceph-mgr2
[root@ceph-deploy ceph-cluster]# ceph-deploy admin ceph-mgr2 #同步配置文件到ceph-mg2 节点
13.最后验证:
至此,集群部署完成
客户端验证:
准备一台 centos的虚拟机,配置好Yum源,
在客户端安装 ceph-common:
执行:
yum install https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y
yum install ceph-common
完成后,从ceph部署节点执行scp配合和验证文件
[root@ceph-deploy ceph-cluster]# scp ceph.conf ceph.client.admin.keyring root@172.16.1.XX:/etc/ceph/
Ceph集群块设备 RBD准备:
创建 RBD:
#ceph osd pool create myrbd1 64 64 #创建存储池,指定 pg 和 pgp 的数量,pgp 是对存在于 pg 的数据进行组合存储,pgp 通常等于 pg 的值
pool ‘myrdb1‘ created
# ceph osd pool --help
# ceph osd pool application enable myrbd1 rbd #对存储池启用 RBD 功能
enabled application ‘rbd‘ on pool ‘myrdb1‘
# rbd pool init -p myrbd1 #通过 RBD 命令对存储池初始化
创建并验证 img:
#rbd create myimg1 --size 5G --pool myrbd1
# rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering
后续步骤会使用 myimg2 ,由于 centos 系统内核较低无法挂载使用,因此只开启部分特
性。除了 layering 其他特性需要高版本内核支持
#rbd ls --pool myrbd1 #列出指定的 pool 中所有的 img
myimg1
myimg2
完成上述操作后:
客户端映射 img:
在cenos上执行:
[root@ceph-client ceph]# rbd -p myrbd1 map myimg2
出现如下所示:
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel
with "rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address
执行括号中的rbd feature disable myrdb1/myimg1 object-map fast-diff deep-flatten
再执行 lsblk查看
已发现rbd0
创建一个挂载目录test,并对rbd0执行mkfs.xfs /dev/rdb0格式化 ,并挂载到test目录下
写入一个文件测试:
dd if=/dev/zero of=/test/ceph-test-file bs=1MB count=300
300+0 records in
300+0 records out
300000000 bytes (300 MB) copied, 3.49849 s, 85.8 MB/s
最后到ceph端验证:
可以看到容量已经成功完成,完