第38讲:Ceph分布式存储集群部署

文章目录

1.Ceph分布式存储集群安装方式

ceph-deploy:一个快速部署集群的工具,ceph-deploy不再维护,Ceph采用的是Nautilus版本,如果操作系统是CentOS8那么将不支持ceph-deploy方式的搭建。

Cephadm:使用容器和systemd安装和管理Ceph集群,目前比较流行的部署方式,部署Octopus版本的Ceph建议使用此方法。

ceph-ansible:使用Ansible部署和管理 Ceph 集群。

INSTALLATION (MANUAL):手动方式安装,了解部署Ceph的细节。

ROOK:部署和管理在Kubernetes中运行的Ceph集群,同时还支持通过Kubernetes API管理存储资源和配置,如果要与K8S集成,可以使用此种方式。

2.Ceph集群环境规划

由三个节点组成Ceph集群,每一个节点中添加两块网卡,一块网卡用于对外提供访问,一块网卡用于集群内部通信,每一个节点上暂时分别有2块网卡,后期做其他配置时再进行添加。

主机名 Poblic通信IP 服务 硬盘
ceph-node-1 192.168.81.70 monitor、osd sda、sdb
ceph-node-2 192.168.81.80 monitor、osd sda、sdb
ceph-node-3 192.168.81.90 monitor、osd sda、sdb

3.基础环境配置

3.1.设置主机名以及SSH免密登录

所有节点都按如下进行配置。

1)设置主机名并配置Hosts解析

sh 复制代码
[root@localhost ~]# hostnamectl set-hostname ceph-node-1
[root@localhost ~]# hostnamectl set-hostname ceph-node-2
[root@localhost ~]# hostnamectl set-hostname ceph-node-3

# vim /etc/hosts
192.168.81.70 ceph-node-1
192.168.81.80 ceph-node-2
192.168.81.90 ceph-node-3

2)设置ssh免密登陆

sh 复制代码
# ssh-keygen 
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.70
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.80
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.81.90

3)关闭防火墙以及Selinux

sh 复制代码
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -ri '/^SELINUX/c SELINUX=disabled' /etc/sysconfig/selinux 
# sed -ri '/^SELINUX/c SELINUX=disabled' /etc/selinux/config 

4)设置ntp时间同步

在Ceph集群中非常注重时间信息,如果时间不同步,那么集群通信就可能会出现问题。

sh 复制代码
# yum -y install ntp
# crontab -e
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

3.2.配置Ceph yum源

所有节点都需要配置。

1)使用阿里云镜像源

阿里云镜像源中提供了很多工具的yum源,地址:https://developer.aliyun.com/mirror/

2)配置Centos7的Base与Epel源

sh 复制代码
# mkdir /etc/yum.repos.d/back
# mv /etc/yum.repos.d/*  /etc/yum.repos.d/back
# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3)配置Ceph的镜像源

需要分布配置noarch与x86_64的镜像源。

sh 复制代码
# vim /etc/yum.repos.d/ceph.repo
[noarch]
name=noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0

[x86_64]
name=x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0

4.部署Ceph分布式存储集群

4.1.安装Ceph-deploy自动化部署工具

我们的Ceph集群采用ceph-deploy的方式进行安装和部署,在集群中任意节点中安装ceph-deploy工具即可。

sh 复制代码
1.安装依赖的python软件
[root@ceph-node-1 ~]# yum -y install python-setuptools

2.安装ceph-deploy
[root@ceph-node-1 ~]# yum -y install ceph-deploy

3.查看ceph-deploy安装的版本
[root@ceph-node-1 ~]# ceph-deploy --version
2.0.1

4.2.初始化创建一个Ceph分布集群

这一步主要是用来生成集群配置文件和认证文件的。

sh 复制代码
1.创建一个目录存放部署各个组件的配置文件
[root@ceph-node-1 ~]# mkdir /data/ceph-deploy/

2.创建一个ceph集群,集群节点数建议是奇数
[root@ceph-node-1 ceph-deploy]# ceph-deploy new --public-network 192.168.81.0/24 --cluster-network 192.168.81.0/24 ceph-node-1 ceph-node-2 ceph-node-3


--public-network:指定公共网络地址,也就是对外提供服务的地址。
--cluster-network:指定集群内部使用的网络地址,集群连接通信通过这个网络进行通信。
sh 复制代码
3.查看ceph-deploy生成的集群配置文件
[root@ceph-node-1 ceph-deploy]# ll
总用量 12
-rw-r--r--. 1 root root  264 3月  30 21:06 ceph.conf				#配置文件
-rw-r--r--. 1 root root 3038 3月  30 21:06 ceph-deploy-ceph.log		#日志文件,可以查看monitor配置文件的生成过程
-rw-------. 1 root root   73 3月  30 21:06 ceph.mon.keyring			#认证文件
#如果创建集群时没有指定参数,则可以在生成的文件中进行配置。
[root@ceph-node-1 ceph-deploy]# cat ceph.conf
[global]
fsid = 25c120bc-ac9e-440e-8120-89ba5c2b9dc9
public_network = 192.168.81.0/24
cluster_network = 192.168.81.0/24
mon_initial_members = ceph-node-1, ceph-node-2, ceph-node-3
mon_host = 192.168.81.250,192.168.81.220,192.168.81.160
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

4.3.在每个节点中部署Ceph集群所有的组件

sh 复制代码
1.安装ceph集群各组件
[root@ceph-node-1 ceph-deploy]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds
[root@ceph-node-2 ~]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds
[root@ceph-node-3 ~]# yum -y install ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds

2.安装完成后会在/var/lib/ceph生成文件
[root@ceph-node-1 ceph-deploy]# ll /var/lib/ceph/
总用量 0
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-mds
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-mgr
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-osd
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-rbd
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-rbd-mirror
drwxr-x---. 2 ceph ceph  6 6月  30 2021 bootstrap-rgw
drwxr-x---. 3 ceph ceph 20 3月  30 21:46 crash
drwxr-x---. 2 ceph ceph  6 6月  30 2021 mds
drwxr-x---. 2 ceph ceph  6 6月  30 2021 mgr
drwxr-x---. 3 ceph ceph 25 3月  30 21:52 mon
drwxr-x---. 2 ceph ceph  6 6月  30 2021 osd
drwxr-xr-x. 2 root root  6 6月  30 2021 radosgw
drwxr-x---. 2 ceph ceph  6 3月  30 21:53 tmp

3.查看ceph的版本
[root@ceph-node-1 ceph-deploy]# ceph -v
ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)

4.4.部署并配置Monitor组件

4.4.1.初始化Ceph Monitor各节点形成集群模式

初始化Monitor组件需要先安装Monitor组件包,然后利用ceph-deploy工具根据生成的集群配置文件,初始化各个节点中的Monitor组件,形成集群模式,初始化完Monitor组件会在/etc/ceph目录中成一些配置文件和一些key文件,并启动Monitor组件。

sh 复制代码
1.初始化Monitor
[root@ceph-node-1 ceph-deploy]# ceph-deploy mon create-initial 
#初始化的时候会对集群中所有的节点都进行操作

2.查看生成的配置文件
#配置文件
[root@ceph-node-1 ceph-deploy]# ll /etc/ceph/
总用量 8
-rw-r--r--. 1 root root 264 3月  30 21:53 ceph.conf
-rw-r--r--. 1 root root  92 6月  30 2021 rbdmap
-rw-------. 1 root root   0 3月  30 21:52 tmpdpAGYU
#key文件
[root@ceph-node-1 ceph-deploy]# ll
总用量 48
-rw-------. 1 root root   113 3月  30 21:53 ceph.bootstrap-mds.keyring
-rw-------. 1 root root   113 3月  30 21:53 ceph.bootstrap-mgr.keyring
-rw-------. 1 root root   113 3月  30 21:53 ceph.bootstrap-osd.keyring
-rw-------. 1 root root   113 3月  30 21:53 ceph.bootstrap-rgw.keyring
-rw-------. 1 root root   151 3月  30 21:53 ceph.client.admin.keyring
-rw-r--r--. 1 root root   264 3月  30 21:06 ceph.conf
-rw-r--r--. 1 root root 18651 3月  30 21:53 ceph-deploy-ceph.log
-rw-------. 1 root root    73 3月  30 21:06 ceph.mon.keyring

3.查看ceph进程,此时每个节点都会起到mon组件
[root@ceph-node-1 ceph-deploy]# ps aux | grep ceph
root       25265  0.0  0.4 189132  9172 ?        Ss   21:46   0:00 /usr/bin/python2.7 /usr/bin/ceph-crash
ceph       26057  0.2  1.7 503888 33728 ?        Ssl  21:53   0:00 /usr/bin/ceph-mon -f --cluster ceph --id ceph-node-1 --setuser ceph --setgroup ceph
4.4.2.将生成的Monitor admin认证文件推送到集群各节点

Monitor组件初始化完成后,还需要将ceph.client.admin.keyring这个admin的认证文件推送到节点的/etc/ceph目录下,否则无法执行ceph命令查看集群信息。

推送完成后再将ceph集群的不安全模式禁用,否则查看集群信息时会提示"mon允许不安全的global_id回收"。

sh 复制代码
1.推送admin认证文件
[root@ceph-node-1 ceph-deploy]# ceph-deploy admin ceph-node-1 ceph-node-2 ceph-node-3

#如果现在想要在其他的节点中执行ceph命令,则可以将admin文件推送到其他的节点。

2.查看推送过来的文件
[root@ceph-node-1 ceph-deploy]# ll /etc/ceph/
总用量 12
-rw-------. 1 root root 151 3月  30 22:00 ceph.client.admin.keyring
-rw-r--r--. 1 root root 264 3月  30 22:00 ceph.conf
-rw-r--r--. 1 root root  92 6月  30 2021 rbdmap
-rw-------. 1 root root   0 3月  30 21:52 tmpdpAGYU
sh 复制代码
3.禁用ceph的不安全模式
[root@ceph-node-1 ceph-deploy]# ceph config set mon auth_allow_insecure_global_id_reclaim false
#如果不关闭的话,查看集群信息的时候会提示mon is allowing insecure global_id reclaim

4.查看ceph集群的信息
[root@ceph-node-1 ceph-deploy]# ceph -s
  cluster:
    id:     25c120bc-ac9e-440e-8120-89ba5c2b9dc9			#集群的ID
    health: HEALTH_OK									  #集群的健康状态
 
  services:
    mon: 3 daemons, quorum ceph-node-1,ceph-node-2,ceph-node-3 (age 3m)					#monitor组件的节点
    mgr: no daemons active								  #mgr节点,现在换没有mgr
    osd: 0 osds: 0 up, 0 in								  #osd节点
 
  data:													#资源池信息
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     

4.5.部署配置Manager组件

Manager组件是监控组件,在集群中所有的节点中部署。

**注意:**ceph-deploy命令生成的只是配置文件和启动该组件,执行该命令前需要实际的将ceph-mgr包安装好。

sh 复制代码
1.安装manager组件
[root@ceph-node-1 ceph-deploy]# ceph-deploy mgr create ceph-node-1 ceph-node-2 ceph-node-3

2.查看mgr组件启动的进程
[root@ceph-node-1 ceph-deploy]# ps aux | grep mgr
ceph       19530 11.7  6.5 1033180 121880 ?      Ssl  11:39   0:01 /usr/bin/ceph-mgr -f --cluster ceph --id ceph-node-1 --setuser ceph --setgroup ceph

3.再次查看集群的状态
[root@ceph-node-1 ceph-deploy]# ceph -s
  cluster:
    id:     25c120bc-ac9e-440e-8120-89ba5c2b9dc9
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 3m)
    mgr: ceph-node-1(active, since 36s), standbys: ceph-node-2, ceph-node-3		#可以看到mgr已经有三个节点了
    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:  

4.6.部署配置OSD组件

OSD组件是真正存储数据的组件,需要与磁盘关联,每一个OSD组件需要关联至少一块磁盘。

OSD关联数据盘有两种方式:

  • --data指定数据盘,数据直接落入盘中。
  • --journal配合ssd磁盘,首先将数据写入journal,然后在刷到磁盘里,起到一个加速的作用。

OSD组件在前面已经安装过了,下面来配置OSD,将服务器中的两块硬盘都加入到OSD集群中。

ceph-deploy工具一次只能将一个磁盘创建成OSD。

sh 复制代码
1.将ceph-node-1节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-1 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-1 --data /dev/sdc


2.将ceph-node-2节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-2 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-2 --data /dev/sdc

3.将ceph-node-3节点的/dev/sdb、/dev/sdc磁盘加入到osd中
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-3 --data /dev/sdb
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create ceph-node-3 --data /dev/sdc

OSD创建过程中,会自动配置指定的磁盘,并且启动OSD程序。

sh 复制代码
4.集群创建完OSD之后再次查看集群的状态
[root@ceph-node-1 ceph-deploy]# ceph -s
  cluster:
    id:     25c120bc-ac9e-440e-8120-89ba5c2b9dc9
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 15m)
    mgr: ceph-node-1(active, since 12m), standbys: ceph-node-2, ceph-node-3
    osd: 6 osds: 6 up (since 66s), 6 in (since 66s)				#显示集群中当下有3个OSD
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   6.0 GiB used, 54 GiB / 60 GiB avail
    pgs: 
    
5.查看OSD的详细信息
[root@ceph-node-1 ceph-deploy]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME            STATUS REWEIGHT PRI-AFF 
-1       0.05878 root default                                 
-3       0.01959     host ceph-node-1                         
 0   hdd 0.00980         osd.0            up  1.00000 1.00000 
 4   hdd 0.00980         osd.4            up  1.00000 1.00000 
-5       0.01959     host ceph-node-2                         
 1   hdd 0.00980         osd.1            up  1.00000 1.00000 
 5   hdd 0.00980         osd.5            up  1.00000 1.00000 
-7       0.01959     host ceph-node-3                         
 2   hdd 0.00980         osd.2            up  1.00000 1.00000 
 3   hdd 0.00980         osd.3            up  1.00000 1.00000 
 #会显示出每一个节点中的OSD信息

4.7.在集群中部署MDS组件

事先一定要将MDS组件在集群中安装好,然后使用ceph-deploy工具配置MDS组件。

sh 复制代码
[root@ceph-node-1 ceph-deploy]# ceph-deploy mds create ceph-node-1 ceph-node-2 ceph-node-3
sh 复制代码
[root@ceph-node-1 ceph-deploy]# ceph -s
  cluster:
    id:     25c120bc-ac9e-440e-8120-89ba5c2b9dc9
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-node-3,ceph-node-2,ceph-node-1 (age 2h)
    mgr: ceph-node-1(active, since 2h), standbys: ceph-node-2, ceph-node-3
    mds:  3 up:standby					#MDS组件准备就绪
    osd: 6 osds: 6 up (since 2h), 6 in (since 2h)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   6.0 GiB used, 54 GiB / 60 GiB avail
    pgs:  

4.8.在集群中部署RGW组件

部署好的RGW组件都有单独的访问地址,可以配置Keepalived+nginx/haproxy形成高可用集群。

sh 复制代码
[root@ceph-node-1 ceph-deploy]# ceph-deploy rgw create ceph-node-1 ceph-node-2 ceph-node-3

4.9.查看集群状态

到此为止Ceph集群搭建完毕。

相关推荐
ppo_wu7 分钟前
关闭kafka在控制台打印的日志
分布式·kafka·springboot
Narutolxy1 小时前
探索开源语音识别的未来:高效利用先进的自动语音识别技术20241030
python·macos·xcode
Mopes__3 小时前
Python | Leetcode Python题解之第517题超级洗衣机
python·leetcode·题解
Drscq4 小时前
How to migrate a CentOS 8 to Rocky Linux 8.10
linux·运维·centos
小小娥子4 小时前
rabbitmq高级特性(1):消息确认,持久性,发送方确认和重试机制
分布式·rabbitmq
修心光4 小时前
CentOS配置iptables规则并使其永久生效
linux·运维·centos
加载中loading...4 小时前
Linux线程安全(二)条件变量实现线程同步
linux·运维·服务器·c语言·1024程序员节
安科瑞刘鸿鹏4 小时前
校园建筑用电安全监测装置 电气火灾监测预防设备功能介绍
运维·服务器·网络·嵌入式硬件·安全·能源
课堂随想4 小时前
【libGL error】Autodl云服务器配置ACT的conda虚拟环境生成训练数据时,遇到了libGL相关错误,涉及swrast_dri.so
运维·服务器·conda
测试老哥5 小时前
Python+Selenium+Pytest+POM自动化测试框架封装(完整版)
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例