Ubuntu18.04部署P版ceph


ceph作為目前最火的開源分布式存儲,支持對象,塊,文件存儲。把每個需要管理的數據流(比如文件)切分成多個固定大小的對象數據,並以其原子單元作為存取。

一ceph的存儲核心服務是rados(可靠,自動化分布式對象存儲)。

二ceph集群角色有如下幾個

1.若干的 Ceph OSD(對象存儲守護程序),一般一塊磁盤起一個osd進程。
2.至少需要一個 Ceph Monitors 監視器(1,3,5,7...)用於維護集群狀態映射,比如 ceph 集群中有多少存儲池、每個存儲池有多少 PG 以及存儲池和 PG的映射關系等, monitor map, manager map, the OSD map, the MDS map, and theCRUSH map,這些映射是 Ceph 守護程序相互協調所需的關鍵群集狀態,此外監視器還負責管理守護程序和客戶端之間的身份驗證(認證使用 cephX 協議)。生產環境mon節點一般為3個。
3.兩個或以上的 Ceph 管理器 managers。負責跟蹤運行時指標和 Ceph 集群的當前狀態。
4.高可用的 Ceph Metadata Server(文件系統元數據服務)
5.管理節點,一般是ceph-deploy。生產中管理節點一般不部署其他功能,提高操作安全系數。
 
ceph存儲文件過程(crush算法)
1.在ceph中一切皆對象,當一個文件作為對象存儲進來時,首先客戶端通過mon節點獲取集群map副本,使用對象和池ID轉換成對象。(任何數據流進來都是二進制,和池ID生成對象名,比如1010+pool 1生成obj1),再和PG數進行哈希就能得到最終存放數據的那個PG。此時crush算法會去根據PG找到對應的主osd和副osd,最終寫入數據通知客戶端。一切由客戶端進行操作,所以不會影響集群性能。
注:crush層次結構
磁盤→節點→機架→DC,當然電源開關等等都是,稱為故障域

三正式安裝

3.1下載地址

Ubuntu:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/bionic/

3.2部署環境:

主機名 publi network cluster network 功能組件
admin 192.168.89.140 192.168.64.140 ceph-deploy,mon
node1 192.168.89.141 192.168.64.141 mon,osd,mgr
node2 192.168.89.142 192.168.64.142 mon,osd,mgr,mds
node3 192.168.89.143 192.168.64.143 rgw,osd

時間同步

關閉selinux和防火牆

配置域名解析

配置所有節點之間免ssh登錄                  注意:  配置的是普通用戶

每個節點2塊磁盤

3.3ceph安裝配置

3.3.1 添加Pacific版本源

root@admin:wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -
root@admin:echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main">> /etc/apt/sources.list
root@admin:apt-get update
3.3.2 創建普通用戶:不建議用ceph用戶,ceph作為守護進程使用。每個節點都需要
root@admin:groupadd -r -g 2022 xxx && useradd -r -m -s /bin/bash -u2022 -g 2022 xxx && echo xxx:123456 | chpasswd
root@admin:echo "xxx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
3.3.3 管理安裝ceph-deploy
root@admin:apt install ceph-deploy                        2.0.1版本
3.3.4管理節點初始化mon節點
xxx@admin:mkdir cluster && cd cluster
xxx@admin~/cluster$:ceph-deploy new --cluster-network 192.168.64.0/24 --public-network 192.168.89.0/24 admin node1 node2
報錯: bash:python2:command not found
ERROR runtimeError:connecting to host:admin node1 node2 resulted in errors:IOError cant send(already closed)
解決辦法:
apt install python2.7 -y       
ln -sv /usr/bin/python2.7 /usr/bin/python2
3.3.5各個節點安裝ceph
xxx@admin~/cluster$:ceph-deploy    install --no-adjust-repos --nogpgcheck admin node1 node2 node3
root@admin:ceph version 16.2.5 (0883bdea7337b95e4b6 11c768c0279868462204a) pacific (stable)    安裝完成, 可能會因沒有修改源安裝成13版本
3.3.6 初始化mon並生產秘鑰,能看到生成的key
xxx@admin~/cluster$:ceph-deploy mon create-initial
驗證mon節點

 

3.3.7 分發admin秘鑰,理論上可以讓任何節點都管理配置,此外同步集群配置文件和認證文件。一般僅僅是mon節點,當有客戶端使用也要分發。

 xxx@admin~/cluster$:ceph-deploy admin admin node1 node2 node3

 

3.3.8部署manager節點(在L版本及以上才有)

 xxx@admin~/cluster$:ceph-deploy mgr create node1 node2(無法連續執行,分開執行單個節點)

 3.3.9ceph-deploy配置系統環境,方便執行ceph命令

xxx@admin~/cluster$:ceph-deploy admin admin  給自己授權

xxx@admin~/cluster$:setfacl -m u:xxx:rw /etc/ceph/ceph.client.admin.keyring
xxx@admin~/cluster$:ceph config set mon auth_allow_insecure_global_id_reclaim false
可以用ceph -s查看集群

 

 3.3.10列出node節點磁盤

xxx@admin~/cluster$:ceph-deploy disk list  node1

 

 3.3.11 添加osd

 xxx@admin~/cluster$:ceph-deploy osd create node1 --data  /dev/sdb     

 其他主機類似操作

 全部添加完查看集群狀態ceph osd tree

 

 3.3.12 移除osd

1.停用設備  ceph osd out osd.1

2在osd所在節點停止進程 systemctl stop ceph-osd@1

3.移除設備  ceph osd purge 1 --yes-i-really-mean-it

4.清除osd lvm信息 vgremove ceph-xxx     ceph-xxx信息可以用ceph-volume lvm list查看。此操作不是必須,是用於重新將磁盤添加回集群前操作。

注:也可以刪除/dev/dm-xx,同時清除dm-xx的文件系統(dd實現),但不推薦。

3.3.13 測試上傳下載

xxx@admin~/cluster$:ceph osd pool create myrbd1  32  32    myrbd1:池名  32:PG 32: PGP

rados put msg1 /var/log/syslog --pool=mypool   把 messages 文件上傳到 mypool 並指定對象 id 為 msg1
rados ls --pool=mypool       列出文件
ceph osd map mypool msg1  獲取文件信息
rados get msg1 --pool=mypool /opt/my.txt   下載文件
rados rm msg1 --pool=mypool    刪除文件
3.3.14 擴展ceph-mon節點
xxx@admin~/cluster:ceph-deploy mon add nodexxx
驗證mon狀態
ceph quorum_status        ceph quorum_status --format json-pretty
3.3.15 擴展mgr節點
xxx@admin~/cluster:ceph-deploy mgr create  nodexxx
xxx@admin~/cluster:ceph-deploy admin nodexxx   同步配置文件
 
3.3.16 擴展rgw,完成后查看http://xxxxx:7480
xxx@admin~/cluster:ceph-deploy rgw  create  nodexxx

 

 注:由於此時走的是http協議並不安全,可以使用證書加密方式來保障安全。配置如下

→1在rgw節點創建證書目錄,並自簽證書   

mkdir /etc/ceph/certs

cd certs;openssl genrsa -out civetweb.key 2048

openssl req -new -x509 -key civetweb.key -out civetweb.crt -subj "/CN=rgw.ty.net"

cat civetweb.key civetweb.crt >civetweb.pem

→2 rgw節點的ceph.conf配置新增如下

 →3重啟rgw服務

 systemctl restart ceph-radosgw@rgw.node3.service  或者systemctl restart ceph-radosgw.taget

→4修改本地主機的host文件,為了做域名解析  /system32/dirvers/host

驗證

 

以下 rbd和cephfs的掛載硬盤均為試驗多次重復使用,會有圖片不一致之處。

3.3.17創建rbd
root:ceph osd pool application enable myrbd1 rbd #對存儲池啟用 RBD 功能
root:enabled application 'rbd' on pool 'myrdb1'
root:rbd pool init -p myrbd1 #通過 RBD 命令對存儲池初始化  注:非常重要,不然無法使用
rbd需要創建image才能作為塊設備使用
root:rbd create img1 --size 5G --pool myrbd1,查看用rbd info myrbd1/img1,rbd info --image img1 --pool myrbd1

3.3.18查看ceph集群使用狀態  ceph df

 

3.3.19客戶端使用ceph塊設備,安裝ceph-mon,將管理節點的配置和認證文件同步給客戶端

客戶端  apt install ceph-common    //  yum install ceph-common    生產為openstack提供塊設備較多

管理節點:root@admin scp ceph.conf ceph.client.admin.keyring root@xxx:/etc/ceph/

 客戶端:rbd -p myrdb1  map img1        注意:ceph為P版,客戶端內核版本或ceph版本過低,會導致無法映射。此模式使用的賬號是admin,最高權限

客戶端:進行格式化掛載

 

使用普通賬號掛載:

→1創建普通賬號,可以選擇任何組件的權限,mon,mds,rgw,osd等。

→2創建賬號對應的key

 

 

→3將key傳到客戶端

 

 →4客戶端使用普通賬號登入ceph集群

ceph --user tyy -s

→5客戶端映射鏡像,格式化掛載使用

 

3.3.20 調整pg,此操作可以在任何mon節點進行

Ceph集群中的PG總數:

PG總數 = (OSD總數 * 100 / 最大副本數)

** 結果必須舍入到最接近的2的N次方冪的值。

Ceph集群中每個pool中的PG總數:

存儲池PG總數 = (OSD總數 * 100 / 最大副本數) / 池數

→1  檢查rbd這個pool里已存在的PG和PGP數量:

root:ceph osd pool get myrbd1 pg_num

pg_num: 128

root:ceph osd pool get myrbd1 pgp_num

pg_num: 128

→2 檢查pool的復制size

root:ceph osd dump |grep size|grep myrbd1(池名)

pool 2 'myrbd1' replicated size 3 min_size 2 crush_ruleset 0 object_hash rjenkins pg_num 128 pgp_num 128 last_change 45 flags hashpspool stripe_width 0

       2:池 ID

       myrbd1:池名

       replicate size:副本數

→3 根據公式計算出pg值並修改,本試驗中pg=500/3,按照pg值必須接近2^n,所以修改成256。當然試驗可以自定義值,不得超過默認值340即可。

ceph osd pool set myrbd1  pg_num 256

ceph osd pool set myrbd1 pgp_num 256

注意:因為僅僅創建了一個池,如果有多個池,pg需要除以池數,每個池都要進行pg和pgp值得修改。

 

3.3.21使用cephfs

→1 在deploy節點選擇node2創建mds服務器

 xxx@admin~/cluster:ceph-deploy mds create node2

→2 在node2上創建cephfs所需要的數據池和元數據池

 ceph osd pool create cephfs_data 16

ceph osd pool create cephfs_metadata 16    

注意:兩個池的pg值可以不同

→3 創建cephfs文件系統

 ceph fs new cephfs_storage cephfs_metadata cephfs_data

查看是否成功創建

 

 

 可以看到對應的池,文件系統都已成功

→4 客戶端安裝ceph-mon,並掛載cephfs。

apt install ceph-mon   -y // yum install ceph-mon -y

創建目錄點

mkdir /mnt/cephfs

掛載並驗證

mount -t ceph 192.168.89.142:6789:/ /mnt/cephfs/ -o name=admin,secret=AQCnHhhhbsRFDRAAOU4KgYm73B2ZAWnZtjDG7w==

 

 

 注意:命令中的secret是從mon節點拷貝過去的,/etc/ceph/ceph.client.admin.keyring中的key。由於明文相對危險,所以一般把key單獨拿出來做個文件。

 

把key值放出admin.secret 。然后命令修改為mount -t ceph 192.168.89.142:6789:/ /mnt/cephfs/ -o name=admin,secretfile=/etc/ceph/admin.secret。

 

可以像塊設備一樣使用普通賬號,需要修改池賬號權限池為文件存儲池,依舊以上圖池為例。pool=cephfs_data,普通賬號為ty。

將生成的keyring傳到客戶端上,登錄ceph集成--ceph --user  ty -s。

客戶端進行掛載,方式依舊如上所寫可以用key或者admin.secret文件,但是name需要修改成ty。

當然有多個mds服務,可以同時掛載mount -t ceph xxxx:6789,xxxxxx:6789,192.168.89.142:6789:/ /mnt/cephfs/ -o name=admin,secretfile=/etc/ceph/ty.secret

 

 

 

 

→5刪除文件系統以及池

客戶端取消掛載   umount /mnt/cephfs

cephfs節點     systemctl stop ceph-mds.target       

       ceph fs rm cephfs_storage  --yes-i-really-mean-it
      ceph osd pool rm cephfs_data cephfs_data --yes-i-really-really-mean-it
      ceph osd pool rm cephfs_data cephfs_metadata --yes-i-really-really-mean-it

注意:如果報錯無法刪除,請在mon節點/etc/ceph/ceph.conf添加mon allow pool delete = true,將此文件同步給其他mon節點
ceph-deploy --overwrite-conf config push node{1..2},所有mon節點重啟服務:systemctl restart ceph-mon.target

 3.3.22 鏡像快照
→1創建快照.
rbd snap create --pool myrbd1 --image img1 --snap img1-snap

 →2刪除快照

rbd snap remove --pool myrbd1 --image img1 --snap img1-snap
→3回滾快照
rbd snap rollback --pool myrbd1 --image img1 --snap img1-snap
 
 
 
--------------------------------------------------------------------
但凡涉及ceph.conf配置的修改,必須同步到其他節點,以免文件不同步出錯。
但凡涉及服務,例如mds,rgw,osd,mon等變動必須重啟服務。
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM