叢集基礎之04(部署ceph實驗環境、部署ceph叢集、建立Ceph塊儲存、塊儲存應用、掛載Ceph檔案系統、建立物件儲存伺服器)
目錄
前言:
Ceph簡介
Ceph是一個統一的分散式儲存系統,設計初衷是提供較好的效能、可靠性和可擴充套件性。
Ceph專案最早起源於Sage就讀博士期間的工作(最早的成果於2004年發表),並隨後貢獻給開源社群。在經過了數年的發展之後,目前已得到眾多雲計算廠商的支援並被廣泛應用。RedHat及OpenStack都可與Ceph整合以支援虛擬機器映象的後端儲存。
Ceph特點
-
高效能
a. 摒棄了傳統的集中式儲存元資料定址的方案,採用CRUSH演算法,資料分佈均衡,並行度高。
b.考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。
c. 能夠支援上千個儲存節點的規模,支援TB到PB級的資料。
-
高可用性
a. 副本數可以靈活控制。
b. 支援故障域分隔,資料強一致性。
c. 多種故障場景自動進行修復自愈。
d. 沒有單點故障,自動管理。
-
高可擴充套件性
a. 去中心化。
b. 擴充套件靈活。
c. 隨著節點增加而線性增長。
-
特性豐富
a. 支援三種儲存介面:塊儲存(RBD)、檔案系統儲存(CephFS)、物件儲存(RGW全稱RADOS gateway)。
b. 支援自定義介面,支援多種語言驅動。
Ceph架構
支援三種介面:
-
Object:有原生的API,而且也相容Swift和S3的API。
-
Block:支援精簡配置、快照、克隆。
-
File:Posix介面,支援快照。
Ceph核心元件及概念介紹
-
Monitor
一個Ceph叢集需要多個Monitor組成的小叢集,它們通過Paxos同步資料,用來儲存OSD的元資料。
-
OSD
OSD全稱Object Storage Device,也就是負責響應客戶端請求返回具體資料的程序。一個Ceph叢集一般都有很多個OSD。
-
MDS(元資料)--------描述資料屬性的資料
MDS全稱Ceph Metadata Server,是CephFS服務依賴的元資料服務
-
Object
Ceph最底層的儲存單元是Object物件,每個Object包含元資料和原始資料。
-
PG
PG全稱Placement Grouops(歸置組),是一個邏輯的概念,一個PG包含多個OSD。引入PG這一層其實是為了更好的分配資料和定位資料。
-
RADOS
RADOS全稱Reliable Autonomic Distributed Object Store,是Ceph叢集的精華,使用者實現資料分配、Failover等叢集操作。
-
Libradio
Librados是Rados提供庫,因為RADOS是協議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支援。
-
CRUSH
CRUSH是Ceph使用的資料分佈演算法,類似一致性雜湊,讓資料分配到預期的地方。
-
RBD(類似於ISCI的方式提供塊儲存)
RBD全稱RADOS block device,是Ceph對外提供的塊裝置服務。
-
RGW
RGW全稱RADOS gateway,是Ceph對外提供的物件儲存服務,介面與S3和Swift相容。
-
CephFS(共享資料夾的方式提供儲存)
CephFS全稱Ceph File System,是Ceph對外提供的檔案系統服務。
1、部署ceph實驗環境:
準備四臺KVM虛擬機器,其中三臺作為儲存叢集節點,一臺安裝為客戶端,實現如下功能:
- 建立1臺客戶端虛擬機器
- 建立3臺儲存叢集虛擬機器
- 配置主機名、IP地址、YUM源
- 修改所有主機的主機名
- 配置無密碼SSH連線
- 配置NTP時間同步
- 建立虛擬機器磁碟
步驟一:安裝前準備
1)物理機為所有節點配置yum源,注意所有的虛擬主機均需要掛載安裝光碟。
- [[email protected] ~]# yum -y install vsftpd
- [[email protected] ~]# mkdir /var/ftp/ceph
- [[email protected] ~]# mount -o loop \
- rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph
- [[email protected] ~]# systemctl restart vsftpd
2)修改所有節點yum配置(以node1為例)
- [[email protected] ~]# cat /etc/yum.repos.d/ceph.repo
- [mon]
- name=mon
- baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
- gpgcheck=0
- [osd]
- name=osd
- baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
- gpgcheck=0
- [tools]
- name=tools
- baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
- gpgcheck=0
3)修改/etc/hosts並同步到所有主機。
- [[email protected] ~]# cat /etc/hosts
- ... ...
- 192.168.4.10 client
- 192.168.4.11 node1
- 192.168.4.12 node2
- 192.168.4.13 node3
- [[email protected] ~]# for i in 10 11 12 13
- > do
- > scp /etc/hosts 192.168.2.$i:/etc/
- > done
3)配置無密碼連線。
[[email protected] ~]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts------可以讓ssh時不需要再yes確認
- [[email protected] ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
- [[email protected] ~]# for i in 10 11 12 13
- > do
- > ssh-copy-id 192.168.4.$i
- > done
步驟二:配置NTP時間同步
1)建立NTP伺服器。
- [[email protected] ~]# yum -y install chrony
- [[email protected] ~]# cat /etc/chrony.conf
- server 0.centos.pool.ntp.org iburst
- allow 192.168.4.0/24
- local stratum 10
- [[email protected] ~]# systemctl restart chronyd
2)其它所有階段與NTP伺服器同步時間(以node1為例)。
- [[email protected] ~]# cat /etc/chrony.conf
- server 192.168.4.10 iburst
- [[email protected] ~]# systemctl restart chronyd
步驟三:準備儲存磁碟
使用virt-manager為虛擬機器新增磁碟。
[[email protected] ~]# virt-manager
2 、部署ceph叢集
步驟一:部署軟體
1)在node1安裝部署工具,學習工具的語法格式。
- [[email protected] ~]# yum -y install ceph-deploy
2)建立目錄
- [[email protected] ~]# mkdir ceph-cluster-----建立工作目錄
- [[email protected] ~]# cd ceph-cluster/------進入工作目錄
步驟二:部署Ceph叢集
1)建立Ceph叢集配置。--------一定要在工作目錄,要不然系統找不到
- [[email protected] ceph-cluster]# ceph-deploy new node1 node2 node3
2)給所有節點安裝軟體包。--------一定要在工作目錄,要不然系統找不到
- [[email protected] ceph-cluster]# ceph-deploy install node1 node2 node3
3)初始化所有節點的mon服務(主機名解析必須對)--------一定要在工作目錄,要不然系統找不到
- [[email protected] ceph-cluster]# ceph-deploy mon create-initial
步驟三:建立OSD
1)準備磁碟分割槽lsblk
[[email protected] ~]# for i in {1..3}------對node{1..3}同時進行分割槽
> do
> ssh node$i parted /dev/vdb mklabel gpt
> done
[[email protected] ~]# for i in {1..3}; do ssh node$i parted /dev/vdb mkpart primary 1M 50%; done
[[email protected] ~]# for i in {1..3}; do ssh node$i parted /dev/vdb mkpart primary 50% 100%; done
[[email protected] ~]# for i in {1..3}--------為分割槽設定所屬組和所屬者為ceph
> do
> ssh node$i chown ceph.ceph /dev/vdb1
> done
[[email protected] ~]# for i in {1..3}; do ssh node$i chown ceph.ceph /dev/vdb2; done
也可以:
vim /etc/udev/rules.d/90-cepdisk.rules
ACTION=="add",KERNEL=="vdb?",OWNER="ceph",GROUP="ceph"
for i in {2..3}; do scp /etc/udev/rules.d/90-cepdisk.rules node$i:/etc/udev/rules.d/; done
//這兩個分割槽用來做儲存伺服器的日誌journal盤
2)初始化清空磁碟資料(僅node1操作即可)--------一定要在工作目錄,要不然系統找不到
- [[email protected] ]# ceph-deploy disk zap node1:vdc node1:vdd
- [[email protected] ceph-cluster]# ceph-deploy disk zap node2:vdc node2:vdd
- [[email protected] ceph-cluster]# ceph-deploy disk zap node3:vdc node3:vdd
3)建立OSD儲存空間(僅node1操作即可)--------一定要在工作目錄,要不然系統找不到
- [[email protected] ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
- //建立osd儲存裝置,vdc為叢集提供儲存空間,vdb1提供JOURNAL日誌,
- //建立osd儲存裝置,vdd為叢集提供儲存空間,vdb2提供JOURNAL日誌
- [[email protected] ceph-cluster]# ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
- [[email protected] ceph-cluster]# ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2
步驟四:驗證測試
1) 檢視叢集狀態
- [[email protected] ~]# ceph -s
- 正常顯示:
[[email protected] ceph-clu]# ceph -s
cluster 1de07da3-cabd-4355-8b20-7b19bce6157e
health HEALTH_OK
monmap e1: 3 mons at {node1=192.168.4.1:6789/0,node2=192.168.4.2:6789/0,node3=192.168.4.3:6789/0}
election epoch 6, quorum 0,1,2 node1,node2,node3
osdmap e34: 6 osds: 6 up, 6 in
flags sortbitwise
pgmap v70: 64 pgs, 1 pools, 0 bytes data, 0 objects
202 MB used, 61170 MB / 61373 MB avail
64 active+clean
- 若沒有顯示healthy_ok,則按下面方法處理:
錯例1:
ceph -s
若出現下面錯誤:
osd create 建立OSD儲存空間,如提示run 'gatherkeys'
則需要執行ceph-deploy gatherkeys node1 node2 node3
systemctl restart ceph\8.service ceph\*.tartget--------在所有節點操作或僅在失敗節點重起服務
錯例2:ceph -s
health HEALTH_WARN
clock skew detected on mon.node2, mon.node3
Monitor clock skew detected
vim /etc/ceph/ceph.conf
mon clock drift allowed = 2
mon clock drift warn backoff = 30
cp /etc/ceph/ceph.conf /root/ceph-cluster
cd /root/ceph-cluster
ceph-deploy --overwrite-conf admin node2 node3
systemctl restart [email protected]上執行
systemctl restart [email protected]上執行
systemctl restart [email protected]上執行
若遇到別的錯誤,則按下面的方法來恢復:
重新部署ceph叢集:
在每個節點上執行:
停止服務:
[[email protected] ceph]# systemctl stop ceph-\*
[[email protected] ceph]# systemctl stop ceph-\*
[[email protected] ceph]# systemctl stop ceph-\*
解除安裝ceph軟體:
僅在node1執行下面的命令:
[[email protected] ceph-cluster]# ceph-deploy purge node1 node2 node3
解除安裝OSD
在每個節點上執行:
[[email protected] ceph-cluster]# umount /dev/vdc1
[[email protected] ceph-cluster]# umount /dev/vdd1
刪除ceph的資料
每個節點都執行:
[[email protected] ceph-cluster]# rm -rf /var/lib/ceph/
node1上新增規則:
[[email protected] ceph]# cat /etc/udev/rules.d/100-ceph.rules
ACTION=="add", KERNEL=="vdb?",SUBSYSTEM=="block", OWNER=ceph,GROUP=ceph
[[email protected] rules.d]# systemctl restart systemd-udev-trigger.service
3、建立Ceph塊儲存
步驟一:建立映象
1)檢視儲存池。
- [[email protected] ~]# ceph osd lspools-----------檢視儲存池(預設為rbd)
- 0 rbd,--------0為編號,rbd為儲存池名
- [[email protected] ceph-clu]# ceph osd pool get rbd size
- size: 3----------3副本
2)建立映象、檢視映象 語法結構; rbd create 池名/映象名 --image-feature layering --size 大小
- [[email protected] ~]# rbd create rbd/demo-image --image-feature layering --size 10G--------原型:rbd create 映象名 --image-feature layering --size 大小
- [[email protected] ~]# rbd create rbd/image --image-feature layering --size 10G-----image-feature layering特徵為分層
- [[email protected] ~]# rbd list-------列出所有映象
- [[email protected] ~]# rbd info demo-image----檢視相關映象的資訊
- rbd image 'demo-image':
- size 10240 MB in 2560 objects
- order 22 (4096 kB objects)
- block_name_prefix: rbd_data.d3aa2ae8944a
- format: 2
- features: layering
步驟二:動態調整
1)縮小容量
- [[email protected] ~]# rbd resize --size 7G image --allow-shrink-------------將映象名為image的映象大小縮小為7G
- [[email protected] ~]# rbd info image----檢視相關映象的資訊
2)擴容容量
- [[email protected] ~]# rbd resize --size 15G image-------------將映象名為image的映象大小擴充套件為15G
- [[email protected] ~]# rbd info image
步驟三:通過KRBD訪問
1)叢集內將映象對映為本地磁碟
- [[email protected] ~]# rbd map demo-image----將映象影射為本地磁碟
- /dev/rbd0
- [[email protected] ~]# lsblk
- … …
- rbd0 251:0 0 10G 0 disk
- [[email protected] ~]# mkfs.xfs /dev/rbd0
- [[email protected] ~]# mount /dev/rbd0 /mnt
2)客戶端通過KRBD訪問
- #客戶端需要安裝ceph-common軟體包
- [[email protected] ~]# yum -y install ceph-common
- #拷貝配置檔案(否則不知道叢集在哪)
- [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
- #拷貝連線金鑰(否則無連線許可權)
- [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
- [[email protected] ~]# rbd map image----將映象影射為本地磁碟
- [[email protected] ~]# lsblk
- [[email protected] ~]# rbd showmapped------檢視映象影射為本地磁碟的資訊
- id pool image snap device
- 0 rbd image - /dev/rbd0
3) 客戶端格式化、掛載分割槽
- [[email protected] ~]# mkfs.xfs /dev/rbd0
- [[email protected] ~]# mount /dev/rbd0 /mnt/
- [[email protected] ~]# echo "test" > /mnt/test.txt
步驟四:建立映象快照
1) 建立映象快照
- [[email protected]~]# rbd snap create image --snap image-snap1-----建立映象快照
- [[email protected]~]# rbd snap ls image-----檢視相關快照資訊
- SNAPID NAME SIZE
- 4 image-snap1 15360 MB
2) 刪除客戶端寫入的測試檔案,並解除安裝掛載點
- [[email protected] ~]# rm -rf /mnt/test.txt
- [[email protected] ~]# umount /mnt
注意:這裡刪除後一定要先解除安裝,不能在回滾之後解除安裝再重新掛載,那樣會有問題
4) 還原快照
- [[email protected] ~]# rbd snap rollback image --snap image-snap1-----還原快照
- #客戶端重新掛載分割槽
- [[email protected] ~]# mount /dev/rbd0 /mnt/
- [[email protected] ~]# ls /mnt
- test.txt
步驟四:建立快照克隆
1)克隆快照
- [[email protected] ~]# rbd snap protect image --snap image-snap1-----保護快照(unprotect不保護)
- [[email protected] ~]# rbd snap rm image --snap image-snap1 //會失敗
- [[email protected] ~]# rbd clone \
- image --snap image-snap1 image-clone --image-feature layering
- //使用image的快照image-snap1克隆一個新的image-clone映象
2)檢視克隆映象與父映象快照的關係
- [[email protected] ~]# rbd info image-clone
- rbd image 'image-clone':
- size 15360 MB in 3840 objects
- order 22 (4096 kB objects)
- block_name_prefix: rbd_data.d3f53d1b58ba
- format: 2
- features: layering
- flags:
- parent: rbd/[email protected]
- #克隆映象很多資料都來自於快照鏈
- #如果希望克隆映象可以獨立工作,我們需要將父映象的資訊合併flattern到子映象,一旦合併完成,RBD映象和它的父映象就不會存在任何關係了。
- [[email protected] ~]# rbd flatten image-clone
- [[email protected] ~]# rbd info image-clone
- rbd image 'image-clone':
- size 15360 MB in 3840 objects
- order 22 (4096 kB objects)
- block_name_prefix: rbd_data.d3f53d1b58ba
- format: 2
- features: layering
- flags:
- #注意,父快照資訊沒了!
步驟四:其他操作
1) 客戶端撤銷磁碟對映
- [[email protected] ~]# umount /mnt
- [[email protected] ~]# rbd showmapped
- id pool image snap device
- 0 rbd image - /dev/rbd0
- //語法格式:
- [[email protected] ~]# rbd unmap /dev/rbd/{poolname}/{imagename}
- [[email protected] ~]# rbd unmap /dev/rbd/rbd/image-----撤銷映象影射
2)刪除快照與映象
- [[email protected] images]# rbd snap ls image------檢視image映象有哪些快照
- [[email protected] ~]# rbd snap rm image --snap image-snap----刪除快照
- [[email protected] ~]# rbd list-----------檢視有哪些映象
- [[email protected] ~]# rbd rm image------刪除映象
4、塊儲存應用------將ceph叢集作為後端儲存
- Ceph建立塊儲存映象
- 客戶端安裝部署ceph軟體
- 客戶端部署虛擬機器
- 客戶端建立secret
- 設定虛擬機器配置檔案,呼叫ceph儲存
1)建立磁碟映象。
- [[email protected] ~]# rbd create vm1-image --image-feature layering --size 10G-----建立映象
- [r映象[email protected] ~]# rbd create vm2-image --image-feature layering --size 10G
- [[email protected] ~]# rbd list------列出映象
- [[email protected] ~]# rbd info vm1-image
- [[email protected] ~]# qemu-img info rbd:rbd/vm1-image
- image: rbd:rbd/vm1-image
- file format: raw
- virtual size: 10G (10737418240 bytes)
- disk size: unavailable
2)Ceph認證賬戶。
Ceph預設開啟使用者認證,客戶端需要賬戶才可以訪問,
預設賬戶名稱為client.admin,key是賬戶的金鑰,
可以使用ceph auth新增新賬戶(案例我們使用預設賬戶)。
- [[email protected] ~]# cat /etc/ceph/ceph.conf //配置檔案
- [global]
- mon_initial_members = node1, node2, node3
- mon_host = 192.168.2.10,192.168.2.20,192.168.2.30
- auth_cluster_required = cephx //開啟認證
- auth_service_required = cephx //開啟認證
- auth_client_required = cephx //開啟認證
- cat /etc/ceph/ceph.client.admin.keyring
- [client.admin]
- key = AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
3)部署客戶端環境:安裝軟體包,拷貝配置檔案
注意:這裡使用真實機當客戶端!!!
客戶端需要安裝ceph-common軟體包,拷貝配置檔案(否則不知道叢集在哪),
拷貝連線金鑰(否則無連線許可權)。
- [[email protected] ~]# yum -y install ceph-common
- [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
- [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \
- /etc/ceph/
4)建立KVM虛擬機器取名為vm1,只是用來獲取xml檔案,獲取後就可以刪掉該建立的虛擬機器了
virsh dumpxml vm1 > /etc/libvirt/qemu/
virsh undefine vm1
5)虛擬機器使用CEPH儲存,需要認證。方式是虛擬機器先生成secret,再將secret與CEPH賬戶對映
編寫賬戶資訊檔案(真實機操作)
- [[email protected] ~]# vim secret.xml //新建臨時檔案,內容如下---------為下步生成uuid做準備
- <secret ephemeral='no' private='no'>
- <usage type='ceph'>
- <name>client.admin secret</name>
- </usage>
- </secret>
- #使用XML配置檔案建立secret
- [[email protected] ~]# virsh secret-define --file secret.xml--------生成隨機的UUID,這個UUID對應的有賬戶資訊
- 733f0fd1-e3d6-4c25-a69f-6681fc19802b
-
[[email protected] ~]# virsh secret-list
UUID 用量
--------------------------------------------------------------------------------
733f0fd1-e3d6-4c25-a69f-6681fc19802b ceph client.admin secret
檢視管理員金鑰(真實機操作)
- [[email protected] ~]# ceph auth get-key client.admin
- //獲取client.admin的key,或者直接檢視金鑰檔案
- [[email protected] ~]# cat /etc/ceph/ceph.client.admin.keyring
再將secret與CEPH賬戶對映(真實機操作)
- [[email protected]] virsh secret-set-value \
- --secret 733f0fd1-e3d6-4c25-a69f-6681fc19802b \-------這裡secret後面是之前建立的secret的UUID
- --base64 AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg--------base64後面是client.admin賬戶的密碼
- //現在secret中既有賬戶資訊又有金鑰資訊
6)修改之前生成匯出的虛擬機器的XML配置檔案。
每個虛擬機器都會有一個XML配置檔案,包括:
虛擬機器的名稱、記憶體、CPU、磁碟、網絡卡等資訊
- [[email protected] ~]# vim /etc/libvirt/qemu/vm1.xml
- //修改前內容如下
- <disk type='file' device='disk'>
- <driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm1.qcow2'/>- <target dev='vda' bus='virtio'/>
- <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
- </disk>
不推薦直接使用vim修改配置檔案,推薦使用virsh edit修改配置檔案,效果如下:
- [[email protected]] virsh edit vm1 //vm1為虛擬機器名稱
- <disk type='network' device='disk'>
- <driver name='qemu' type='raw’/>
- <auth username='admin'>
- <secret type='ceph' uuid='733f0fd1-e3d6-4c25-a69f-6681fc19802b'/>--------這裡的UUID就是secret的UUID,有client.admin賬戶和金鑰資訊
- </auth>
- <source protocol='rbd' name='rbd/vm1-image'> <host name='192.168.4.i1' port='6789'/> </source>---------這裡說明使用賬戶連線哪臺ceph主機和埠,訪問哪個池和映象
- <target dev='vda' bus='virtio'/>-------這裡說明將獲取的映象設定為虛擬機器的vda磁碟
- <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
- </disk>
6)啟動虛擬機器時,不能直接安裝,需要在虛擬機器設定中連線光碟檔案,並且設定啟動選項,將光碟設定為第一啟動介質。
7)安裝完成後,提示reboot,但這裡需要先關機,將啟動項的第一啟動介質改會為磁碟引導,然後再開機
至此,我們的真機上裝的vm1虛擬機器就可以使用了,只不過它是安裝在後端ceph叢集儲存磁碟上的,而非像傳統那樣安裝在本地磁碟。
5、掛載Ceph檔案系統
延續前面的實驗,實現Ceph檔案系統的功能。具體實現有以下功能:
- 部署MDSs節點
- 建立Ceph檔案系統
- 客戶端掛載檔案系統
按照如下步驟進行:
1)新增一臺新的虛擬機器,要求如下:
IP地址:192.168.4.14
主機名:node4
配置yum源(包括rhel、ceph的源)
與Client主機同步時間
node1允許無密碼遠端node4
2)部署元資料伺服器
登陸node4,安裝ceph-mds軟體包
- [[email protected] ~]# yum -y install ceph-mds
登陸node1部署節點操作
- [[email protected] ~]# cd /root/ceph-cluster
- //該目錄,是最早部署ceph叢集時,建立的目錄
- [[email protected] ceph-cluster]# ceph-deploy mds create node4
- //給nod4拷貝配置檔案,啟動mds服務
同步配置檔案和key
- [[email protected] ceph-cluster]# ceph-deploy admin node4
3)建立儲存池
- [[email protected]_storage1 FastDFS]# mkdir -pv /data/fastdfs
4)修改配置檔案。
- [[email protected] ~]# ceph osd pool create cephfs_data 128
- //建立儲存池,對應128個PG
- [[email protected] ~]# ceph osd pool create cephfs_metadata 128
- //建立儲存池,對應128個PG
5)建立Ceph檔案系統
- [[email protected] ~]# ceph mds stat -------------檢視mds狀態
- e2:, 1 up:standby
- [[email protected] ~]# ceph fs new myfs1 cephfs_metadata cephfs_data
- new fs with metadata pool 2 and data pool 1
- //注意,先寫medadata池,再寫data池
- //預設,只能建立1個檔案系統,多餘的會報錯
- [[email protected] ~]# ceph fs ls
- name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
- [[email protected] ~]# ceph mds stat
- e4: 1/1/1 up {0=node4=up:creating}
6)客戶端掛載
- [[email protected] ~]# mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/ \
- -o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg== ---------------這裡隨便找一臺機器都可以當作客戶端,只要該機器能訪問192.168.4.11的6789埠就行
- //注意:檔案系統型別為ceph
- //192.168.4.11為MON節點的IP(不是MDS節點)
- //admin是使用者名稱,secret是金鑰
- //金鑰可以在/etc/ceph/ceph.client.admin.keyring中找到
6、建立物件儲存伺服器
- 問題
延續前面的實驗,實現Ceph物件儲存的功能。具體實現有以下功能:
- 安裝部署Rados Gateway
- 啟動RGW服務
- 設定RGW的前端服務與埠
- 客戶端測試
- 步驟
步驟一:部署物件儲存伺服器
1)準備實驗環境,要求如下:
IP地址:192.168.4.15
主機名:node5
配置yum源(包括rhel、ceph的源)
與Client主機同步時間
node1允許無密碼遠端node5
修改node1的/etc/hosts,並同步到所有node主機
2)部署RGW軟體包
- [[email protected] ~]# ceph-deploy install --rgw node5
同步配置檔案與金鑰到node5
- [[email protected] ~]# cd /root/ceph-cluster
- [[email protected] ~]# ceph-deploy admin node5
3)新建閘道器例項
啟動一個rgw服務
- [[email protected] ~]# ceph-deploy rgw create node5
登陸node5驗證服務是否啟動
- [[email protected] ~]# ps aux |grep radosgw
- ceph 4109 0.2 1.4 2289196 14972 ? Ssl 22:53 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node4 --setuser ceph --setgroup ceph
- [[email protected] ~]# systemctl status [email protected]\*
4)修改服務埠
登陸node5,RGW預設服務埠為7480,修改為8000或80更方便客戶端記憶和使用
- [[email protected] ~]# vim /etc/ceph/ceph.conf
- [client.rgw.node5]
- host = node5--------node5為主機名
- rgw_frontends = "civetweb port=80"---------------civetweb是RGW內建的一個web服務
- systemctl stop httpd--------必須將httpd的80埠關掉,負責埠衝突
- systemctl restart ceph-radosgw\*
步驟二:客戶端測試
1)curl測試
- [[email protected] ~]# curl 192.168.4.15
- <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
2)使用第三方軟體訪問
登陸node5(RGW)建立賬戶
- [[email protected] ~]# radosgw-admin user create \
- --uid="testuser" --display-name="First User"--------建立
- … …
- "keys": [
- {
- "user": "testuser",
- "access_key": "5E42OEGB1M95Y49IBG7B",
- "secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
- }
- ],
- ... ...
- #
- [[email protected] ~]# radosgw-admin user info --uid=testuser-------檢視
- //testuser為使用者,key是賬戶訪問金鑰
3)客戶端安裝軟體
- [[email protected] ~]# yum install s3cmd-2.0.1-1.el7.noarch.rpm
修改軟體配置
- [[email protected] ~]# s3cmd --configure
- Access Key: 5E42OEGB1M95Y49IBG7B
- Secret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6
- Default Region [US]:---------注意這裡不要修改,負責後面建立目錄會有問題
- S3 Endpoint [s3.amazonaws.com]: 192.168.4.15
- [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15
- Use HTTPS protocol [Yes]: No
- Test access with supplied credentials? [Y/n] Y
- Save settings? [y/N] y
- //注意,其他提示都預設回車
4)建立儲存資料的bucket(類似於儲存資料的目錄)
- [[email protected] ~]# s3cmd ls
- [[email protected] ~]# s3cmd mb s3://my_bucket------mb是make bucket的意思,類似於建立資料夾
- Bucket 's3://my_bucket/' created
- [[email protected] ~]# s3cmd ls
- 2018-05-09 08:14 s3://my_bucket
- [[email protected] ~]# s3cmd put /var/log/messages s3://my_bucket/log/------put上傳
- [[email protected] ~]# s3cmd ls
- 2018-05-09 08:14 s3://my_bucket
- [[email protected] ~]# s3cmd ls s3://my_bucket
- DIR s3://my_bucket/log/
- [[email protected] ~]# s3cmd ls s3://my_bucket/log/
- 2018-05-09 08:19 309034 s3://my_bucket/log/messages
測試下載功能
- [[email protected] ~]# s3cmd get s3://my_bucket/log/messages /tmp/------get下載
測試刪除功能
- [[email protected] ~]# s3cmd del s3://my_bucket/log/messages----del刪除檔案
- [[email protected] ~]# s3cmd rb s3://my_bucket/log/-------------rb刪除資料夾