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 $basearch baseurl= enabled=1 priority=1 gpgcheck=1 gpgkey= [Ceph-noarch] name=Ceph noarch packages baseurl= enabled=1 priority=1 gpgcheck=1 gpgkey= [ceph-source] name=Ceph source packages baseurl= enabled=0 priority=1 gpgcheck=1 gpgkey=
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]# ls ceph.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-8622796f83ef mon_initial_members = k8s-node1,k8s-node2 mon_host = 172.16.22.201,172.16.22.202 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx public 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]# ls ceph.bootstrap-mds.keyring ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.log rbdmap ceph.bootstrap-mgr.keyring ceph.bootstrap-rgw.keyring ceph.conf ceph.mon.keyring
10、檢視建立的叢集使用者
[root@k8s-node1 ceph]# ceph auth list installed auth entries: client.admin key: AQBavtVb2irGJBAAsbJcna7p5fdAXykjVbxznA== caps: [mds] allow * caps: [mgr] allow * caps: [mon] allow * caps: [osd] allow * client.bootstrap-mds key: AQBavtVbbNgXOxAAkvfj6L49OUfFX5XWd651AQ== caps: [mon] allow profile bootstrap-mds client.bootstrap-mgr key: AQBbvtVbwiRJExAAdsh1uG+nL8l3UECzLT4+vw== caps: [mon] allow profile bootstrap-mgr client.bootstrap-osd key: AQBbvtVbUV0NJxAAJAQ/yBs0c37C7ShBahwzsw== caps: [mon] allow profile bootstrap-osd client.bootstrap-rgw key: AQBbvtVb/h/pOhAAmwK9r8DeqlOpQHxz9F/9eA== caps: [mon] allow profile bootstrap-rgw mgr.k8s-node1 key: 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 health HEALTH_WARN 64 pgs degraded; 64 pgs stuck unclean; 64 pgs undersized
[root@k8s-node1 ceph]# ceph osd tree ID 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 df GLOBAL: 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
1、以下操作,大部分命令是在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 tree ID 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 stat 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 10, quorum 0,1,2 k8s-node1,k8s-node2,k8s-node3
在k8s-node1增加一個後設資料的角色
後設資料是在檔案系統時才有用,而我們用的是塊裝置,所以就沒用了
[root@k8s-node1 ceph]#ceph-deploy mds create k8s-node1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28916011/viewspace-2217817/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- GlusterFS分散式儲存學習筆記分散式筆記
- ES 筆記三十二:文件分散式儲存筆記分散式
- 分散式儲存轉崗記分散式
- Docker筆記2——儲存自己的LNMPDocker筆記LNMP
- CEPH分散式儲存搭建(物件、塊、檔案三大儲存)分散式物件
- FastDFS+Nginx搭建分散式圖片儲存ASTNginx分散式
- Hadoop HDFS 3.3.1分散式儲存搭建Hadoop分散式
- docker筆記44-rbd塊儲存的建立Docker筆記
- HDFS分散式儲存分散式
- Redis 分散式儲存Redis分散式
- 【大資料】BigTable分散式資料儲存系統分散式資料庫 | 複習筆記大資料分散式資料庫筆記
- 分散式儲存ceph 物件儲存配置zone同步分散式物件
- DAOS 分散式非同步物件儲存|儲存模型分散式非同步物件模型
- 使用 Docker 搭建 minio 檔案儲存Docker
- Gartner:浪潮儲存進入分散式儲存前三分散式
- 哪些企業需要分散式式儲存?分散式
- 分散式儲存glusterfs詳解【轉】分散式
- GlusterFS企業分散式儲存【轉】分散式
- 什麼是HDFS 分散式儲存分散式
- python如何分散式儲存檔案?Python分散式
- 分散式儲存的六大優點分散式
- ELK 搭建筆記--Docker 方式筆記Docker
- GlusterFS分散式儲存叢集部署記錄-相關補充分散式
- GlusterFS分散式儲存系統中更換故障Brick的操作記錄分散式
- docker筆記37-docker私有倉庫的搭建Docker筆記
- 分散式儲存中的資料分佈策略分散式
- 杉巖分散式儲存解決方案分散式
- 004.MinIO-DirectPV分散式儲存部署分散式
- Ceph分散式儲存技術解讀分散式
- Bayou複製分散式儲存系統分散式
- 七牛儲存使用筆記筆記
- 分散式基礎&專案環境搭建_學習筆記分散式筆記
- 分散式儲存產業方陣:2022年分散式儲存發展白皮書(附下載)分散式產業
- 海量圖片儲存,杉巖分散式物件儲存輕鬆應對分散式物件
- 基於MFS高可用的分散式儲存架構分散式架構
- HDFS分散式儲存的意義及技術解析分散式
- 也淺談下分散式儲存要點分散式
- 提升Raft以加速分散式鍵值儲存Raft分散式