我的编程空间,编程开发者的网络收藏夹
学习永远不晚

docker笔记39-ceph分布式存储的搭建

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

docker笔记39-ceph分布式存储的搭建

    在kubernetes 中,想实现 pod 数据的持久化。在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业。在选型方面,个人更加倾向于社区火热的项目,GlusterFS、Ceph 都在考虑的范围之内,但是由于 GlusterFS 只提供对象存储和文件系统存储,而 Ceph 则提供对象存储、块存储以及文件系统存储。怀着对新事物的向往,果断选择 Ceph 来实现 Ceph 块存储对接 kubernetes 来实现 pod 的数据持久化。

   ceph是无中心化的存储,它没有管理节点、计算节点的之分。

   ceph的文件是被分片的,每一个数据块是 一个对象,对象保存在不同的服务器上。当节点失效,自动迁移数据,重新复制副本。可以动态的添加元数据服务器和存储节点,容量可以动态扩展。

   ceph分为mon监视器节点(至少一个)、osd对象存储节点(至少2个)、mds元数据节点。

   osd进程负责存储数据、处理数据的复制、恢复、回填、再平衡。并通过其他的osd守护进程的心跳,来向mon提供一些监控信息。当你设置osd有2个副本的时候,至少需要2个osd守护进程才能达到archive+clean的状态,默认有3个副本。

   mon负责维护集群状态的各种图表,包括监视图和osd图等。

   mds负责为ceph文件系统存储数据的时候才使用。

   存储的过程:存储的文件数据归类为对象object;对象放在对应的池子里面(pool);pool由若干个pg组成;pg是由若干个osd组成;osd是由硬盘组成。

环境

 k8s-node1       172.16.1.201    管理节点 数据节点

 k8s-node2       172.16.1.202    数据节点

 k8s-node3       172.16.1.203    数据节点

上述要加入/etc/hosts文件里面。

该实验的操作系统为centos 7,ceph k版本。

 ceph的部署  

1、关闭系统上的防火墙 以及selinux 

2、拷贝管理节点的秘钥到其他节点实现无密码登录

ssh-keygen -t rsa ssh-copy-id  root@ceph-node1 .....

3、在各个节点上配置需要的yum源

[Ceph]name=Ceph packages for $basearchbaseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/$basearchenabled=1priority=1gpgcheck=1gpgkey=https://download.ceph.com/keys/release.asc[Ceph-noarch]name=Ceph noarch packagesbaseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarchenabled=1priority=1gpgcheck=1gpgkey=https://download.ceph.com/keys/release.asc[ceph-source]name=Ceph source packagesbaseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/SRPMSenabled=0priority=1gpgcheck=1gpgkey=https://download.ceph.com/keys/release.asc

4、管理节点安装ceph-deploy工具 

[root@k8s-node1 yum.repos.d]# yum -y install ceph-deploy

5、管理节点创建工作目录

[root@k8s-node1 ~]#  mkdir -p /etc/ceph

6 、创建两个mon

[root@k8s-node1 ~]# cd /etc/ceph[root@k8s-node1 ceph]# ls[root@k8s-node1 ceph]# ceph-deploy new  k8s-node1 k8s-node2 ##这个意思是在k8s-node1和k8s-node2上分别创建一个mon,[root@k8s-node1 ceph]# lsceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

7、默认情况下最少是需要一个mon、 2个osd 

在配置文件ceph.conf 中加入我们的业务网段配置public network =172.16.22.0/24,结果如下:

[root@k8s-node1 ceph]# vim ceph.conf [global]fsid = 2e6519d9-b733-446f-8a14-8622796f83efmon_initial_members = k8s-node1,k8s-node2mon_host = 172.16.22.201,172.16.22.202auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxpublic network =172.16.22.0/24

8、 安装ceph 集群

[root@k8s-node1 ceph]# ceph-deploy install  k8s-node1 k8s-node2

9、 初始化mon 并收集所有的秘钥

[root@k8s-node1 ceph]# ceph-deploy mon create-initial [root@k8s-node1 ceph]# lsceph.bootstrap-mds.keyring  ceph.bootstrap-osd.keyring  ceph.client.admin.keyring  ceph-deploy-ceph.log  rbdmapceph.bootstrap-mgr.keyring  ceph.bootstrap-rgw.keyring  ceph.conf                  ceph.mon.keyring

10、查看创建的集群用户

[root@k8s-node1 ceph]# ceph auth listinstalled auth entries:client.adminkey: AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA==caps: [mds] allow *caps: [mgr] allow *caps: [mon] allow *caps: [osd] allow *client.bootstrap-mdskey: AQBavtVbbNgXOxAAkvfj6L49OUfFX5XWd651AQ==caps: [mon] allow profile bootstrap-mdsclient.bootstrap-mgrkey: AQBbvtVbwiRJExAAdsh2uG+nL8l3UECzLT4+vw==caps: [mon] allow profile bootstrap-mgrclient.bootstrap-osdkey: AQBbvtVbUV0NJxAAJAQ/yBs0c37C7ShBahwzsw==caps: [mon] allow profile bootstrap-osdclient.bootstrap-rgwkey: AQBbvtVb/h/pOhAAmwK9r8DeqlOpQHxz9F/9eA==caps: [mon] allow profile bootstrap-rgwmgr.k8s-node1key: AQBXvtVbeW/zKBAAfntYBheS7AkCwimr77PqEQ==caps: [mon] allow *

11、创建osd 

创建osd有两种方式

a、使用系统裸盘,作为存储空间;

b、使用现有文件系统,以目录或分区作为存储空间,官方建议为 OSD 及其日志使用独立硬盘或分区作为存储空间

 1)、使用分区

[root@k8s-node1 ceph]#ceph-deploy disk zap k8s-node1:/dev/sdb k8s-node2:/dev/sdb  ##通过zap命令清除分区及磁盘内容[root@k8s-node1 ceph]#ceph-deploy osd prepare  k8s-node1:/dev/sdb k8s-node2:/dev/sdb[root@k8s-node1 ceph]#ceph-deploy osd activate k8s-node1:/dev/sdb k8s-node2:/dev/sdb

 2)、 使用目录

[root@k8s-node1 ceph]#ssh k8s-node1 “mkdir /data/osd0;chown -R ceph:ceph /data/osd0"[root@k8s-node1 ceph]#ssh k8s-node2 “mkdir /data/osd0;chown -R ceph:ceph /data/osd0
[root@k8s-node1 ceph]# ceph-deploy osd  prepare k8s-node1:/data/osd0 k8s-node2:/data/osd0[root@k8s-node1 ceph]#  ceph-deploy osd  activate  k8s-node1:/data/osd0 k8s-node2:/data/osd0

12、使用ceph-deploy把配置文件和admin 秘钥下发到所有节点

[root@k8s-node1 ceph]# ceph-deploy admin  k8s-node1 k8s-node2

13 、给每一个节点的keyring 增加 r 权限

chmod +r /etc/ceph/ceph.client.admin.keyring
14、 检查集群的健康状况
[root@k8s-node1 ceph]# ceph -s    cluster 2e6519d9-b733-446f-8a14-8622796f83ef     health HEALTH_WARN  #这个警告可以忽略            64 pgs degraded            64 pgs stuck unclean            64 pgs undersized     monmap e2: 1 mons at {k8s-node1=172.16.22.201:6789/0}            election epoch 4, quorum 0 k8s-node1        mgr active: k8s-node1      osdmap e9: 2 osds: 2 up, 2 in   ##看这,个数是否对            flags sortbitwise,require_jewel_osds,require_kraken_osds      pgmap v21: 64 pgs, 1 pools, 0 bytes data, 0 objects            22761 MB used, 15722 MB / 38484 MB avail                  64 active+undersized+degraded                  [root@k8s-node1 ceph]# ceph healthHEALTH_WARN 64 pgs degraded; 64 pgs stuck unclean; 64 pgs undersized
[root@k8s-node1 ceph]# ceph osd treeID WEIGHT  TYPE NAME          UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.03677 root default                                         -2 0.01839     host k8s-node1                                    0 0.01839         osd.0           up  1.00000          1.00000 -3 0.01839     host k8s-node2                                    1 0.01839         osd.1           up  1.00000          1.00000
[root@k8s-node1 ceph]# ceph dfGLOBAL:    SIZE       AVAIL      RAW USED     %RAW USED     38484M     15719M       22764M         59.15 POOLS:    NAME     ID     USED     %USED     MAX AVAIL     OBJECTS     rbd      0         0         0         4570M           0

    这样,我们就搭建完了两个节点的ceph集群,其中1个mon,2个osd。

    下面我们再介绍mon和osd的扩展

ceph集群的扩展

新增一个osd  k8s-node3

以下操作,大部分命令是在k8s-node1上执行的(前面我们让k8s-node1充当管理节点)

#切换到k8s-node1的/etc/ceph目录下[root@k8s-node1 ~]# cd /etc/ceph/#给k8s-node3上安装ceph-deploy软件,但是如下命令要在k8s-node1上执行[root@k8s-node1 ceph]# ceph-deploy install  k8s-node3#下面这个命令在k8s-node3上执行[root@k8s-node3 ceph]# mkdir /data/osd0 -p[root@k8s-node3 ceph]# chown -R ceph:ceph /data/osd0#给k8s-node3创建osd[root@k8s-node1 ceph]# ceph-deploy osd  prepare k8s-node3:/data/osd0 [root@k8s-node1 ceph]#  ceph-deploy osd  activate  k8s-node3:/data/osd0#查看k8s-node3已经被加入集群里面了[root@k8s-node1 ceph]# ceph -s    cluster 2e6519d9-b733-446f-8a14-8622796f83ef     health HEALTH_OK     monmap e2: 1 mons at {k8s-node1=172.16.22.201:6789/0}            election epoch 4, quorum 0 k8s-node1        mgr active: k8s-node1      osdmap e14: 3 osds: 3 up, 3 in            flags sortbitwise,require_jewel_osds,require_kraken_osds      pgmap v7372: 64 pgs, 1 pools, 0 bytes data, 0 objects            35875 MB used, 21850 MB / 57726 MB avail                  64 active+clean[root@k8s-node1 ceph]# [root@k8s-node1 ceph]# [root@k8s-node1 ceph]# ceph osd treeID WEIGHT  TYPE NAME          UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.05516 root default                                         -2 0.01839     host k8s-node1                                    0 0.01839         osd.0           up  1.00000          1.00000 -3 0.01839     host k8s-node2                                    1 0.01839         osd.1           up  1.00000          1.00000 -4 0.01839     host k8s-node3                                    2 0.01839         osd.2           up  1.00000          1.00000

增加一个新的mon在k8s-node3 上面

在k8s-node1上执行

[root@k8s-node1 ceph]# ceph-deploy mon add k8s-node3[root@k8s-node1 ceph]# ceph -s    cluster 2e6519d9-b733-446f-8a14-8622796f83ef     health HEALTH_OK     monmap e4: 3 mons at {k8s-node1=172.16.22.201:6789/0,k8s-node2=172.16.22.202:6789/0,k8s-node3=172.16.22.203:6789/0}            election epoch 8, quorum 0,1,2 k8s-node1,k8s-node2,k8s-node3        mgr active: k8s-node1 standbys: k8s-node3, k8s-node2     osdmap e14: 3 osds: 3 up, 3 in            flags sortbitwise,require_jewel_osds,require_kraken_osds      pgmap v7517: 64 pgs, 1 pools, 0 bytes data, 0 objects            35890 MB used, 21835 MB / 57726 MB avail                  64 active+clean
[root@k8s-node1 ceph]# ceph mon state4: 3 mons at {k8s-node1=172.16.22.201:6789/0,k8s-node2=172.16.22.202:6789/0,k8s-node3=172.16.22.203:6789/0}, election epoch 10, quorum 0,1,2 k8s-node1,k8s-node2,k8s-node3

在k8s-node1增加一个元数据的角色 

元数据是在文件系统时才有用,而我们用的是块设备,所以就没用了

[root@k8s-node1 ceph]#ceph-deploy mds create k8s-node1

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

docker笔记39-ceph分布式存储的搭建

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

docker笔记39-ceph分布式存储的搭建

在kubernetes 中,想实现 pod 数据的持久化。在调研的过程中,发现 ceph 在最近几年发展火热,也有很多案例落地企业。在选型方面,个人更加倾向于社区火热的项目,GlusterFS、Ceph 都在考虑的范围之内,但是由于
2023-06-04

Ceph分布式存储集群搭建要注意哪些事项

今天小编给大家分享一下Ceph分布式存储集群搭建要注意哪些事项的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Ceph是可靠的
2023-06-27

linux怎么搭建分布式存储

在Linux环境下搭建分布式存储通常会使用一些开源的分布式存储软件,比如Ceph、GlusterFS等。以下是一个简单的步骤来搭建一个基于Ceph分布式存储系统:安装Ceph软件包。你可以在Ceph官方网站上找到最新的软件包,并根据官方文档
linux怎么搭建分布式存储
2024-04-09

docker笔记44-rbd块存储的创建

ceph rbd块存储简介 其前身就是ceph块设备,为ceph客户端提供基于块的持久存储,通常做为一个额外的磁盘使用,客户可以灵活的使用这个磁盘,可以作为裸设备使用,也可以格式化成文件系统,然后挂载使用。利用librbd库将块数据连
2023-06-04

Ceph分布式存储硬件的标准有哪些

今天小编给大家分享一下Ceph分布式存储硬件的标准有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Ceph是可靠的、可扩
2023-06-27

minio分布式存储搭建的步骤是什么

要搭建minio分布式存储,需要按照以下步骤进行操作:下载minio软件并解压缩到服务器上。配置minio服务,包括设置access key、secret key、端口号等参数。启动minio服务。使用浏览器或minio客户端连接到m
minio分布式存储搭建的步骤是什么
2024-04-09

hadoop3自学入门笔记(2)—— HDFS分布式搭建

一些介绍Hadoop 2和Hadoop 3的端口区别Hadoop 3 HDFS集群架构我的集群规划nameiprole61192.168.3.61namenode,datanode62192.168.3.62datanode63192.168.3.63seco
hadoop3自学入门笔记(2)—— HDFS分布式搭建
2014-07-30

云计算分布式云存储怎么搭建

搭建分布式云存储需要以下步骤:1. 选择合适的分布式云存储方案,例如Ceph、Hadoop HDFS、GlusterFS等,根据实际需求选择。2. 部署分布式云存储软件,根据官方文档或者相关教程,安装配置分布式云存储软件。3. 配置集群,将
2023-05-30

DCache 分布式存储系统List 缓存模块的创建与使用

DCache是一个分布式存储系统,其中的List缓存模块用于存储和管理列表数据。下面是DCache List缓存模块的创建和使用步骤:1. 创建List缓存模块:- 首先,在DCache管理界面上创建一个新的Cache模块。- 指定List
2023-09-28

使用 Go 语言构建高效的分布式存储系统

今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《使用 Go 语言构建高效的分布式存储系统》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论提出,我都会认真看的!大家一起进步,一起学习!随着
使用 Go 语言构建高效的分布式存储系统
2024-04-05

构建高可用的分布式存储系统:Go语言开发实践

随着互联网的迅速发展,越来越多的数据需要被存储和处理。为了确保数据的安全性和可靠性,分布式存储系统变得越来越重要。本文将介绍如何使用Go语言开发高可用的分布式存储系统,并在实践中探索其中的一些关键概念和技术。在开始之前,先来了解一下分布式存
构建高可用的分布式存储系统:Go语言开发实践
2023-11-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录