CentOS 7部署 Ceph分布式存储架构

2023-10-26

一、概述

  随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
  ceph官方文档 http://docs.ceph.org.cn/
  ceph中文开源社区 http://ceph.org.cn/

  Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。

ceph支持
  1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。

  2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

  3、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储

Ceph相比其它分布式存储有哪些优点?

  1、统一存储
    虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。

  2、高扩展性
    扩容方便、容量大。能够管理上千台服务器、EB级的容量。

  3、可靠性强
    支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。

  4、高性能
    因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。


Ceph各组件介绍:
  •Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
  •Monitors:  Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
  •MDSs:  Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

二、Ceph实验集群部署

 1. 主机准备 (禁用selinux, 关闭防火墙)

  xuegod67    10.10.10.67    admin,osd, mon   作为管理和监控节点
  xuegod68    10.10.10.68    osd,mds
  xuegod69    10.10.10.69    osd,mds
  xuegod70    10.10.10.70    client

  #xuegod67作管理. osd. mon节点;   xuegod68和69作osd mds;  xuegod70客户端
  前三台服务器增加一块硬盘/dev/sdb实验, 创建目录并挂载到/var/local/osd{0,1,2}

1

2

3

4

5

6

7

[root@xuegod67 ~]# mkfs.xfs  /dev/sdb

[root@xuegod67 ~]# mkdir -p /var/local/osd0

[root@xuegod67 ~]# mount /dev/sdb  /var/local/osd0/

[root@xuegod68 ~]# mkfs.xfs  /dev/sdb

[root@xuegod68 ~]# mount /dev/sdb  /var/local/osd1/

[root@xuegod69 ~]# mkfs.xfs  /dev/sdb

[root@xuegod69 ~]# mount /dev/sdb  /var/local/osd2/

2. 编辑hosts文件

(规范系统主机名添加hosts文件实现集群主机名与主机名之间相互能够解析(host 文件添加主机名不要使用fqdn方式)可用hostnamectl set-hostname name设置
分别打开各节点的/etc/hosts文件,加入这四个节点ip与名称的对应关系
  10.10.10.67    xuegod67
  10.10.10.68    xuegod68
  10.10.10.69    xuegod69
  10.10.10.70    xuegod70
SSH免密码登录
在管理节点使用ssh-keygen 生成ssh keys 发布到各节点

1

2

3

4

5

6

[root@xuegod67 ~]# ssh-keygen #所有的输入选项都直接回车生成。

[root@xuegod67 ~]# ssh-copy-id xuegod67

[root@xuegod67 ~]# ssh-copy-id xuegod68

[root@xuegod67 ~]# ssh-copy-id xuegod69

[root@xuegod67 ~]# ssh-copy-id xuegod70

3. 管理节点安装ceph-deploy工具

第一步:增加 yum配置文件(各个节点都需要增加yum源)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[root@xuegod67 ~]#vim /etc/yum.repos.d/ceph.repo

添加以下内容:(ceph国内163源)

[Ceph]

name=Ceph packages for $basearch

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=http://mirrors.163.com/ceph/keys/release.asc

priority=1

[Ceph-noarch]

name=Ceph noarch packages

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=http://mirrors.163.com/ceph/keys/release.asc

priority=1

[ceph-source]

name=Ceph source packages

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=http://mirrors.163.com/ceph/keys/release.asc

priority=1

第二步:更新软件源并安装ceph-deploy 管理工具

[root@xuegod67 ~]# yum clean all && yum list

[root@xuegod67 ~]# yum -y install ceph-deploy

4.创建monitor服务

1

2

3

4

5

[root@xuegod67 ~]# mkdir /etc/ceph && cd /etc/ceph

[root@xuegod67 ceph]#  ceph-deploy new xuegod67    #mon安装在xuegod67节点

[root@xuegod67 ceph]# ls                                #生成配置文件在当前目录下

ceph.conf  ceph.log  ceph.mon.keyring

Ceph配置文件、一个monitor密钥环和一个日志文件

5.修改副本数

1

2

3

4

5

6

7

8

9

[root@xuegod67 ceph]# vim ceph.conf 配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)

[global]

fsid = 92f5581d-79d2-4c9f-a523-4965eedc846b

mon_initial_members = xuegod67

mon_host = 10.10.10.67

auth_cluster_required = cephx

auth_service_required = cephx

auth_client_required = cephx

osd_pool_default_size = 2

6.在所有节点安装ceph

(如果网络源安装失败,手工安装epel-release 然后安装yum –yinstall cep-release再yum –y install ceph ceph-radosgw)

错误参考:https://blog.csdn.net/yenai2008/article/details/72457463

1

2

3

4

5

6

[root@xuegod67 ceph]# ceph-deploy install xuegod67 xuegod68 xuegod69 xuegod70

安装ceph monitor

[root@xuegod67 ceph]# ceph-deploy mon create xuegod67

收集节点的keyring文件

[root@xuegod67 ceph]# ceph-deploy  gatherkeys xuegod67

7.部署osd服务

添加osd节点 (所有osd节点执行)

我们实验准备时已经创建目录/var/local/osd{id}

8.创建激活osd

1

2

3

4

#创建osd 

[root@xuegod67 ceph]# ceph-deploy osd prepare xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2

#激活osd 

[root@xuegod67 ceph]# ceph-deploy osd activate xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2

1

如果报错

解决:在各个节点上给/var/local/osd1/和/var/local/osd2/添加权限
如下:
  chmod 777 -R /var/local/osd1/
  chmod 777 -R /var/local/osd2/*

1

2

查看状态:

[root@xuegod67 ceph]# ceph-deploy osd list xuegod67 xuegod68 xuegod69

9.统一配置

1

2

3

4

(用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)

[root@xuegod67 ceph]# ceph-deploy admin xuegod67 xuegod68 xuegod69

各节点修改ceph.client.admin.keyring权限:

1

[root@xuegod67 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring

10.查看osd状态

1

2

[root@xuegod67 ceph]# ceph health 或 ceph -s

HEALTH_OK

11.部署mds服务

[root@xuegod67 ceph]# ceph-deploy mds create xuegod68 xuegod69 #我们MDS安装2台
[root@xuegod67 ceph]# ceph mds stat #查看状态

12.集群状态

[root@xuegod67 ceph]# ceph -s

以上基本上完成了ceph存储集群的搭建。 

 三 、创建ceph文件系统

1

2

3

4

5

[root@xuegod67 ceph]# ceph fs ls   #创建之前

No filesystems enabled

创建存储池

[root@xuegod67 ceph]# ceph osd pool create cephfs_data <pg_num> 

[root@xuegod67 ceph]# ceph osd pool create cephfs_metadata <pg_num>

其中:<pg_num> = 128 ,
关于创建存储池
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
  *少于 5 个 OSD 时可把 pg_num 设置为 128
  *OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
  *OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
  *OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
  *自己计算 pg_num 取值时可借助 pgcalc 工具
随着 OSD 数量的增加,正确的 pg_num 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。 

1. 创建文件系统

创建好存储池后,你就可以用 fs new 命令创建文件系统了

1

2

3

4

5

6

7

[root@xuegod67 ceph]# ceph fs new <fs_name> cephfs_metadata cephfs_data 

其中:<fs_name> = cephfs  可自定义

[root@xuegod67 ceph]# ceph fs ls              #查看创建后的cephfs

[root@xuegod67 ceph]# ceph mds stat          #查看mds节点状态

e6: 1/1/1  up  {0=xuegod69=up:active}, 1  up:standby

active是活跃的,另1个是处于热备份的状态

2.挂载Ceph文件系统

有不同挂载方式

A.内核驱动挂载Ceph文件系统

1

2

3

4

5

6

7

8

[root@xuegod70 ceph]# mkdir /opt #创建挂载点

存储密钥(如果没有在管理节点使用ceph-deploy拷贝ceph配置文件)

cat /etc/ceph/ceph.client.admin.keyring

将key对应的值复制下来保存到文件:/etc/ceph/admin.secret中。

挂载

[root@xuegod70 ceph]# mount -t ceph 10.10.10.67:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret

取消挂载

[root@xuegod70 ceph]# umount /opt

B.用户控件挂载Ceph文件系统

1

2

3

4

5

6

安装ceph-fuse

[root@xuegod70 ceph]# yum install -y ceph-fuse

挂载

[root@xuegod70 ceph]# ceph-fuse -m 10.10.10.67:6789 /opt

取消挂载

[root@xuegod70 ceph]# fusermount -u /opt

  ceph在开源社区还是比较热门的,但是更多的是应用于云计算的后端存储。所以大多数在生产环境中使用ceph的公司都会有专门的团队对ceph进行二次开发,ceph的运维难度也比较大。但是经过合理的优化之后,ceph的性能和稳定性都是值得期待的。


关于其他:
  清理机器上的ceph相关配置:
  停止所有进程: stop ceph-all
  卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]
  删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]
  删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
  删除key:ceph-deploy forgetkeys

  卸载ceph-deploy管理:yum -y remove ceph-deploy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS 7部署 Ceph分布式存储架构 的相关文章

随机推荐

  • 数字图像处理扭曲效果——挤压效果

    挤压效果 挤压效果是将图像向内挤压 产生收缩变形 挤压效果的实现可以看成是数学极坐标的一种体现 将当前像素点 图像正中心点和过中心点的水平线这三要素画出一个极坐标 然后根据用户指定的挤压度 在当前点与中心点所连的直线上映射出一个像素点 最后
  • VulnHub-Tr0II

    一 信息收集 将靶机部署好之后改成NAT模式 扫描本网段发现目标ip 进一步探测ip 通过进一步的探测发现目标开启了21 22 80三个端口 先去80端口看一眼web服务 一张图没其它内容 扫一下目录看看 挨个访问也没有啥特殊的地方 考虑一
  • PropertyDescriptor获取非标准java bean属性的getter和setter时候的一个问题

    1 import java beans IntrospectionException 2 import java beans PropertyDescriptor 3 import java lang reflect InvocationT
  • 显著性水平对应的临界值_统计学问题 常有的显著性水平a 所对应的Z值是哪些...

    展开全部 z a 2 指的是标准正态分布的双侧临界值 z a 当然就是单侧临界值 a 阿尔法 指62616964757a686964616fe4b893e5b19e31333431356638的是显著水平 一般是0 05 0 01等 而95
  • Java 动态代理,invoke() 自动调用原理,invoke() 参数

    Java 动态代理 invoke 自动调用原理 invoke 参数 本文介绍了静态代理和动态代理的概念 并且用代码 注释 图示和源码的方式来分析动态代理原理和invoke 自动调用原理 学习动态代理 先从静态代理入手 静态代理 假如现在我们
  • 每日一练——Python字典格式读取文件

    现有一个user csv文件 内容如下 name username email 杨洋 yangy yangy sina com 贾子豪 jiazh jiazh 126 com 于飞 yuf yuf 163 com 田宇辰 tianych t
  • HttpGet和HttpPost请求

    HttpPost请求 public static void main String args throws IOException String url null 请求地址 Map
  • 分类预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 极限学习机 作为一种新兴的机器学习方法 已经成为了一个热门的研究方向 随机确定单隐含
  • [机器学习与scikit-learn-23]:算法-聚类-KMeans算法的工作原理

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 KMeans概述 1 1 什么是簇与质心 1 2 质心的计算过程 第2章 聚合指标 2 1 距离和度量方法 2 2 聚合的意义
  • window.open()打开新页面,并往新页面插入内容

    定义和用法 open 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口 语法 window open URL name specs replace 参数说明参考https www runoob com jsref met win ope
  • 使用Spring的JAVA Mail支持简化邮件发送

    闲来无事 翻看 Spring in Action 发现Spring集成了对JAVA Mail的支持 有点小激动的看了一遍 嗯 话说真的简单了很多 Spring的邮件发送的核心是MailSender接口 在Spring3 0中提供了一个实现类
  • 前端学习之初识HTML以及块级元素和行内元素的区别(1)

    目录 一 什么是HTML HTML是HyperType Markup Language 超文本标记语言 HTML的特点 Html标签注意规范 建议镜面嵌套 不建议交叉嵌套 二 块级元素和行内元素 块级元素 行内元素 一 什么是HTML HT
  • 贪心(1)田忌赛马

    目录 一 贪心算法 1 贪心选择性质 2 最优子结构性质 二 田忌赛马 三 OJ实战 CSU 1722 Race 力扣 870 优势洗牌 HDU 1338 Game Prediction HDU 1052 POJ 2287 UVA 1344
  • 神经网络之LN(Layer Normalization)

    上一篇博客提到了BN不适用于RNN等动态网络以及batchsize较小的时候 而LN可以 这篇博客就对LN做一个简单的介绍 深度网络中的数据维度一般是 N C H W 或者 N H W C 格式 N是batch size H W是featu
  • Redis主从复制及其实现原理

    Redis主从复制及其实现原理 首先 简单介绍一下什么是Redis主从复制 假如我们服务中用到了Redis 并且只有一台Redis服务器 如果某个时刻该Redis服务挂了 那么会导致整个服务的Redis不可用 在此期间 大量的请求将会直接打
  • Activiti7工作流+SpringBoot

    文章目录 一 Activiti相关概念 1 Activiti介绍 2 核心类 2 1 ProcessEngine 2 2 服务 Service 类 2 2 1 TaskService 2 2 2 RepositoryService 2 2
  • Objective-C学习笔记---构造函数和析构函数

    简单的讲 构造函数就是在创建一个对象的时候起到初始化的作用 对这个对象里的一些成员变量进行初始化 析构函数就是在对象被删除进行一些清理工作 也就是专门的扫尾工作 下面用代码来进行具体说明 一 构造函数 在OC中凡是已init开头的函数我们都
  • 【通信协议】单总线协议详解——以DHT11为例

    单总线概述 1 单总线的介绍 1 单总线也称为1 Wire bus 它是由美国DALLAS 达尔斯 公司推出的外围串行扩展总线 单总线系统中配置的各种器件 由DALLAS公司提供的专用芯片实现 2 每个芯片都有64位ROM 厂家对每一芯片都
  • 教程二:本地配置服务端开发环境

    物美智能 系列文章目录 一款强大的物联网管理平台介绍 物美智能 教程一 阿里云使用docker快速部署服务端 教程二 本地配置服务端开发环境 教程三 硬件端 Arduino和ESP8266开发板入门 教程四 使用物联网平台控制硬件端 教程五
  • CentOS 7部署 Ceph分布式存储架构

    一 概述 随着OpenStack日渐成为开源云计算的标准软件栈 Ceph也已经成为OpenStack的首选后端存储 Ceph是一种为优秀的性能 可靠性和可扩展性而设计的统一的 分布式文件系统 ceph官方文档 http docs ceph