Ceph存储部署

这里写自定义目录标题

前言:后续配置的解释可能标题不是很清晰,但是根据流程配置一定可以成功,还希望大家多多指点,希望能帮助过大家!(#^.^#)

一、Ceph概述

是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

特点

  1. 统一存储
    虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。
  2. 高扩展性
    扩容方便、容量大。能够管理上千台服务器、EB 级的容量。
  3. 可靠性强
    支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。
  4. 高性能
    因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 IOPS和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。

二、Ceph的组件

  1. Monitor
    一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
  2. OSD
    OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
  3. MDS
    MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
  4. Object
    Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
  5. PG
    PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
  6. RADOS
    RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
  7. Libradio
    Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
  8. CRUSH
    CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
  9. RBD
    RBD全称RADOS block device,是Ceph对外提供的块设备服务。
  10. RGW
    RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
  11. CephFS
    CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

三、架构

1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)

2:切片后的文件object会存入到Ceph中

3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG

4:PG是逻辑概念上对文件存储范围划分的索引

5:根据PG索引将文件存储到指定服务器的OSD中

四、安装步骤

一、环境部署

准备四台虚拟机分别是
注意 一定要把主机名称改对,要不然容易混淆

bash 复制代码
centos1 ip 192.168.115.128
centos2 ip 192.168.115.130
centos3 ip 192.168.115.131
centos4 ip 192.168.115.132

每一台机器都要关闭防火墙、图形化、关闭selinx、更改主机名

bash 复制代码
关闭防火墙
	systemctl stop firewalld.service 
	systemctl disable firewalld.service 
关闭图形网络管理器
	systemctl stop NetworkManager
	systemctl disable NetworkManager
关闭Selinux
	setenforce 0
主机名修改
	hostnamectl set-hostname centos{1..4}

二、修改ssh配置

bash 复制代码
sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config

重启ssh服务

bash 复制代码
systemctl restart sshd

三、hosts文件修改

在每个节点主机都要这么操作

在vim /etc/hosts下

bash 复制代码
vim /etc/hosts

添加内容

bash 复制代码
192.168.115.128	centos1
192.168.115.130	centos2
192.168.115.131	centos3
192.168.115.132	centos4

四台机器上都进行这样的操作

四、ssh免密配置

按照上图的操作,可成功在四台机器上实现免密登录

五、时间同步

首先在centos1上开启时间同步服务器
安装

bash 复制代码
yum install -y ntp


配置

bash 复制代码
vim /etc/ntp.conf

在配置文件中注释掉下面四行的内容

bash 复制代码
 21 #server 0.centos.pool.ntp.org iburst
 22 #server 1.centos.pool.ntp.org iburst
 23 #server 2.centos.pool.ntp.org iburst
 24 #server 3.centos.pool.ntp.org iburst

下面两行的内容添加到配置文件的最后

bash 复制代码
server 127.127.1.0    定义时间服务器
bash 复制代码
fudge 127.127.1.0 stratum 8   定义时间层次

更改完成后 重启服务并设置开机自启

bash 复制代码
systemctl start ntpd
bash 复制代码
systemctl enable ntpd

重启完成后,要在后三台机器上与第一台机器对时

输入命令

bash 复制代码
for i in 130 131;do ssh 192.168.115.$i  ntpdate 192.168.115.128;done


因为初始创建的时候就已经加入了磁盘后重启的,所以就不需要再次加一块磁盘了,如果没有增加磁盘的话,需要热扫描或者重启

命令

bash 复制代码
echo "- - -" > /sys/class/scsi_host/host0/scan
bash 复制代码
for i in 130 131;do ssh 192.168.115.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done

六、格式化磁盘

在每一台机器上都进行格式化磁盘的操作

bash 复制代码
mkfs.xfs /dev/sdb

七、后续的操作暂时都在centos1执行

安装epel 和 lttng-ust

bash 复制代码
yum install epel-release -y
bash 复制代码
yum install lttng-ust -y

安装完成后

输入

bash 复制代码
vim /etc/yum.repos.d/ceph.repo

在里面加入内容

bash 复制代码
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

[Ceph-noarch]
name=Ceph noarch packages
# 清华源
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

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

输入后 输入 yum clean all 清除yum缓存

bash 复制代码
 yum clean all

创建缓存

bash 复制代码
yum makecache fast

成功的提示就是 查看 元数据缓存已建立

bash 复制代码
 yum -y install ceph ceph-deploy 


集群构建

创建集群目录

bash 复制代码
	mkdir -p /usr/local/soft/cephcluster
	cd /usr/local/soft/cephcluster

创建集群 创建集群一定一定要进入集群目录下操作否则是报错

输入命令创建集群

bash 复制代码
ceph-deploy new centos1 centos2 centos3

将下方内容粘贴到 ceph.conf下

bash 复制代码
#对外开放网段
public network = 192.168.115.0/24
# 设置pool池默认分配数量
osd pool default size = 2
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr]
# 开启WEB仪表盘
mgr modules = dashboard

继续安装,注意这一步相当的重要,这一步如果没有报错后面都很好做

bash 复制代码
ceph-deploy install centos1 centos2 centos3

初始化monitor

bash 复制代码
ceph-deploy mon create-initial

同步管理信息

bash 复制代码
ceph-deploy admin  centos1 centos2 centos3

安装mgr 管理守护进程

bash 复制代码
ceph-deploy mgr create  centos1 centos2 centos3

安装rgw

bash 复制代码
ceph-deploy rgw create centos1 centos2 centos3

创建mds服务

bash 复制代码
ceph-deploy mds create centos1 centos2 centos3

OSD安装

创建OSD

bash 复制代码
ceph-deploy osd create --data /dev/sdb centos1
bash 复制代码
ceph-deploy osd create --data /dev/sdb centos2
bash 复制代码
ceph-deploy osd create --data /dev/sdb centos3

查看集群状态

bash 复制代码
ceph -s

查看验证结果

dashboard安装

开启dashboard模块

bash 复制代码
ceph mgr module enable dashboard

生成签名

bash 复制代码
ceph dashboard create-self-signed-cert

创建目录

bash 复制代码
mkdir -p /usr/local/jx/cephcluster/mgr-dashboard

进入路径

bash 复制代码
cd /usr/local/jx/cephcluster/mgr-dashboard

使用OpenSSL生成自签名证书

bash 复制代码
openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca

启动服务

bash 复制代码
ceph mgr module disable dashboard

设置开机自启

bash 复制代码
ceph mgr module enable dashboard

设置访问地址与端口

bash 复制代码
ceph config set mgr mgr/dashboard/server_addr 192.168.115.128
bash 复制代码
ceph config set mgr mgr/dashboard/server_port 9001

关闭https

bash 复制代码
ceph config set mgr mgr/dashboard/ssl false

查看当前运行管理器的服务状态

bash 复制代码
ceph mgr services

设置Ceph仪表板的登录凭据。Ceph仪表板是Ceph集群的Web管理界面,可以通过此命令设置登录凭据(用户名和密码)。在示例命令中,"jx123"是要设置的用户名,"123.com"是与该用户名关联的密码。这个命令使得用户可以使用指定的凭据登录Ceph仪表板,以便进行集群管理和监控等操作。

bash 复制代码
ceph dashboard set-login-credentials jx123 123.com

访问网站验证

注意不要手动输入 要复制粘贴否则无法访问

bash 复制代码
https://192.168.115.128:8443

显示结果

显示了登录界面

输入账户 jx123 密码 123.com 成功进入界面

ceph文件系统创建

创建存储池

bash 复制代码
ceph osd pool create cephfs_data 128
bash 复制代码
ceph osd pool create cephfs_metadata 64

查看存储池

bash 复制代码
 ceph osd lspools

创建文件系统

bash 复制代码
ceph fs new  fs_test  cephfs_metadata cephfs_data

查看文件系统

bash 复制代码
ceph fs ls

查看mds状态

bash 复制代码
ceph mds stat

显示状态结果

bash 复制代码
ceph mds stat
fs_test-1/1/1 up  {0=centos3=up:active}, 2 up:standby

根据以上信息,可以判断状态正常。文件系统(fs_test-1/1/1)是活跃状态,其中一个元数据服务器(centos3)处于活跃状态,而另外两个元数据服务器是备用状态。这符合正常的高可用性设置,其中一个MDS处于活跃状态,其他MDS作为备用,以确保系统的可靠性和冗余

安装

bash 复制代码
ceph-deploy install centos4

同步管理信息 路径要在

bash 复制代码
/usr/local/soft/cephcluster下面这个路径
bash 复制代码
ceph-deploy admin  centos4

在centos4中安装

bash 复制代码
yum install -y ceph-fuse

centos4和centos1中 都要存在

bash 复制代码
 ceph.client.admin.keyring


在centos4中 创建挂载目录

bash 复制代码
mkdir /ceph

挂载ceph文件系统

bash 复制代码
ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.115.128:6789 /ceph

提示

五、成功将ceph配置完成

df -Th查看挂载结果

相关推荐
一名路过的小码农2 天前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\5 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥6 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳7 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳7 天前
Ceph层次架构分析
ceph
活老鬼7 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳9 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳9 天前
Ceph的pool有两种类型
ceph
运维小文9 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳10 天前
iSCSI 和SCSI的概述
ceph