返回顶部
首页 > 资讯 > 精选 >Ceph分布式文件共享解决方案是什么
  • 478
分享到

Ceph分布式文件共享解决方案是什么

2023-06-19 10:06:58 478人浏览 八月长安
摘要

本篇文章给大家分享的是有关Ceph分布式文件共享解决方案是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言哈喽大家好呀! 这次给大家带来的Liunx软件分享是鼎鼎大名的C

本篇文章给大家分享的是有关Ceph分布式文件共享解决方案是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

前言

哈喽大家好呀! 这次给大家带来的Liunx软件分享是鼎鼎大名的Ceph分布式文件系统,笔者了解到Ceph也是遇到了一个问题就是在使用Kubeneters的时候在各个容器中都需要使用同一套文件,但是使用NAS盘的方式不管是更新还是读取都要忍受2分钟之久而且还会出现文件占用失败的问题,笔者找了找现有和Kuberneters结合比较好的文件系统才发现Ceph,那么就开始进行Ceph的搭建和使用吧

附上:

喵了个咪的博客:w-blog.cn

Ceph官网 :https://ceph.com/

1. 环境准备

首先需要3台服务器来做集群,ceph默认会进行文件三份的冗余来保障文件不易丢失,服务器IP地址如下:

PS:这里使用的是Centos7的系统版本

192.168.3.101 ceph-1192.168.3.102 ceph-2192.168.3.103 ceph-3

这里使用Docker的方式进行安装不会应为安装过程污染环境方便删除重试:

yum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo Https://download.docker.com/linux/centos/docker-ce.repoyum install -y docker-ce

需要配置好国内docker源来提高速度并且配置好开启自启(需要使用自己的阿里云账号获取加速地址)

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.JSON <<-'EOF'{  "reGIStry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart dockersudo systemctl enable docker

2. 集群部署

在各个节点上拉取需要使用到的Docker镜像

docker pull ceph/daemon

node1节点上运行 mon

docker run -d \        --name=mon \        --net=host \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        -e MON_IP=192.168.3.101 \        -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \        ceph/daemon mon

查看docker运行状态,并且执行命令查看ceph的集群情况

[root@ceph-1 ~]# docker psCONTaiNER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS               NAMESb0c9d7680461        ceph/daemon         "/entrypoint.sh mon"   About a minute aGo   Up About a minute                       mon[root@ceph-1 ~]# docker exec mon ceph -s  cluster:    id:     da8f7f5b-b767-4420-a510-287f4ced25de    health: HEALTH_OK   services:    mon: 1 daemons, quorum ceph-1    mgr: no daemons active    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:

虽然我们没有映射端口,Ceph容器会把后续需要使用到的端口映射出来

[root@ceph-1 ~]# yum install tcping[root@ceph-1 ~]# tcping 192.168.3.101 6789192.168.3.101 port 6789 open

Ceph有两种方式在各个节点之间共享配置,一种是文件的方式需要吧第一个启动起来的节点的文件CP到其他节点,另外一种是使用配置服务(比如etcd或者consul) 这里使用的文件的方式存放公共配置问题复制配置文件 将 node1 上的配置文件复制到 node02 和 node03,复制的路径包含/etc/ceph和/var/lib/ceph/bootstrap-*下的所有内容。

ssh root@192.168.3.102 mkdir -p /var/lib/cephscp -r /etc/ceph root@192.168.3.102:/etcscp -r /var/lib/ceph/bootstrap* root@192.168.3.102:/var/lib/cephssh root@192.168.3.103 mkdir -p /var/lib/cephscp -r /etc/ceph root@192.168.3.103:/etcscp -r /var/lib/ceph/bootstrap* root@192.168.3.103:/var/lib/ceph

启动第二个和第三个 mon 在 node02 上执行以下命令启动 mon,注意修改 MON_IP

docker run -d \        --net=host \        --name=mon \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        -e MON_IP=192.168.3.102 \        -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \        ceph/daemon mon

在 node03 上执行以下命令启动 mon,注意修改 MON_IP

docker run -d \        --net=host \        --name=mon \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        -e MON_IP=192.168.3.103 \        -e CEPH_PUBLIC_NETWORK=192.168.3.0/24 \        ceph/daemon mon

在任意节点上在查看ceph集群状态可以看到有三个mos上线了

[root@ceph-1 ~]# docker exec mon ceph -s  cluster:    id:     da8f7f5b-b767-4420-a510-287f4ced25de    health: HEALTH_OK   services:    mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3    mgr: no daemons active    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:

接着就需要运行osd服务把某个磁盘给ceph作为文件共享系统的基础存储,所以我们需要为三台服务器挂载对应的磁盘(笔者这里使用的是阿里云的云服务器,这里挂载了100GB的SSD)

[root@ceph-1 ~]# fdisk -lDisk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x0008d73a   Device Boot      Start         End      Blocks   Id  System/dev/vda1   *        2048    83884031    41940992   83  LinuxDisk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes

三台机器分别运行(如果需要挂载多块可以运行多个osd即可)

docker run -d \        --net=host \        --name=osd \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        -v /dev/:/dev/ \        --privileged=true \        -e OSD_FORCE_ZAP=1 \        -e OSD_DEVICE=/dev/vdb \        ceph/daemon osd_ceph_disk

我们再次查看发现osd3个节点已经上线了

[root@ceph-1 ~]# docker exec mon ceph -s  cluster:    id:     da8f7f5b-b767-4420-a510-287f4ced25de    health: HEALTH_WARN            no active mgr   services:    mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3    mgr: no daemons active    osd: 3 osds: 3 up, 3 in   data:    pools:   0 pools, 0 pgs    objects: 0  objects, 0 B    usage:   0 B used, 0 B / 0 B avail    pgs:

但是我们并看不到有存储空间,主要是mgr没有启动,我们把mds和rgw也一起跑起来在node1节点上:

docker run -d \        --net=host \        --name=mgr \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        ceph/daemon mgr
docker run -d \        --net=host \        --name=mds \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        -e CEPHFS_CREATE=1 \        ceph/daemon mds
docker run -d \        --name=rgw \        -p 80:80 \        -v /etc/ceph:/etc/ceph \        -v /var/lib/ceph/:/var/lib/ceph/ \        ceph/daemon rgw

初始化完成

[root@ceph-1 ~]# docker exec mon ceph -s  cluster:    id:     da8f7f5b-b767-4420-a510-287f4ced25de    health: HEALTH_OK   services:    mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3    mgr: ceph-1(active)    mds: cephfs-1/1/1 up  {0=ceph-1=up:active}    osd: 3 osds: 3 up, 3 in    rgw: 1 daemon active   data:    pools:   6 pools, 48 pgs    objects: 209  objects, 3.4 KiB    usage:   6.0 GiB used, 292 GiB / 298 GiB avail    pgs:     48 active+clean

3. 简单使用和性能

可以使用ceph挂载磁盘进行使用,但是ceph有很强的用户校验机制所以需要先拿到访问key ,并且在使用过程中可以指定多个节点这就形成了负载均衡 用内核驱动挂载 Ceph 文件系统 — Ceph Documentation

mkdir /mnt/mycephfs[root@ceph-1 ~]# cat /etc/ceph/ceph.client.admin.keyring [client.admin]        key = AQBXv0VbKtikExAAwHHp+F2HjsnYIIqaozjt3g==        auid = 0        caps mds = "allow"        caps mgr = "allow *"        caps mon = "allow *"        caps osd = "allow *"mount -t ceph 192.168.3.101,192.168.3.102,192.168.3.103:/ /mnt/mycephfs -o name=admin,secret=AQBhlz1bZBHcLxAAt6eIyBxnAxFoyA7PDTqAkQ==umount /mnt/mycephfs[root@ceph-1 ~]# lsof  /mnt/mycephfsCOMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF          NODE NAMEbash    10486 root  cwd    DIR    0,0        2 1099511627781 /mnt/mycephfs/data/dev/code

这样只是最简单的使用,还有关于rdb对象存储以及Ceph还有快照功能

在搭建好整个集群之后进行测试文件速度(这里主要测试的是5000多个小文件拷贝速度)如下:

# NAS盘/app # time cp -rf PHP/ general/testreal    2m 7.05suser    0m 0.13ssys     0m 1.80s# CEPH/app # time cp -rf php/ generalceph/testreal    0m 6.88suser    0m 0.05ssys     0m 0.39s# 本地磁盘/app # time cp -rf php/ php2real    0m 1.16suser    0m 0.02ssys     0m 0.21s

大家可以看到CEPH的速度对于NAS盘提升不是一点两点是质的提升,面对本地磁盘差距也没有到不能接受的情况

4. kubernetes使用

笔者的最终目的是在k8s中可以使用ceph作为高速共享盘,那么就需要借助K8S支持的cephFS文件挂载,具体对应的编排如下

因为使用ceph需要密码所以我们先创建一个secret

apiVersion: v1kind: Secretmetadata:  name: ceph-secret  namespace: devdata:  key: QVFCMTZWMVZvRjVtRXhBQtVrQ1FzN2JCajhWVUxSdzI2Qzg0SEE9PQ==

最后创建我们需要的volume挂载卷就可以在POD中正常使用了

apiVersion: v1kind: PersistentVolumemetadata:  name: cephfs-pvspec:  capacity:    storage: 200Gi  acceSSModes:    - ReadWriteMany  cephfs:    monitors:      - 192.168.3.101:6789      - 192.168.3.102:6789      - 192.168.3.103:6789    user: admin    secretRef:      name: ceph-secret    readOnly: false  storageClassName: ceph  persistentVolumeReclaimPolicy: Recycle---kind: PersistentVolumeClaimapiVersion: v1metadata:  name: cephfs-pv-claimspec:  accessModes:    - ReadWriteMany  resources:    requests:      storage: 100Gi  storageClassName: ceph

5. 小技巧

如果大家没有搞定也可以先试试官方也提供整合好的demo 不需要开这么多组件才能使用,只需要以下命令即可:

docker run -d \        --net=host \        -v /etc/ceph:/etc/ceph \        -e MON_IP=172.16.0.13 \        -e CEPH_PUBLIC_NETWORK=172.16.0.0/24 \        ceph/demo

被ceph占用的磁盘会自己划分分区,无法在被二次使用了,如果需要重新初始化可以使用命令对磁盘进行全盘格式

 [root@ceph-1 ~]# fdisk -lDisk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x0008d73a   Device Boot      Start         End      Blocks   Id  System/dev/vda1   *        2048    83884031    41940992   83  LinuxWARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: gptDisk identifier: 17E24D34-44A5-46BB-8753-A882133156FF#         Start          End    Size  Type            Name 1         2048       206847    100M  unknown         ceph data 2      3483648    209715166   98.3G  unknown         ceph block 3       206848      2303999      1G  unknown         ceph block.db 4      2304000      3483647    576M  unknown         ceph block.wal

如果需要重新部署需要先,清理磁盘可以通过以下命名进行格式化

docker run -d --privileged=true -v /dev/:/dev/ -e OSD_DEVICE=/dev/vdb ceph/daemon zap_device

以上就是Ceph分布式文件共享解决方案是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: Ceph分布式文件共享解决方案是什么

本文链接: https://lsjlt.com/news/295322.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Ceph分布式文件共享解决方案是什么
    本篇文章给大家分享的是有关Ceph分布式文件共享解决方案是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。前言哈喽大家好呀! 这次给大家带来的Liunx软件分享是鼎鼎大名的C...
    99+
    2023-06-19
  • redis分布式共享内存的方法是什么
    Redis分布式共享内存的方法主要有以下几种:1. Redis Cluster:Redis Cluster是Redis官方推出的分布...
    99+
    2023-08-23
    redis
  • 分布式下的WebSocket解决方案是什么
    本篇内容主要讲解“分布式下的WebSocket解决方案是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分布式下的WebSocket解决方案是什么”吧!Web...
    99+
    2024-04-02
  • java分布式事务解决方案是什么
    Java分布式事务解决方案包括但不限于以下几种: 使用XA协议来管理分布式事务。XA协议是一种由X/Open组织定义的分布式事务...
    99+
    2024-04-02
  • PHP实践:分布式场景下的Session共享解决方案实现
    🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发...
    99+
    2023-08-30
    php 分布式 开发语言 session共享
  • Spring Session和Redis解决分布式Session跨域共享问题是什么
    本篇文章给大家分享的是有关Spring Session和Redis解决分布式Session跨域共享问题是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一...
    99+
    2024-04-02
  • MySQL分布式解决方案
      Mycat是一个开源的分布式数据库系统,其核心功能是分表分库,即将一个大表水平分割为多个小表, 存储在后端MySQL或者其他数据库里。取名Mycat原因一是简单好记,另一个则是希望未来能够入驻 Apache, Apache的开源产品T...
    99+
    2023-10-08
    mysql 分布式 数据库
  • 分布式文件管理:Python和Apache的解决方案?
    在当今互联网时代,我们每天都会产生大量的文件。为了更好地管理和存储这些文件,分布式文件管理系统应运而生。Python和Apache都有自己的分布式文件管理解决方案。那么,这两个解决方案有什么不同呢?本文将介绍它们的特点和使用方法。 一、P...
    99+
    2023-07-31
    apache 文件 分布式
  • 九种分布式ID解决方案
    文章目录 背景1、UUID2、数据库自增ID2.1、主键表2.2、ID自增步长设置 3、号段模式4、Redis INCR5、雪花算法6、美团(Leaf)7、百度(Uidgenerator)...
    99+
    2023-09-12
    分布式 数据库 java
  • 负载均衡文件共享的方法是什么
    负载均衡是一种将工作负载分配到多个计算资源上的方法,以提高系统的性能、可靠性和可扩展性。在文件共享方面,负载均衡可以通过以下几种方法...
    99+
    2023-09-02
    负载均衡
  • linux设置共享文件夹的方法是什么
    在Linux中,设置共享文件夹有多种方法,下面是两种常用的方法:1. 使用Samba共享文件夹:- 首先,确保已经安装了Samba软...
    99+
    2023-09-13
    linux
  • ubuntu共享文件夹挂载的方法是什么
    在Ubuntu上共享文件夹并挂载的方法有多种,以下是其中两种常用的方法:方法一:使用samba共享文件夹1. 首先安装samba服务...
    99+
    2023-08-08
    ubuntu
  • ubuntu和主机共享文件的方法是什么
    要在Ubuntu和主机之间共享文件,可以使用以下方法之一: 使用Samba共享:Samba是一个开源的跨平台软件,可以让Linu...
    99+
    2024-04-09
    ubuntu
  • Linux文件分布式系统是什么
    这篇文章主要介绍“Linux文件分布式系统是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux文件分布式系统是什么”文章能帮助大家解决问题。Lustre(www.lustre.org)  ...
    99+
    2023-06-28
  • Spring Boot/Spring Session/Redis的分布式Session共享如何解决
    本篇文章为大家展示了Spring Boot/Spring Session/Redis的分布式Session共享如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。分布式Web网站一般都会碰到集群s...
    99+
    2023-05-31
    springboot spring session redis
  • 大数据分布式中常见问题的解决方案是什么
    大数据分布式中常见问题的解决方案是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1分布式中的常见问题解决方案下面是关于分布式系统中最常见的三种问题本部分内容包括:分布式...
    99+
    2023-06-19
  • LCN分布式事务解决方案详解
    目录一、什么是分布式事务?二、lcn的实现思路2.1 本地执行的状态怎么提交给全局事务?2.2 本地事务的提交或回滚怎么实现?三、lcn的使用3.1 下载lcn-manager (全...
    99+
    2024-04-02
  • Win7访问共享文件速度过慢的解决方案(已测试)
      在同一个局域网络下,用户之间通常会共享各种各样的文件,有需要的用户就可以通过局域网来访问并下载自己需要的东西。但有不少使用Win7系统的朋友在访问共享文件的时候特别的慢,也不知道该如何处理这个问题,网络上的教程也是各...
    99+
    2023-06-12
    Win7 共享文件 解决 速度 访问 方案
  • redis分布式ID解决方案示例详解
    目录常用的分布式ID解决方案UUIDSnowflakeSnowflake算法的Java代码:LeafLeaf算法的Java代码:基于数据库自增ID生成基于UUID生成基于Redis生成基于ZooKeeper生成常用的分布...
    99+
    2023-03-07
    redis分布式ID 分布式ID解决方案
  • Laravel异常上下文解决方案分享
    目录前言开始改造优化实现逻辑复用总结前言 异常时我们通常希望在用户侧给一个友好的提示,但默认使用框架的异常处理方案是不 OK 的。 最近项目遇到一个情况,我们在遇到用户访问某个信息没...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作