本篇文章給大家分享的是有關(guān)Ceph分布式文件共享解決方案是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)建站成立于2013年,先為紅山等服務(wù)建站,紅山等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為紅山企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
哈嘍大家好呀! 這次給大家?guī)淼腖iunx軟件分享是鼎鼎大名的Ceph分布式文件系統(tǒng),筆者了解到Ceph也是遇到了一個(gè)問題就是在使用Kubeneters的時(shí)候在各個(gè)容器中都需要使用同一套文件,但是使用NAS盤的方式不管是更新還是讀取都要忍受2分鐘之久而且還會(huì)出現(xiàn)文件占用失敗的問題,筆者找了找現(xiàn)有和Kuberneters結(jié)合比較好的文件系統(tǒng)才發(fā)現(xiàn)Ceph,那么就開始進(jìn)行Ceph的搭建和使用吧
附上:
喵了個(gè)咪的博客:w-blog.cn
Ceph官網(wǎng) :https://ceph.com/
首先需要3臺(tái)服務(wù)器來做集群,ceph默認(rèn)會(huì)進(jìn)行文件三份的冗余來保障文件不易丟失,服務(wù)器IP地址如下:
PS:這里使用的是Centos7的系統(tǒng)版本
192.168.3.101 ceph-1 192.168.3.102 ceph-2 192.168.3.103 ceph-3
這里使用docker的方式進(jìn)行安裝不會(huì)應(yīng)為安裝過程污染環(huán)境方便刪除重試:
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
需要配置好國內(nèi)docker源來提高速度并且配置好開啟自啟(需要使用自己的阿里云賬號(hào)獲取加速地址)
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
在各個(gè)節(jié)點(diǎn)上拉取需要使用到的Docker鏡像
docker pull ceph/daemon
在node1節(jié)點(diǎn)上運(yùn)行 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運(yùn)行狀態(tài),并且執(zhí)行命令查看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容器會(huì)把后續(xù)需要使用到的端口映射出來
[root@ceph-1 ~]# yum install tcping [root@ceph-1 ~]# tcping 192.168.3.101 6789 192.168.3.101 port 6789 open
Ceph有兩種方式在各個(gè)節(jié)點(diǎn)之間共享配置,一種是文件的方式需要吧第一個(gè)啟動(dòng)起來的節(jié)點(diǎn)的文件CP到其他節(jié)點(diǎn),另外一種是使用配置服務(wù)(比如etcd或者consul) 這里使用的文件的方式存放公共配置問題復(fù)制配置文件 將 node1 上的配置文件復(fù)制到 node02 和 node03,復(fù)制的路徑包含/etc/ceph和/var/lib/ceph/bootstrap-*下的所有內(nèi)容。
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
啟動(dòng)第二個(gè)和第三個(gè) mon 在 node02 上執(zhí)行以下命令啟動(dòng) 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 上執(zhí)行以下命令啟動(dòng) 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
在任意節(jié)點(diǎn)上在查看ceph集群狀態(tài)可以看到有三個(gè)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:
接著就需要運(yùn)行osd服務(wù)把某個(gè)磁盤給ceph作為文件共享系統(tǒng)的基礎(chǔ)存儲(chǔ),所以我們需要為三臺(tái)服務(wù)器掛載對(duì)應(yīng)的磁盤(筆者這里使用的是阿里云的云服務(wù)器,這里掛載了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
三臺(tái)機(jī)器分別運(yùn)行(如果需要掛載多塊可以運(yùn)行多個(gè)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
我們?cè)俅尾榭窗l(fā)現(xiàn)osd3個(gè)節(jié)點(diǎn)已經(jīng)上線了
[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:
但是我們并看不到有存儲(chǔ)空間,主要是mgr沒有啟動(dòng),我們把mds和rgw也一起跑起來在node1節(jié)點(diǎn)上:
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
可以使用ceph掛載磁盤進(jìn)行使用,但是ceph有很強(qiáng)的用戶校驗(yàn)機(jī)制所以需要先拿到訪問key ,并且在使用過程中可以指定多個(gè)節(jié)點(diǎn)這就形成了負(fù)載均衡 用內(nèi)核驅(qū)動(dòng)掛載 Ceph 文件系統(tǒng) — 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
這樣只是最簡(jiǎn)單的使用,還有關(guān)于rdb對(duì)象存儲(chǔ)以及Ceph還有快照功能
在搭建好整個(gè)集群之后進(jìn)行測(cè)試文件速度(這里主要測(cè)試的是5000多個(gè)小文件拷貝速度)如下:
# 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的速度對(duì)于NAS盤提升不是一點(diǎn)兩點(diǎn)是質(zhì)的提升,面對(duì)本地磁盤差距也沒有到不能接受的情況
筆者的最終目的是在K8S中可以使用ceph作為高速共享盤,那么就需要借助K8S支持的cephFS文件掛載,具體對(duì)應(yīng)的編排如下
因?yàn)槭褂胏eph需要密碼所以我們先創(chuàng)建一個(gè)secret
apiVersion: v1 kind: Secret metadata: name: ceph-secret namespace: dev data: key: QVFCMTZWMVZvRjVtRXhBQTVrQ1FzN2JCajhWVUxSdzI2Qzg0SEE9PQ==
最后創(chuàng)建我們需要的volume掛載卷就可以在POD中正常使用了
apiVersion: v1 kind: PersistentVolume metadata: name: cephfs-pv spec: 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: PersistentVolumeClaim apiVersion: v1 metadata: name: cephfs-pv-claim spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: ceph
如果大家沒有搞定也可以先試試官方也提供整合好的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占用的磁盤會(huì)自己劃分分區(qū),無法在被二次使用了,如果需要重新初始化可以使用命令對(duì)磁盤進(jìn)行全盤格式
[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
如果需要重新部署需要先,清理磁盤可以通過以下命名進(jìn)行格式化
docker run -d --privileged=true -v /dev/:/dev/ -e OSD_DEVICE=/dev/vdb ceph/daemon zap_device
以上就是Ceph分布式文件共享解決方案是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁名稱:Ceph分布式文件共享解決方案是什么
當(dāng)前URL:http://www.chinadenli.net/article24/joieje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、面包屑導(dǎo)航、商城網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)