ceph-anisble部署
1041
2022-05-28
Ceph是一種軟件定義存儲,Ceph的分布式基因使其可以輕易管理成百上千個節點、PB級及以上存儲容量的大規模集群,同時基于計算的扁平尋址設計使得Ceph客戶端可以直接和服務端的任意節點通信,從而避免因為存在訪問熱點而導致性能瓶頸。Ceph是一個統一存儲系統,即支持傳統的塊、文件存儲協議,例如SAN和NAS;也支持對象存儲協議,例如S3和Swift。
Ceph文件系統(CephFS)Linux內核驅動程序支持CephFS,這也使得CephFS高度適用于各大Linux操作系統發行版。CephFS將數據和元數據分開存儲,為上層的應用程序提供較高的性能以及可靠性。
Ceph可以配合云計算平臺,輕松實現分布式存儲統一架構,完成超融合技術的落地。
Ceph系統有幾大組件,OSD\Monitor\MDS\Managers
Ceph OSD:
Ceph的OSD(Object Storage Device)守護進程。主要功能包括:存儲數據、副本數據處理、數據恢復、數據回補、平衡數據分布,并將數據相關的一些監控信息提供給Ceph Moniter,以便Ceph Moniter來檢查其他OSD的心跳狀態。一個Ceph OSD存儲集群,要求至少兩個Ceph OSD,才能有效的保存兩份數據。注意,這里的兩個Ceph OSD是指運行在兩臺物理服務器上,并不是在一臺物理服務器上運行兩個Ceph OSD的守護進程。通常,冗余和高可用性至少需要3個Ceph OSD。
Monitor:
Ceph的Monitor守護進程,主要功能是維護集群狀態的表組,這個表組中包含了多張表,其中有Moniter map、OSD map、PG(Placement Group) map、CRUSH map。 這些映射是Ceph守護進程之間相互協調的關鍵簇狀態。 監視器還負責管理守護進程和客戶端之間的身份驗證。 通常需要至少三個監視器來實現冗余和高可用性。
MDS:
Ceph的MDS(Metadata Server)守護進程,主要保存的是Ceph文件系統的元數據。注意,對于Ceph的塊設備和Ceph對象存儲都不需要Ceph MDS守護進程。Ceph MDS為基于POSIX文件系統的用戶提供了一些基礎命令的執行,比如ls、find等,這樣可以很大程度降低Ceph存儲集群的壓力。
Managers:
Ceph的Managers(Ceph Manager),守護進程(ceph-mgr)負責跟蹤運行時間指標和Ceph群集的當前狀態,包括存儲利用率,當前性能指標和系統負載。 Ceph Manager守護程序還托管基于python的插件來管理和公開Ceph集群信息,包括基于Web的儀表板和REST API。 通常,至少有兩名Manager需要高可用性。
Ceph RBD IO流程
官網:https://ceph.io/
中文文檔:http://docs.ceph.org.cn/
實驗拓撲:
部署三個分布式Ceph節點,一臺Client用于測試
一、安裝配置Ceph服務
1.配置服務器時間同步
安裝一臺節點為主時間服務器,配置如下
其余服務器設置上游地址為主服務器
啟動服務即可,chronyc sources查看
2.安裝Ceph創建集群
在node1節點安裝ceph-deploy
[root@ceph-node1 yum.repos.d]# yum -y install ceph-deploy
若無則創建/etc/ceph配置文件夾,且所有ceph-deploy命令的執行都要在該文件夾下
#進入/etc/ceph,創建ceph集群
[root@ceph-node1 ~]# mkdir /etc/ceph [root@ceph-node1 ~]# cd /etc/ceph/ [root@ceph-node1 ceph]# ceph-deploy new ceph-node1
集群創建完成后,工作目錄下會創建集群配置文件和密鑰文件
#在node1上執行install命令,可以直接在所有節點安裝ceph軟件包
[root@ceph-node1 ceph]# ceph-deploy install ceph-node1 ceph-node2 ceph-node3
#安裝完成后,可以輸入ceph -v查看版本檢查是否安裝成功
[root@ceph-node1 ~]# ceph -v ceph version 0.94.5 (9764da52395923e0b32908d83a9f7304401fee43) [root@ceph-node2 ~]# ceph -v ceph version 0.94.5 (9764da52395923e0b32908d83a9f7304401fee43) [root@ceph-node3 ~]# ceph -v ceph version 0.94.5 (9764da52395923e0b32908d83a9f7304401fee43)
#在node1節點上創建第一個monitor
[root@ceph-node1 ceph]# ceph-deploy --overwrite-conf mon create-initial
#檢查集群狀態,可以看到此時處于不健康狀態
[root@ceph-node1 ceph]# ceph -s cluster 37b6fbec-7562-404a-8a43-2e443f53937e health HEALTH_ERR 64 pgs stuck inactive 64 pgs stuck unclean no osds monmap e1: 1 mons at {ceph-node1=192.168.1.31:6789/0} election epoch 2, quorum 0 ceph-node1 osdmap e1: 0 osds: 0 up, 0 in pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 64 creating
3.配置磁盤創建OSD
#disk list 列出節點上的所有可用磁盤,這里sdb為為服務器新加的50G磁盤
[root@ceph-node1 ceph]# ceph-deploy disk list ceph-node1 [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf 。。。。。。 [ceph-node1][DEBUG ] /dev/sdb other, unknown
#對磁盤進行分區:parted磁盤分區,mklabel修改卷標,mkpart分區
[root@ceph-node1 ceph]# parted /dev/sdb GNU Parted 3.1 使用 /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel 新的磁盤標簽類型? gpt 是/Yes/否/No? yes (parted) mkpart 分區名稱? []? 文件系統類型? [ext2]? 起始點? 0% 結束點? 100% (parted) p #輸出當前分區信息 Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 53.7GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name 標志 1 1049kB 53.7GB 53.7GB (parted) q 信息: You may need to update /etc/fstab. [root@ceph-node1 ceph]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 50G 0 disk └─sdb1 8:17 0 50G 0 part
#對分區進行格式化,創建掛載目錄進行掛載,并將文件夾權限配置為777
[root@ceph-node1 ceph]# mkfs.xfs /dev/sdb1 [root@ceph-node1 ceph]# mkdir /opt/osd1 [root@ceph-node1 ceph]# mount /dev/sdb1 /opt/osd1/ [root@ceph-node1 ceph]# chmod 777 /opt/osd1/
三個node節點都把磁盤進行相同操作
#在node1節點創建OSD節點
[root@ceph-node1 ceph]# ceph-deploy osd prepare ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3
創建完成后,在三個節點中,修改osd下所有文件的權限為777
#確認權限修改777后,激活OSD節點
[root@ceph-node1 ceph]# ceph-deploy osd activate ceph-node1:/opt/osd1/ ceph-node2:/opt/osd2 ceph-node3:/opt/osd3
#再次查看集群狀態,此時為健康模式
[root@ceph-node1 ceph]# ceph -s cluster 37b6fbec-7562-404a-8a43-2e443f53937e health HEALTH_OK monmap e1: 1 mons at {ceph-node1=192.168.1.31:6789/0} election epoch 2, quorum 0 ceph-node1 osdmap e13: 3 osds: 3 up, 3 in pgmap v19: 64 pgs, 1 pools, 0 bytes data, 0 objects 15460 MB used, 134 GB / 149 GB avail 64 active+clean
#最后開放權限給其他節點
[root@ceph-node1 ceph]# ceph-deploy admin ceph-node{1,2,3}
二、Ceph測試使用
1.安裝ceph客戶端
搭建一臺Ceph-Client測試機:配置網絡及yum源,配置主機名和hosts文件
[root@ceph-node1 ceph]# echo '192.168.1.34 ceph-client' >> /etc/hosts
#在node1節點上安裝client上所需的ceph軟件
[root@ceph-node1 ceph]# ceph-deploy install ceph-client
#在node1節點上開放權限給client
[root@ceph-node1 ceph]# ceph-deploy admin ceph-client
2.Ceph客戶端使用
#rbd creata創建塊設備鏡像image,map映射image為塊設備
[root@ceph-client ~]# rbd create foo --size 4096 -m ceph-node1 -k /etc/ceph/ceph.client.admin.keyring [root@ceph-client ~]# rbd map foo --name client.admin -m ceph-node1 -k /etc/ceph/ceph.client.admin.keyring /dev/rbd0
#rbd0塊設備格式化并掛載,正常使用
[root@ceph-client ~]# mkfs.xfs /dev/rbd0 meta-data=/dev/rbd0 isize=256 agcount=9, agsize=130048 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=1048576, imaxpct=25 = sunit=1024 swidth=1024 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@ceph-client ~]# mkdir /mnt/test [root@ceph-client ~]# mount /dev/rbd0 /mnt/test [root@ceph-client ~]# df -h|grep rbd0 /dev/rbd0 4.0G 33M 4.0G 1% /mnt/test
3.調整塊設備大小
#info foo可以查看當前塊設備信息,此時容量為4G
[root@ceph-client ~]# rbd info foo rbd image 'foo': size 4096 MB in 1024 objects order 22 (4096 kB objects) block_name_prefix: rb.0.1026.238e1f29 format: 1
#使用resize命令將大小修改至10G
[root@ceph-client ~]# rbd resize --size 10240 foo Resizing image: 100% complete...done. [root@ceph-client ~]# rbd info foo rbd image 'foo': size 10240 MB in 2560 objects order 22 (4096 kB objects) block_name_prefix: rb.0.1026.238e1f29 format: 1
特別注意的是,調整文件系統命令:
resize2fs命令 針對的是ext2、ext3、ext4文件系統 xfs_growfs命令 針對的是xfs文件系統
#執行調整文件系統大小,即可查看文件大小被擴容至10G
[root@ceph-client ~]# xfs_growfs /dev/rbd0 [root@ceph-client ~]# df -h|grep rbd0 /dev/rbd0 10G 33M 10G 1% /mnt/test
4.刪除塊設備
#1、取消塊設備掛載 ->2、取消鏡像與塊設備的映射 -> 3、刪除設備鏡像
[root@ceph-client ~]# df -h|grep rbd0 /dev/rbd0 10G 33M 10G 1% /mnt/test [root@ceph-client ~]# umount /dev/rbd0 [root@ceph-client ~]# rbd unmap /dev/rbd/rbd/foo [root@ceph-client ~]# rbd rm foo Removing image: 100% complete...done.
三、Ceph命令
1.檢查ceph安裝狀態
[root@ceph-node1 ceph]# ceph status cluster 37b6fbec-7562-404a-8a43-2e443f53937e health HEALTH_OK monmap e1: 1 mons at {ceph-node1=192.168.1.31:6789/0} election epoch 2, quorum 0 ceph-node1 osdmap e13: 3 osds: 3 up, 3 in pgmap v20: 64 pgs, 1 pools, 0 bytes data, 0 objects 15459 MB used, 134 GB / 149 GB avail 64 active+clean
2.檢查monitor仲裁狀態
[root@ceph-node1 ceph]# ceph quorum_status --format json-pretty { "election_epoch": 2, "quorum": [ 0 ], "quorum_names": [ "ceph-node1" ], "quorum_leader_name": "ceph-node1", "monmap": { "epoch": 1, "fsid": "37b6fbec-7562-404a-8a43-2e443f53937e", "modified": "0.000000", "created": "0.000000", "mons": [ { "rank": 0, "name": "ceph-node1", "addr": "192.168.1.31:6789\/0" } ] } }
3.導出monitor信息
[root@ceph-node1 ceph]# ceph mon dump dumped monmap epoch 1 epoch 1 fsid 37b6fbec-7562-404a-8a43-2e443f53937e last_changed 0.000000 created 0.000000 0: 192.168.1.31:6789/0 mon.ceph-node1
4.查看集群使用
[root@ceph-node1 ceph]# ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 149G 134G 15459M 10.07 POOLS: NAME ID USED %USED MAX AVAIL OBJECTS rbd 0 0 0 46019M 0
5.檢查monitor、OSD、PG配置組 狀態
[root@ceph-node1 ceph]# ceph mon stat e1: 1 mons at {ceph-node1=192.168.1.31:6789/0}, election epoch 2, quorum 0 ceph-node1 [root@ceph-node1 ceph]# ceph osd stat osdmap e13: 3 osds: 3 up, 3 in [root@ceph-node1 ceph]# ceph pg stat v20: 64 pgs: 64 active+clean; 0 bytes data, 15459 MB used, 134 GB / 149 GB avail
6.列出PG
[root@ceph-node1 ceph]# ceph pg dump
7.列出ceph存儲池
[root@ceph-node1 ceph]# ceph osd lspools 0 rbd,
8.檢查OSD的crush
[root@ceph-node1 ceph]# ceph osd tree ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.14996 root default -2 0.04999 host ceph-node1 0 0.04999 osd.0 up 1.00000 1.00000 -3 0.04999 host ceph-node2 1 0.04999 osd.1 up 1.00000 1.00000 -4 0.04999 host ceph-node3 2 0.04999 osd.2 up 1.00000 1.00000
9.列出集群的認證密鑰
[root@ceph-node1 ceph]# ceph auth list installed auth entries: osd.0 key: AQBFsx1f/+qKFRAAyLOYuF7ep/FXLMI5yca/zg== caps: [mon] allow profile osd caps: [osd] allow * osd.1 key: AQBRsx1fXCGlHBAAViSH6eCjRI7NbrLFWGajrQ== caps: [mon] allow profile osd caps: [osd] allow * osd.2 key: AQBksx1fgjK9NRAAe827GWfDqfMtwxRqJ3D0sA== caps: [mon] allow profile osd caps: [osd] allow * client.admin key: AQAsrh1fAngFJhAAKPsed40MDoLgbvk7L4kuJg== caps: [mds] allow caps: [mon] allow * caps: [osd] allow * client.bootstrap-mds key: AQAtrh1fcaafBxAA3EOMSIIlggVmUwPs6lIFzw== caps: [mon] allow profile bootstrap-mds client.bootstrap-osd key: AQAsrh1fYXJsMRAAQR1fAeuSAfJ+ze4YHei7Hw== caps: [mon] allow profile bootstrap-osd client.bootstrap-rgw key: AQAsrh1f6O+BORAAiWjtCwFnVgkjaVfFQXtTKQ== caps: [mon] allow profile bootstrap-rgw
專屬分布式存儲服務 分布式
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。