Ceph简单部署

PVE三台虚拟机模拟

名称:Ceph
ceph01:192.168.20.10 mon,mgr,osd
ceph02:192.168.20.11 mon,mgr,osd
ceph03:192.168.20.12 mon,mgr,osd
客户端:192.168.20.14

系统环境

1.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.关闭selinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

基础部署

1.所有节点配置基础源

yum install -y wget     #最小安装的系统需要
yum clean all
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo

2.所有节点配置ceph源

vim /etc/yum.repos.d/ceph.repo   #进入文件编写以下内容保存退出
 
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
 
yum makecache   #缓存包信息

3.配置时间同步

yum install ntp -y
ntpdate cn.pool.ntp.org

#yum install chrony
#nano /etc/chrony.conf
//增加server 192.168.199.100 iburst
//server 192.168.199.123 iburst
//server 192.168.199.132 iburst
//allow 192.168.199.0/24

4.配置host文件

nano /etc/hosts    #把以下内容加进去
 //ip为自己集群机的ip地址
192.168.20.10 ceph01
192.168.20.11 ceph02
192.168.20.12 ceph03

Ceph部署

1.CEPH安装与MON服务配置

yum install -y ceph

//查看版本
[root@localhost etc]# ceph -v
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

2.首先给集群分配唯一IP,即fsid(在ceph01上执行)

[root@localhost /]# uuidgen
4f0a73b3-377e-4377-9819-aaa8a79876d6

3.创建 Ceph 配置文件, Ceph 默认使用 ceph.conf ,其中的 ceph 是集群名字。在 /etc/ceph/ceph.conf对文件配置(在ceph01上配置)

[global]
fsid=4f0a73b3-377e-4377-9819-aaa8a79876d6
mon_initial_members=ceph01,ceph02,ceph03
mon_host=192.168.20.10,192.168.20.11,192.168.20.12
public_network=192.168.20.0/24
auth_cluster_required=none
auth_service_required=none
auth_client_required=none
osd_pool_default_size=3  //配置默认副本为3
osd_pool_default_min_size=2 //最小为2
osd_pool_default_pg_num=128 //128配置pg数量
osd_pool_default_pgp_num=128 //128配置pgp数量
storage_type=bluestore       //修改存储引擎为bluestore
osd_objectstore=bluestore //本地对象存储默认为filestore,现修改为bluestore
osd_mkfs_type=xfs //格式化系统类型
bluestore_block_size=10737418240

//如果后续操作提示clock skew detected on mon.ceph02, mon.ceph03
//可添加以下内容:mon clock drift allowed = 2;mon clock drift warn backoff = 30
//修改ceph配置中的时间偏差[阈值]

//bluestore_block_size=5628755968 默认为10737418240,单位为B(字节),
//如果不配置,它添加OSD的时候会自动创建10G的block文件在OSD的节点目录下,
//所以避免造成数据紊乱,我们需要配置一下跟我们规划的OSD磁盘容量一样

4.用规划好的主机名、对应 IP 地址、和 FSID 生成一个监视器图,并保存 为 /tmp/monmap(在ceph01上执行)

monmaptool --create --add ceph01 192.168.20.10 --add ceph02 192.168.20.11 --add ceph03 192.168.20.12 --fsid 4f0a73b3-377e-4377-9819-aaa8a79876d6 /tmp/monmap

5.将monmap和ceph.conf 等文件发送到其他mon节点(在ceph01上执行)

scp /etc/ceph/ceph.conf ceph02:/etc/ceph/
scp /etc/ceph/ceph.conf ceph03:/etc/ceph/
scp /tmp/monmap ceph02:/tmp/
scp /tmp/monmap ceph03:/tmp/

6.在监视器主机(mon)上分别创建数据目录。(在集群机上执行,修改目录名,如ceph01上就是ceph-ceph01,ceph02上就是ceph-ceph02这样“集群名-主机名”的写法)

sudo mkdir /var/lib/ceph/mon/{cluster-name}-{hostname} //官方模板
sudo -u ceph mkdir /var/lib/ceph/mon/ceph-ceph01 //自用

7.用监视器图组装守护进程所需的初始数据。(在集群机上执行以下命令,第一条在不同机需修改主机名,例如在ceph02上:ceph-mon --mkfs -i ceph02 --monmap /tmp/monmap)

ceph-mon --mkfs -i ceph01 --monmap /tmp/monmap
chown ceph.ceph -R /var/lib/ceph        修改所属用户和组
//ceph01是主机名

8.启动mon服务,并查看ceph状态。(集群机上都执行)

systemctl start ceph-mon@ceph01
systemctl enable ceph-mon@ceph01
 
//不同主机更改后面的主机名,如ceph02上:“systemctl start ceph-mon@ceph02”。
 
ceph -s
// 查看ceph状态

//如果time out,查看防火墙是否关闭,服务是否开启
//netstat -ntlp |grep 6789

配置OSD

1.创建OSD(集群机都配置)

ceph osd create
//如果没有指定 UUID,将会在OSD首次启动时分配一个,每个osd对应一个硬盘,创建时默认0,顺序创建
//这里实验一台机有两块盘,一块系统盘,一块数据盘,所以执行一次命令,创建一个OSD

2.在作OSD的主机上创建默认目录。(每个OSD分别配置,所有机都一样执行下面步骤,因为osd顺序创建,序号是顺序递增,所以执行命令时候ceph-id的id要对应创建的osd序号

//官方配置
sudo mkdir /var/lib/ceph/osd/{cluster-name}-{osd-number}
//cluster-name为集群名,前面说过ceph.conf的ceph就就是集群名
//osd-number为osd创建时输出的osd号(第一个创建时是0)

sudo -u ceph mkdir /var/lib/ceph/osd/ceph-0

查看硬盘

[root@ceph01 /]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 908M     0  908M    0% /dev
tmpfs                    919M     0  919M    0% /dev/shm
tmpfs                    919M  8.5M  911M    1% /run
tmpfs                    919M     0  919M    0% /sys/fs/cgroup
/dev/mapper/centos-root   29G  2.2G   27G    8% /
/dev/sdb1                9.8G   37M  9.2G    1% /home/data
/dev/sda1               1014M  150M  865M   15% /boot
tmpfs                    184M     0  184M    0% /run/user/0

如果要把 OSD 装到非系统盘的独立硬盘上,先创建文件系统、然后挂载到刚创建的默认目录下。
这里实验数据盘是增添的,所以非系统盘,我们要做挂载,配置如下:

mkfs -t xfs /dev/sdb1          
mount /dev/sdb1 /var/lib/ceph/osd/ceph-0

设置开机可以自动挂载,在/etc/fstab配置文件加上下面两条并保存:(使用命令“nano /etc/fstab”进入,每台机挂载的目录按每台机的创建的osd默认目录来

/dev/sdb1    /var/lib/ceph/osd/ceph-0          xfs        defaults   0 0

3.初始化OSD数据目录。(集群机都一样步骤配置,每个OSD都执行,注意OSD号)

ceph-osd -i 0 --mkfs
//0是OSD号
//因为免认证,所以不用加--mkkey

初始化完成:

[root@ceph01 ~]# ceph-osd -i 0 --mkfs
2024-03-20 21:26:51.176637 7f3b597b8ec0 -1 bluestore(/var/lib/ceph/osd/ceph-0/block) _read_bdev_label failed to open /var/lib/ceph/osd/ceph-0/block: (2) No such file or directory
2024-03-20 21:26:51.176681 7f3b597b8ec0 -1 bluestore(/var/lib/ceph/osd/ceph-0/block) _read_bdev_label failed to open /var/lib/ceph/osd/ceph-0/block: (2) No such file or directory
2024-03-20 21:26:51.176697 7f3b597b8ec0 -1 bluestore(/var/lib/ceph/osd/ceph-0/block) _read_bdev_label failed to open /var/lib/ceph/osd/ceph-0/block: (2) No such file or directory
2024-03-20 21:26:51.338228 7f3b597b8ec0 -1 bluestore(/var/lib/ceph/osd/ceph-0) _read_fsid unparsable uuid 
2024-03-20 21:26:55.602615 7f3b597b8ec0 -1 created object store /var/lib/ceph/osd/ceph-0 for osd.0 fsid 4f0a73b3-377e-4377-9819-aaa8a79876d6

执行完上面命令后,/var/lib/ceph/osd/ceph-0目录下产生了一堆文件,此时它们所属的用户和组都是root,把它们修改为ceph

chown ceph:ceph -R /var/lib/ceph/osd/ceph-0

4.把节点加入 CRUSH 图并把此 Ceph 节点放入 default 根下。(集群机一样步骤配置,这里注意主机名

ceph osd crush add-bucket ceph01 host
ceph osd crush move ceph01 root=default
//ceph01为在配置的机上的主机名

5.OSD 加入 CRUSH 图之后,它就能接收数据了。你也可以反编译 CRUSH 图、 把 OSD 加入设备列表、对应主机作为桶加入(如果它还不在 CRUSH 图里)、然后此设备作为主机的一个条目、分配权重、重新编译、注入集群。(集群机都一样步骤配置,注意osd号)

ceph osd crush add osd.0 1.0 host=ceph01
//osd.0是在ceph01机上创建的,所以对应的host为ceph01,设置的权重1.0,所有机加入osd的权重都配置一样

6.使用命令ceph osd tree来查看osd状态都为down,所以要启动它。(集群机一样执行,注意OSD号要改

systemctl start ceph-osd@0
systemctl enable ceph-osd@0

7.查看状态是否全为up

[root@ceph03 ~]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME       STATUS REWEIGHT PRI-AFF 
-1       3.00000 root default                            
-2       1.00000     host ceph01                         
 0   hdd 1.00000         osd.0       up  1.00000 1.00000 
-4       1.00000     host ceph02                         
 1   hdd 1.00000         osd.1       up  1.00000 1.00000 
-3       1.00000     host ceph03                         
 2   hdd 1.00000         osd.2       up  1.00000 1.00000 

MGR服务配置

1.初始化并启动从MGR服务(集群机上配置,注意创建的目录名称,systemctl启动命令的@后面是目录名称

sudo -u ceph mkdir /var/lib/ceph/mgr/ceph-ceph01
systemctl start ceph-mgr@ceph-ceph01
systemctl enable ceph-mgr@ceph-ceph01

执行ceph -s查看集群状态,现在集群已经是健康状态

[root@ceph01 ~]# ceph -s
  cluster:
    id:     4f0a73b3-377e-4377-9819-aaa8a79876d6
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph-ceph01(active), standbys: ceph-ceph03, ceph-ceph02
    osd: 4 osds: 3 up, 3 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0B
    usage:   3.01GiB used, 27.0GiB / 30GiB avail
    pgs:     

2.启用DashBoard功能(任意节点执行都可以)

ceph mgr module enable dashboard

在宿主机上浏览器访问:http://ip:7000/即可看到DashBoard
注:ip为主mgr所在主机的ip

[root@ceph01 ~]# ceph mgr services
{
    "dashboard": "http://ceph01:7000/"
}
DashBoard

MDS服务配置

一.添加 MDS

(只有要使用CephFS的场景下才需要创建MDS服务,下面配置只在ceph01上配置,用ceph01作文件系统存储)
1、首先创建目录

模板:
mkdir /var/lib/ceph/mds/{cluster-name}-{id}   # 这里的ID设置为本地主机名
实验:
sudo -u ceph mkdir /var/lib/ceph/mds/ceph-ceph01

//内部免认证使用,不需要配置密钥认证

2、手动启动mds服务

ceph-mds --cluster ceph -i ceph01 -m ceph01:6789
#如果是使用root启动,需要注意权限问题,将mds目录下所属修改为ceph
chown -R ceph:ceph /var/lib/ceph/mds/
systemctl start ceph-mds@ceph01
systemctl enable ceph-mds@ceph01

查看mds服务是否启动ps aux | grep mds

[root@ceph01 ~]# ps aux | grep mds
root        2610  0.0  0.6 338060 12724 ?        Ssl  19:56   0:00 ceph-mds --cluster ceph -i ceph01 -m ceph01:6789
ceph        2725  0.0  0.9 337028 17804 ?        Ssl  19:59   0:00 /usr/bin/ceph-mds -f --cluster ceph --id ceph01 --setuser ceph --setgroup ceph
root        2789  0.0  0.0 112824   948 pts/0    S+   20:00   0:00 grep --color=auto mds

二.创建池

(CephFS至少需要两个RADOS pool,一个存储数据,另一个存储元数据)
1.创建两个pool

模板:
ceph osd pool create <poolname> <pg_num>
ceph osd pool create <poolname> <pg_num>
实验:
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64

2.启用CephFS文件系统

ceph fs new cephfs cephfs_metadata cephfs_data

查看ceph状态

[root@ceph01 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[root@ceph01 ~]# ceph -s
  cluster:
    id:     4f0a73b3-377e-4377-9819-aaa8a79876d6
    health: HEALTH_WARN
            1 filesystem is degraded
 
  services:
    mon: 3 daemons, quorum ceph01,ceph02,ceph03
    mgr: ceph-ceph01(active), standbys: ceph-ceph02, ceph-ceph03
    mds: cephfs-1/1/1 up  {0=ceph01=up:replay}
    osd: 4 osds: 3 up, 3 in
 
  data:
    pools:   2 pools, 192 pgs
    objects: 21 objects, 2.19KiB
    usage:   3.13GiB used, 26.9GiB / 30GiB avail
    pgs:     192 active+clean

//[root@ceph01 ~]# ceph osd pool get cephfs_data size
//size: 3

三.挂载CephFS

以下配置皆在客户机client上配置
1.创建/etc/ceph/目录来存放ceph.conf文件

mkdir -p /etc/ceph

2.创建/mnt/cephfs/目录用来挂载cephfs使用

mkdir -p /mnt/cephfs

3.把ceph集群文件复制发送到客户机client的/etc/ceph/目录下(此操作在ceph01上执行

scp /etc/ceph/ceph.conf 192.168.20.14:/etc/ceph/

4.在客户机client上挂载cephfs使用

//手工挂载
mount.ceph 192.168.20.10:6789:/ /mnt/cephfs/
//如果提示无mount.ceph用以下安装命令
//yum install ceph-common
 
//开机自动挂载
nano /etc/fstab
 
//把下面这条命令加入到fstab文件内容里保存,实现开机挂载
192.168.20.10:6789:/     /mnt/ceph    ceph   noatime,_netdev    0       2

_netdev告诉系统这个设备需要网络访问,如果网络连接不可用,系统就不需要去尝试挂载。
atime为access time(访问时间)的缩写,显示的是文件中的数据最后被访问的时间,读一次这个文件的内容,这个时间就会更新,比如被系统的进程直接使用或者通过一些命令和脚本间接使用。所以noatime 对该文件系统的读取访问将不再导致与该文件相关的时间信息的更新,也就是说不用记录文件access time,对性能提升比较可观。

5.查看挂载情况(df -h)
可以看到集群的cephfs成功挂载到客户机的/mnt/cephfs目录下

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 908M     0  908M    0% /dev
tmpfs                    919M     0  919M    0% /dev/shm
tmpfs                    919M  8.5M  911M    1% /run
tmpfs                    919M     0  919M    0% /sys/fs/cgroup
/dev/mapper/centos-root   29G  2.1G   27G    8% /
/dev/sda1               1014M  150M  865M   15% /boot
tmpfs                    184M     0  184M    0% /run/user/0
192.168.20.10:6789:/     8.5G     0  8.5G    0% /mnt/cephfs

四.RBD块存储配置

(在任意一台集群机上配置)
1.创建RBD的存储池

ceph osd pool create rbd 128 128

2.使能存储池rbd为块存储

ceph osd pool application enable rbd rbd

3.创建一个镜像

rbd create rbd/demo  --image-feature  layering --size 10G
 
#rbd/demo 表示在存储池rbd下的镜像demo
#--image-feature参数指定我们创建的镜像有哪些功能,layering是开启COW功能。

提示:ceph镜像支持很多功能,但很多是操作系统不支持的,我们只开启layering

4.查看刚创建的镜像详细信息

rbd info demo
[root@ceph02 ~]rbd info demo
rbd image 'demo':
    size 10GiB in 2560 objects
    order 22 (4MiB objects)
    block_name_prefix: rbd_data.8dd86b8b4567
    format: 2
    features: layering
    flags: 
    create_timestamp: Thu Mar 21 22:07:57 2024

5.客户端(client)配置镜像映射并挂载使用
下面命令如果在MDS配置步骤部署过可以跳过,但其中第二条要执行

mkdir -p /etc/ceph   #创建/etc/ceph/目录来存放ceph.conf文件
mkdir -p /mnt/demo   #创建/mnt/demo/目录用来挂载块存储创建的镜像demo使用
scp /etc/ceph/ceph.conf 192.168.10.144:/etc/ceph/     #把ceph集群文件复制发送到客户机client的/etc/ceph/目录下

在客户机上执行下面命令,映射镜像到客户机

rbd map rbd/demo    #映射镜像到客户机
 
rbd showmapped      #查看映射镜像对应的磁盘信息
 
rbd unmap /dev/rbd0     #撤销映射的镜像

设置手工挂载

mkfs.xfs /dev/rbd0  //格式化,格式为xfs
 
mount /dev/rbd0 /mnt/demo //手工挂载(可以挂载到任意目录)

设置开机自动挂载
在客户机上编辑/etc/ceph/rbdmap文件,设置自动地图

[root@localhost ~]# cat /etc/ceph/rbdmap
# RbdDevice     Parameters
#poolname/imagename id=client,keyring=/etc/ceph/ceph.client.keyring
rdb/demo

设置rbdmap为开机启动

systemctl enable rbdmap

使用命令nano /etc/fstab修改/etc/fstab,设置开机挂载

/dev/rbd0     /mnt/demo        xfs     noatime,_netdev    0 0

查看硬盘信息
已正确挂载

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 908M     0  908M    0% /dev
tmpfs                    919M     0  919M    0% /dev/shm
tmpfs                    919M  8.5M  911M    1% /run
tmpfs                    919M     0  919M    0% /sys/fs/cgroup
/dev/mapper/centos-root   29G  2.1G   27G    8% /
/dev/sda1               1014M  150M  865M   15% /boot
tmpfs                    184M     0  184M    0% /run/user/0
192.168.20.10:6789:/     8.5G     0  8.5G    0% /mnt/cephfs
/dev/rbd0                 10G   33M   10G    1% /mnt/demo
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容