第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集群搭建完毕。

相关推荐
bugtraq20216 分钟前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi12 分钟前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee16 分钟前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
阿尔法波17 分钟前
python与pycharm如何设置文件夹为源代码根目录
开发语言·python·pycharm
xing251626 分钟前
pytest下allure
开发语言·python·pytest
眸笑丶30 分钟前
使用 Python 调用 Ollama API 并调用 deepseek-r1:8b 模型
开发语言·python
dexianshen33 分钟前
配置mysql8.0使用PXC实现高可用
python
中国loong35 分钟前
pandas连接mysql数据库
python
陆鳐LuLu37 分钟前
日志管理利器:基于 ELK 的日志收集、存储与可视化实战
运维·elk·jenkins
土豆沒加1 小时前
K8S的Dashboard登录及验证
云原生·容器·kubernetes