使用 Docker 部署分布式存储系统——Ceph

这篇具有很好参考价值的文章主要介绍了使用 Docker 部署分布式存储系统——Ceph。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近工作中接触了一个 Python + Flask 的新项目,项目中使用了 Ceph 对象存储服务。遂在开发环境使用 Docker 搭建了一套 Ceph 集群。

Ceph 官方文档

Ceph 介绍

Ceph 是一个开源的分布式存储系统,提供了对象存储、块存储和文件系统三种存储接口。Ceph 将数据存储在逻辑存储池中,使用 CRUSH 分布式算法决定如何将数据分散存储在集群的各个节点上,以实现高可用性和数据冗余。本文介绍如何使用 Ceph 的对象存储功能。

搭建 Ceph 集群至少要包括一个 MON(Monitor) 节点、一个MGR(Manager) 节点和多个 OSD(Object Storage Daemon)节点,OSD 节点数量由你要保存的数据副本数量决定,比如你要将数据集存储三份,就需要部署至少三个 OSD 节点。

  • OSD(Object Storage Daemon):负责管理磁盘上的数据块(数据存储、数据复制和数据恢复等),执行数据的读写操作。确保集群的高可用性,通常至少要部署三个节点。

  • MON(Monitor):负责维护 Ceph 集群的状态信息、配置信息和映射信息,确保集群元数据的一致性,协调集群节点间数据的分布和恢复。确保集群的高可用性,通常至少要部署三个节点。

  • MDS(Metadata Server):负责管理文件系统的目录结构、文件和目录的元数据信息,为 CephFS(Ceph的分布式文件系统)提供元数据服务。块存储和对象存储不需要部署 MDS

  • MGR(Manager):负责收集 Ceph 集群的状态信息(OSD、MON、MDS 的性能指标、健康状况等),并提供了可视化的仪表板(Ceph Dashboard)方便用户查看。确保集群的高可用性,通常至少要部署两个节点。

  • RGW(Rados Gateway):提供了 RESTful API,允许用户发送 HTTP/HTTPS 请求访问和管理存储在 Ceph 集群中的数据,支持 Amazon S3 API 和 OpenStack Swift API。

ceph docker,实用,docker,分布式,ceph

Ceph 集群搭建

部署环境

三台网络互通的 CentOS 虚拟机。

主机名称 主机IP 说明
ceph-admin 10.0.28.10 osd、mon、mgr、rgw
ceph-1 10.0.28.11 osd、mon
ceph-2 10.0.28.12 osd、mon

拉取镜像

DockerHub 镜像地址

# 拉取镜像
docker pull ceph/daemon:master-7ef46af-nautilus-centos-7-x86_64
# 更改镜像tag
docker image tag ceph/daemon:master-7ef46af-nautilus-centos-7-x86_64 ceph/daemon:latest

启动 mon 容器

登陆到第一台服务器(ceph-admin)。

  1. 创建挂载目录,并赋予权限。
sudo mkdir -p "/root/ceph/etc"
sudo mkdir -p "/root/ceph/lib"
sudo mkdir -p "/root/ceph/logs"
sudo mkdir -p "/root/ceph/data;
chmod -R 777 /root/ceph
  1. 启动容器。
docker run -d \
    --net=host \
    --name=mon \
    --restart=always \
    --privileged=true \
    -v /root/ceph/etc:/etc/ceph \
    -v /root/ceph/lib:/var/lib/ceph/ \
    -v /root/ceph/logs:/var/log/ceph \
    -e MON_IP=10.0.28.10,10.0.28.11,10.0.28.12 \
    -e CEPH_PUBLIC_NETWORK=10.0.28.0/24 \
    ceph/daemon mon
  1. 复制配置文件到另外两台服务器.
# ceph-2 10.0.28.11
scp -r /root/ceph root@10.0.28.11:/root

# ceph-3 10.0.28.12
scp -r /root/ceph root@10.0.28.12:/root
  1. 执行上面的容器启动命令,在另外两台服务器上启动 mon 容器。

  2. 查看部署状态。如下图,三个 mon 节点启动成功。

docker exec mon ceph -s

ceph docker,实用,docker,分布式,ceph

启动 osd 容器

  1. 执行如下命令,在 mon 节点生成 osd 密钥信息,否则启动 osd 容器会报错。
docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring
  1. 启动容器。
docker run -d \
    --net=host \
    --name=osd \
    --restart=always \
    --privileged=true \
    -v /root/ceph/etc:/etc/ceph \
    -v /root/ceph/lib/:/var/lib/ceph/ \
    -v /root/ceph/logs/:/var/log/ceph \
    -v /root/ceph/data/osd:/var/lib/ceph/osd \
    ceph/daemon osd_directory
  1. 查看部署状态。如下图,三个 osd节点启动成功。

ceph docker,实用,docker,分布式,ceph

启动 mds 容器

 docker run -d \
     --net=host \
     --name mds \
     --restart=always \
     --privileged=true \
     -v /root/baseService/ceph/etc:/etc/ceph \
     -v /root/baseService/ceph/lib:/var/lib/ceph/ \
     -v /root/baseService/ceph/logs:/var/log/ceph \
     -e CEPHFS_CREATE=0 \
     -e CEPHFS_METADATA_POOL_PG=512 \
     -e CEPHFS_DATA_POOL_PG=512 \
     ceph/daemon mds
# CEPHFS_CREATE 是为METADATA服务生成文件系统, 0表示不自动创建文件系统(默认值), 1表示自动创建。
# CEPHFS_DATA_POOL_PG是数据池的数量,默认为8。
# CEPHFS_METADATA_POOL_PG是元数据池的数量,默认为8。

启动 rgw 容器

  1. 执行如下命令,在 mon 节点生成 rgw密钥信息,否则启动 rgw容器会报错。
docker exec mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring
  1. 启动容器。
docker run -d \
     --net=host \
     --name rgw \
     --restart=always \
     -p 7480:80 \
     -v /root/ceph/etc:/etc/ceph \
     -v /root/ceph/lib:/var/lib/ceph/ \
     -v /root/ceph/logs:/var/log/ceph \
     ceph/daemon rgw

启动 mgr 容器

  1. 启动容器。
docker run -d --net=host  \
  --name=mgr \
  --restart=always \
  -v /root/ceph/etc:/etc/ceph \
  -v /root/ceph/lib:/var/lib/ceph \
  -v /root/ceph/logs:/var/log/ceph \
  ceph/daemon mgr
  1. 查看部署状态。如下图,至此,Ceph 集群节点全部启动成功。

ceph docker,实用,docker,分布式,ceph

安装 Dashboard 管理后台

  1. 开启 Dashboard 功能。
docker exec mgr ceph mgr module enable dashboard
  1. 创建证书。
docker exec mgr ceph dashboard create-self-signed-cert
  1. 创建登陆用户名和密码。
docker exec mgr ceph dashboard set-login-credentials cephAdmin cephPassword
  1. 配置外部访问端口。
docker exec mgr ceph config set mgr mgr/dashboard/server_port 7800
  1. 配置外部访问 ip。
docker exec mgr ceph config set mgr mgr/dashboard/server_addr 10.0.28.10
  1. 关闭 HTTPS(如果没有证书或内网使用,可以关闭)。
docker exec mgr ceph config set mgr mgr/dashboard/ssl false
  1. 重启mgr服务。
docker restart mgr
  1. 查看 Dashboard 服务信息。
docker exec mgr ceph mgr services

ceph docker,实用,docker,分布式,ceph

  1. 浏览器访问 Dashboard 管理页面。

ceph docker,实用,docker,分布式,ceph

ceph docker,实用,docker,分布式,ceph

问题

  • osd 容器启动失败。error connecting to the clusterdoes not generate config。执行如下命令解决。
docker exec -it mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

ceph docker,实用,docker,分布式,ceph

  • rgw 容器启动失败。ERROR- /var/lib/ceph/bootstrap-rgw/ceph.keyring must exist 执行如下命令解决。
docker exec mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring

ceph docker,实用,docker,分布式,ceph

  • 服务器重启后,mon 节点重启失败。Existing mon, trying to rejoin cluster。修改 mon 的启动脚本解决。

ceph docker,实用,docker,分布式,ceph

  1. 将 mon 容器内的启动脚本复制到宿主机中。
docker cp mon:/opt/ceph-container/bin/start_mon.sh .
  1. 修改启动脚本。
# 找到如下代码,注释掉
v2v1=$(ceph-conf -c /etc/ceph/${CLUSTER}.conf 'mon host' | tr ',' '\n' | grep -c ${MON_IP})
# 替换为如下代码
v2v1=2
  1. 将修改后的启动脚本再复制到容器中。
docker cp start_mon.sh mon:/opt/ceph-container/bin/start_mon.sh 
  1. 重新启动 mon 容器。
docker restart mon
  1. 容器正常启动,但出现如下错误日志,执行docker exec mon ceph -s命令无响应。因为部署了三个 mon 节点,只要再启动其他两个 mon 节点即可恢复正常响应。

ceph docker,实用,docker,分布式,ceph

末尾

如果本文对你有帮助的话,欢迎 点赞 + 收藏 ,非常感谢!

我是 Cleaner,我们下期再见~文章来源地址https://www.toymoban.com/news/detail-851663.html

到了这里,关于使用 Docker 部署分布式存储系统——Ceph的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分布式技术】分布式存储ceph之RBD块存储部署

    目录 创建 Ceph 块存储系统 RBD 接口 服务端操作 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 2、将存储池转换为 RBD 模式 3、初始化存储池 4、创建镜像 5、在管理节点创建并授权一个用户可访问指定的 RBD 存储池 6、修改RBD镜像特性,CentOS7默认情况下只支持layering和stripin

    2024年01月18日
    浏览(72)
  • Hadoop的分布式文件存储系统HDFS组件的使用

    存储整个HDFS集群的元数据(metaData) —— 整个集群中存储的目录和文件的索引 管理整个HDFS集群 接收客户端的请求 负责节点的故障转移 存储数据,是以block块的形式进行数据的存放。 默认情况下block块的大小是128M。 blocksize大小的计算公式: 寻址时间:下载文件时找到文件

    2024年02月09日
    浏览(73)
  • 分布式存储Ceph部署

    前言 Ceph 和 GlusterFS 都是出色的分布式存储,其中Ceph 广泛由于Openstack以及K8S的分布式持久化存储。 介绍 Ceph 是一个开源的分布式存储系统,同时支持 对象存储、块设备、文件系统 ceph 是一个对象(object)式存储系统,它把每一个待管理的数据流(文件等数据)切分为一到多个固

    2024年02月14日
    浏览(43)
  • ceph 分布式存储与部署

    目录 一、存储基础:  1.单机存储设备:  2. 单机存储的问题:  3. 商业存储解决方案:  4. 分布式存储:  5. 分布式存储的类型: 二、Ceph 简介: 三、Ceph 优势: 四、Ceph 架构:  1. RADOS 基础存储系统:  2. LIBRADOS 基础库:  3. 高层应用接口:包括了三个部分:   3.1 对象

    2024年02月07日
    浏览(47)
  • docker 笔记5:redis 集群分布式存储案例

    尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 目录 1.cluster(集群)模式-docker版哈希槽分区进行亿级数据存储  1.1面试题 1.1.1  方案1 哈希取余分区 1.1.2 方案2 一致性哈希算法分区  原理 优点 一致性哈希算法的容错性  一致性哈希算法的扩展性  缺点  一致性哈希算

    2024年02月09日
    浏览(42)
  • 【分布式文件存储】MinIO部署及实现文件上传下载

    目录 概述 MinIO集群部署 准备docker-compose.yml 测试启动 MinIO用户管理 Buckets管理  创建Buckets MinIO客户端 引入依赖   文件上传下载Demo 调用API碰到的问题 MinIO | 高性能, Kubernetes 原生对象存储 MinIO是全球领先的对象存储先锋,目前在全世界有数百万的用户。 高性能 ,在标准硬件

    2024年02月07日
    浏览(58)
  • Ceph分布式存储系统

    Ceph :ceph被称为面向未来的存储还是一个分布式的存储系统,非常灵活,如果需要扩容,只要向ceph集中增加服务器即可。ceph存储数据时采用多副本的方式进行存储,生产环境下,一个文件至少要存三份,ceph默认也是三副本存储。 可以实现的 存储方式 : 块存储:提供像普通

    2024年04月15日
    浏览(45)
  • Linux 部署 MinIO 分布式对象存储 & 配置为 typora 图床

    MinIO 是一款高性能的对象存储系统,它可以用于大规模的 AI/ML、数据湖和数据库工作负载。它的 API 与Amazon S3 云存储服务完全兼容,可以在任何云或本地基础设施上运行。MinIO 是 开源软件 ,也提供商业许可和支持 MinIO 的特点有: 简单 :MinIO 的安装和使用都非常简单,只需

    2024年02月07日
    浏览(58)
  • 分布式文件存储系统-FastDFS

            前言:FastDFS 是一个分布式文件存储系统, 主要用于存储和管理 大规模 的 文件数据,如图片、视频、文档等 ,是淘宝前架构师为了存储图片用C语言开发出来的系统。         服务端有两个组件  Tracker Server 与 Storage Server ,对应两个角色: Tracker: 管理和调度集群

    2024年02月13日
    浏览(62)
  • 分布式运用——存储系统Ceph

    Ceph是一个开源的分布式存储解决方案,旨在提供可扩展性、高性能和强大的数据可靠性。它采用了一种分布式对象存储架构,能够同时提供块存储和文件存储的功能。本篇博客将深入探索Ceph的原理、特性和应用场景,帮助读者更好地理解和使用这一强大的存储解决方案。

    2024年02月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包