[喵咪Liunx(7)]Ceph分布式文件共享解决方案
原
荐
字数 2155
阅读 160
收藏 0
点赞 0
评论 0
前言
哈喽大家好呀! 这次给大家带来的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-1 192.168.3.102 ceph-2 192.168.3.103 ceph-3
这里使用 docker 的方式进行安装不会应为安装过程污染环境方便删除重试:
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce
需要配置好国内docker源来提高速度并且配置好开启自启(需要使用自己的阿里云账号获取加速地址)
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker sudo 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 ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b0c9d7680461 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 6789 192.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/ceph scp -r /etc/ceph root@192.168.3.102:/etc scp -r /var/lib/ceph/bootstrap* root@192.168.3.102:/var/lib/ceph ssh root@192.168.3.103 mkdir -p /var/lib/ceph scp -r /etc/ceph root@192.168.3.103:/etc scp -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 -l Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0008d73a Device Boot Start End Blocks Id System /dev/vda1 * 2048 83884031 41940992 83 Linux Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/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/mycephfs COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 10486 root cwd DIR 0,0 2 1099511627781 /mnt/mycephfs/data/dev/code
这样只是最简单的使用,还有关于rdb对象存储以及Ceph还有快照功能
在搭建好整个集群之后进行测试文件速度(这里主要测试的是5000多个小文件拷贝速度)如下:
# NAS盘 /app # time cp -rf php/ general/test real 2m 7.05s user 0m 0.13s sys 0m 1.80s # CEPH /app # time cp -rf php/ generalceph/test real 0m 6.88s user 0m 0.05s sys 0m 0.39s # 本地磁盘 /app # time cp -rf php/ php2 real 0m 1.16s user 0m 0.02s sys 0m 0.21s
大家可以看到CEPH的速度对于NAS盘提升不是一点两点是质的提升,面对本地磁盘差距也没有到不能接受的情况
4. 小技巧
如果大家没有搞定也可以先试试官方也提供整合好的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 -l Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0008d73a Device Boot Start End Blocks Id System /dev/vda1 * 2048 83884031 41940992 83 Linux WARNING: 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 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: gpt Disk 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
© 著作权归作者所有
共有人打赏支持
相关文章 最新文章
哈喽大家好啊!今天我们紧接着来学习关于 Go 语言的安装和使用Go打印出helloworld,本节内容将会讲解关于Go语言在Liunx下怎么安装,环境变量怎么配置分别起到了什么作用,然后我们把go运行起来并且...
喵了_个咪
2016/05/23
63
0
哈喽!大家好啊,喵咪 PHP 第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是在学习中的东西好 工具 分享出来和大家交流沟通,...
喵了_个咪
2016/06/09
408
0
有一段时间没有更新博客了,最近因为公司项目全球化以及最近慢慢在偏向学习团队管理忙的有点不可开交了,不过这次要给大家带来两篇关于Liunx日常开发维护管理中非常好用的两款利器,其中一个就是...
喵了_个咪
2016/10/17
130
0
今天笔者为大家带来了另外一款非常优秀的Liunx工具,这个工具有什么用呢?它能帮助我们解决一些特定场景下的端口转发需求,这个工具就是runetd,runetd可以非常方便的进行端口转发的设置,那就让我...
喵了_个咪
2016/07/26
56
0
[喵咪Liunx(5)集群管理利器pssh 哈喽大家好呀!大家在管理服务器的时候如果只是一两台还好,当你管理三台以上的服务器的时候,你安装任何一个软件更改任何一个配置文件就要无比麻烦的每一台机器...
喵了_个咪
2016/10/17
60
0
[喵咪Redis]Redis安装与介绍 哈喽大家好啊,这次要来和大家一起来了解学习 Redis 的一系列技术,最终目的是搭建一个高可用redis集群自动负载灾备,那我们先从最基础的Redis的一些基本介绍以及安装...
喵了_个咪
2016/06/29
55
0
哈喽!大家好呀,真是一坑未平一坑又起,otter还在继续更新的同时,笔者也为大家带来了关于kafka相关的一系列博客,要说到kafka就离不开现在特别火热的大数据技术,了解的童鞋可能只要一些大数据的...
喵了_个咪
2016/09/09
280
0
[喵咪KafKa(1)]KafKa的介绍以及使用场景 前言 哈喽!大家好呀,真是一坑未平一坑又起,otter还在继续更新的同时,笔者也为大家带来了关于kafka相关的一系列博客,要说到kafka就离不开现在特别火热...
优惠码优惠
06/24
0
0
PhalApi-v1.3.1 (感恩版)发布,PHP轻量级开源接口框架 [前言] 感恩节来临之际,PhalApi迎来了等候了一个多月的v1.3.1版本更新. 在v1.3.1版本中着重对1.3.0版本中存在BUG进行了修复,并且进一步...
喵了_个咪
2015/11/28
1K
5
基于PhalApi2的Redis拓展 前言 Redis在PHP开发中运用场景已经无处不在,小到简单缓存大到数据库或消息队列都可以使用Redis来进行实现,基于PhalApi2的出世,PhalApi2-Redis也紧接着进行了本次适...
喵了个咪
2017/08/20
0
0
没有更多内容
加载失败,请刷新页面
加载更多Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @Sharon啊:想成为你的有可能分享曾轶可的单曲《有可能的夜晚》 《有可能的夜晚》- 曾轶可 手机党少年们想听歌,请使劲儿戳(这里) 到了假期...
小小编辑
56分钟前
69
4
1、背景概述 Oracle官方在北京时间2018年4月18日凌晨发布了关键补丁更新,其中包含了OracleWebLogic Server的一个高危反序列化漏洞(CVE-2018-2628),通过该漏洞,攻击者可以在未授权的情况...
四年级小学生
今天
3
0
10.11 Linux 网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 (拓展:末尾有端口映射,jpg) ' 10.11 Linux网络相关: ~1. ifconfig 查看网卡ip (yum ins...
王鑫linux
今天
2
0
目前PostgreSQL已经出了PG11Beta2版本,细心的朋友可能已经发现,PG9.x及之前版本的xlog做了一些改动,在10以后的版本,xlog改成了wal,官方出于安全性的考虑做出了该改动。 随着这些变化,有...
闻术苑
今天
3
0
python2和 python 3都可以,先安装PyQT5: sudo apt-get install python-pyqt5 python3-pyqt5 安装PyQT4: sudo apt-get install python-qt4 python3-pyqt4 使用mayavi要安装下面依赖库: sudo......
wangxuwei
今天
3
0
1、开启事物 启动类上添加注解@EnableTransactionManagement,默认开启事物,注解事务管理,等同于xml配置方式的 <tx:annotation-driven /> 接下来就可以直接在service方法上添加@Transactio...
木九天
今天
3
1
很多知名的网站(如,百度;腾讯;360等)随着时间的推移,用户量越来越大,后台数据也越来越多。此时,服务器每秒钟的访问量可能就已经达到了亿级;这些网站的服务器要想扛着这么大的压力,...
em_aaron
今天
4
0
序 本文主要研究一下resilience4j的Retry Retry resilience4j-retry-0.13.0-sources.jar!/io/github/resilience4j/retry/Retry.java /** * A Retry instance is thread-safe can be used t......
go4it
昨天
3
0
在开发android时,在定义一个ImageVIew/ImageButton控件时,总是提示这个警告: [Accessibility] Missing contentDescription attribute on image 这是提醒我们需要增加contentDescription属...
hejunbinlan
昨天
2
0
sring data:spring底层默认进行数据访问采用的一个技术,是spring官方提供的用来简化数据访问的一个项目,在这个项目里有非常多的模块,能简化各种数据层的操作,比如spring date jpa简化关系...
番丶茄
昨天
3
0
没有更多内容
加载失败,请刷新页面
加载更多以上所述就是小编给大家介绍的《每日一博 | 使用 Ceph 实现的分布式文件共享解决方案》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux内核完全剖析
赵炯 / 机械工业出版社 / 2006-1 / 79.00元
本书对早期Linux操作系统内核全部代友文件进行了详细的剖析,旨在让读者在尽量短的时间内对Linux的工作机理获得全面而深刻的理解,为进一步学习和研究Linux系统打下坚实的基础。虽然选择的版本较低,但该内核已能够正常编译运行,并且其中已包括了Linux工作原理的精髓。书中首先以Linux源代码版本的变迁为主线,简要介绍了Lin-ux系统的发展历史,同时着重说明了各个内核版本之间的主要区别和改进方......一起来看看 《Linux内核完全剖析》 这本书的介绍吧!