1. 程式人生 > >叢集基礎之04(部署ceph實驗環境、部署ceph叢集、建立Ceph塊儲存、塊儲存應用、掛載Ceph檔案系統、建立物件儲存伺服器)

叢集基礎之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源,注意所有的虛擬主機均需要掛載安裝光碟。

  1. [[email protected] ~]# yum -y install vsftpd
  2. [[email protected] ~]# mkdir /var/ftp/ceph
  3. [[email protected] ~]# mount -o loop \
  4. rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph
  5. [[email protected] ~]# systemctl restart vsftpd

2)修改所有節點yum配置(以node1為例)

  1. [[email protected] ~]# cat /etc/yum.repos.d/ceph.repo
  2. [mon]
  3. name=mon
  4. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
  5. gpgcheck=0
  6. [osd]
  7. name=osd
  8. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
  9. gpgcheck=0
  10. [tools]
  11. name=tools
  12. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
  13. gpgcheck=0

3)修改/etc/hosts並同步到所有主機。

  1. [[email protected] ~]# cat /etc/hosts
  2. ... ...
  3. 192.168.4.10 client
  4. 192.168.4.11    node1
  5. 192.168.4.12    node2
  6. 192.168.4.13    node3
  7. [[email protected] ~]# for i in 10 11 12 13
  8. > do
  9. > scp /etc/hosts 192.168.2.$i:/etc/
  10. > done

3)配置無密碼連線。

[[email protected] ~]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts------可以讓ssh時不需要再yes確認

  1. [[email protected] ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
  2. [[email protected] ~]# for i in 10 11 12 13
  3. > do
  4. > ssh-copy-id 192.168.4.$i
  5. > done

步驟二:配置NTP時間同步

1)建立NTP伺服器。

  1. [[email protected] ~]# yum -y install chrony
  2. [[email protected] ~]# cat /etc/chrony.conf
  3. server 0.centos.pool.ntp.org iburst
  4. allow 192.168.4.0/24
  5. local stratum 10
  6. [[email protected] ~]# systemctl restart chronyd

2)其它所有階段與NTP伺服器同步時間(以node1為例)。

  1. [[email protected] ~]# cat /etc/chrony.conf
  2. server 192.168.4.10 iburst
  3. [[email protected] ~]# systemctl restart chronyd

步驟三:準備儲存磁碟

使用virt-manager為虛擬機器新增磁碟。

[[email protected] ~]# virt-manager

2 、部署ceph叢集

步驟一:部署軟體

1)在node1安裝部署工具,學習工具的語法格式。

  1. [[email protected] ~]# yum -y install ceph-deploy

2)建立目錄

  1. [[email protected] ~]# mkdir ceph-cluster-----建立工作目錄
  2. [[email protected] ~]# cd ceph-cluster/------進入工作目錄

步驟二:部署Ceph叢集

1)建立Ceph叢集配置。--------一定要在工作目錄,要不然系統找不到

  1. [[email protected] ceph-cluster]# ceph-deploy new node1 node2 node3

2)給所有節點安裝軟體包。--------一定要在工作目錄,要不然系統找不到

  1. [[email protected] ceph-cluster]# ceph-deploy install node1 node2 node3

3)初始化所有節點的mon服務(主機名解析必須對)--------一定要在工作目錄,要不然系統找不到

  1. [[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操作即可)--------一定要在工作目錄,要不然系統找不到

  1. [[email protected] ]# ceph-deploy disk zap node1:vdc node1:vdd
  2. [[email protected] ceph-cluster]# ceph-deploy disk zap node2:vdc node2:vdd
  3. [[email protected] ceph-cluster]# ceph-deploy disk zap node3:vdc node3:vdd

3)建立OSD儲存空間(僅node1操作即可)--------一定要在工作目錄,要不然系統找不到

  1. [[email protected] ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
  2. //建立osd儲存裝置,vdc為叢集提供儲存空間,vdb1提供JOURNAL日誌,
  3. //建立osd儲存裝置,vdd為叢集提供儲存空間,vdb2提供JOURNAL日誌
  4. [[email protected] ceph-cluster]# ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
  5. [[email protected] ceph-cluster]# ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2

步驟四:驗證測試

1) 檢視叢集狀態

  1. [[email protected] ~]# ceph -s
  2. 正常顯示:

[[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)檢視儲存池。

  1. [[email protected] ~]# ceph osd lspools-----------檢視儲存池(預設為rbd)
  2. 0 rbd,--------0為編號,rbd為儲存池名
  3. [[email protected] ceph-clu]# ceph osd pool get rbd size
  4. size: 3----------3副本

2)建立映象、檢視映象  語法結構; rbd create 池名/映象名  --image-feature layering --size 大小

  1. [[email protected] ~]# rbd create rbd/demo-image --image-feature layering --size 10G--------原型:rbd create 映象名 --image-feature layering --size 大小
  2. [[email protected] ~]# rbd create rbd/image --image-feature layering --size 10G-----image-feature layering特徵為分層
  3. [[email protected] ~]# rbd list-------列出所有映象
  4. [[email protected] ~]# rbd info demo-image----檢視相關映象的資訊
  5. rbd image 'demo-image':
  6.     size 10240 MB in 2560 objects
  7.     order 22 (4096 kB objects)
  8.     block_name_prefix: rbd_data.d3aa2ae8944a
  9.     format: 2
  10.     features: layering

步驟二:動態調整

1)縮小容量

  1. [[email protected] ~]# rbd resize --size 7G image --allow-shrink-------------將映象名為image的映象大小縮小為7G
  2. [[email protected] ~]# rbd info image----檢視相關映象的資訊

2)擴容容量

  1. [[email protected] ~]# rbd resize --size 15G image-------------將映象名為image的映象大小擴充套件為15G
  2. [[email protected] ~]# rbd info image

步驟三:通過KRBD訪問

1)叢集內將映象對映為本地磁碟

  1. [[email protected] ~]# rbd map demo-image----將映象影射為本地磁碟
  2. /dev/rbd0
  3. [[email protected] ~]# lsblk
  4. … …
  5. rbd0 251:0 0 10G 0 disk
  6. [[email protected] ~]# mkfs.xfs /dev/rbd0
  7. [[email protected] ~]# mount /dev/rbd0 /mnt

2)客戶端通過KRBD訪問

  1. #客戶端需要安裝ceph-common軟體包
  2. [[email protected] ~]# yum -y install ceph-common
  3. #拷貝配置檔案(否則不知道叢集在哪)
  4. [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
  5. #拷貝連線金鑰(否則無連線許可權)
  6. [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring    /etc/ceph/
  7. [[email protected] ~]# rbd map image----將映象影射為本地磁碟
  8. [[email protected] ~]# lsblk
  9. [[email protected] ~]# rbd showmapped------檢視映象影射為本地磁碟的資訊
  10. id pool image snap device
  11. 0 rbd image - /dev/rbd0

3) 客戶端格式化、掛載分割槽

  1. [[email protected] ~]# mkfs.xfs /dev/rbd0
  2. [[email protected] ~]# mount /dev/rbd0 /mnt/
  3. [[email protected] ~]# echo "test" > /mnt/test.txt

步驟四:建立映象快照

1) 建立映象快照

  1. [[email protected]~]# rbd snap create image --snap image-snap1-----建立映象快照
  2. [[email protected]~]# rbd snap ls image-----檢視相關快照資訊
  3. SNAPID NAME SIZE
  4. 4 image-snap1 15360 MB

2) 刪除客戶端寫入的測試檔案,並解除安裝掛載點

  1. [[email protected] ~]# rm -rf /mnt/test.txt
  2. [[email protected] ~]# umount /mnt

注意:這裡刪除後一定要先解除安裝,不能在回滾之後解除安裝再重新掛載,那樣會有問題

4) 還原快照

  1. [[email protected] ~]# rbd snap rollback image --snap image-snap1-----還原快照
  2. #客戶端重新掛載分割槽
  3. [[email protected] ~]# mount /dev/rbd0 /mnt/
  4. [[email protected] ~]# ls /mnt
  5. test.txt

步驟四:建立快照克隆

1)克隆快照

  1. [[email protected] ~]# rbd snap protect image --snap image-snap1-----保護快照(unprotect不保護)
  2. [[email protected] ~]# rbd snap rm image --snap image-snap1 //會失敗
  3. [[email protected] ~]# rbd clone \
  4. image --snap image-snap1 image-clone --image-feature layering
  5. //使用image的快照image-snap1克隆一個新的image-clone映象

2)檢視克隆映象與父映象快照的關係

  1. [[email protected] ~]# rbd info image-clone
  2. rbd image 'image-clone':
  3.     size 15360 MB in 3840 objects
  4.     order 22 (4096 kB objects)
  5.     block_name_prefix: rbd_data.d3f53d1b58ba
  6.     format: 2
  7.     features: layering
  8.     flags:
  9.     parent: rbd/[email protected]
  10. #克隆映象很多資料都來自於快照鏈
  11. #如果希望克隆映象可以獨立工作,我們需要將父映象的資訊合併flattern到子映象,一旦合併完成,RBD映象和它的父映象就不會存在任何關係了。
  12. [[email protected] ~]# rbd flatten image-clone
  13. [[email protected] ~]# rbd info image-clone
  14. rbd image 'image-clone':
  15.     size 15360 MB in 3840 objects
  16.     order 22 (4096 kB objects)
  17.     block_name_prefix: rbd_data.d3f53d1b58ba
  18.     format: 2
  19.     features: layering
  20.     flags:
  21. #注意,父快照資訊沒了!

步驟四:其他操作

1) 客戶端撤銷磁碟對映

  1. [[email protected] ~]# umount /mnt
  2. [[email protected] ~]# rbd showmapped
  3. id pool image snap device
  4. 0 rbd image - /dev/rbd0
  5. //語法格式:
  6. [[email protected] ~]# rbd unmap /dev/rbd/{poolname}/{imagename}
  7. [[email protected] ~]# rbd unmap /dev/rbd/rbd/image-----撤銷映象影射

2)刪除快照與映象

  1. [[email protected] images]# rbd snap ls image------檢視image映象有哪些快照
  2. [[email protected] ~]# rbd snap rm image --snap image-snap----刪除快照
  3. [[email protected] ~]# rbd list-----------檢視有哪些映象
  4. [[email protected] ~]# rbd rm image------刪除映象

4、塊儲存應用------將ceph叢集作為後端儲存

  • Ceph建立塊儲存映象
  • 客戶端安裝部署ceph軟體
  • 客戶端部署虛擬機器
  • 客戶端建立secret
  • 設定虛擬機器配置檔案,呼叫ceph儲存

1)建立磁碟映象。

  1. [[email protected] ~]# rbd create vm1-image --image-feature layering --size 10G-----建立映象
  2. [r映象[email protected] ~]# rbd create vm2-image --image-feature layering --size 10G
  3. [[email protected] ~]# rbd list------列出映象
  4. [[email protected] ~]# rbd info vm1-image
  5. [[email protected] ~]# qemu-img info rbd:rbd/vm1-image
  6. image: rbd:rbd/vm1-image
  7. file format: raw
  8. virtual size: 10G (10737418240 bytes)
  9. disk size: unavailable

2)Ceph認證賬戶。

Ceph預設開啟使用者認證,客戶端需要賬戶才可以訪問,

預設賬戶名稱為client.admin,key是賬戶的金鑰,

可以使用ceph auth新增新賬戶(案例我們使用預設賬戶)。

  1. [[email protected] ~]# cat /etc/ceph/ceph.conf //配置檔案
  2. [global]
  3. mon_initial_members = node1, node2, node3
  4. mon_host = 192.168.2.10,192.168.2.20,192.168.2.30
  5. auth_cluster_required = cephx //開啟認證
  6. auth_service_required = cephx //開啟認證
  7. auth_client_required = cephx //開啟認證
  1. cat /etc/ceph/ceph.client.admin.keyring
  2. [client.admin]
  3.     key = AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==  

3)部署客戶端環境:安裝軟體包,拷貝配置檔案

注意:這裡使用真實機當客戶端!!!

客戶端需要安裝ceph-common軟體包,拷貝配置檔案(否則不知道叢集在哪),

拷貝連線金鑰(否則無連線許可權)。

  1. [[email protected] ~]# yum -y install ceph-common
  2. [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
  3. [[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \
  4. /etc/ceph/

4)建立KVM虛擬機器取名為vm1,只是用來獲取xml檔案,獲取後就可以刪掉該建立的虛擬機器了

virsh dumpxml vm1 >  /etc/libvirt/qemu/

virsh undefine vm1

5)虛擬機器使用CEPH儲存,需要認證。方式是虛擬機器先生成secret,再將secret與CEPH賬戶對映

編寫賬戶資訊檔案(真實機操作)

  1. [[email protected] ~]# vim secret.xml //新建臨時檔案,內容如下---------為下步生成uuid做準備
  2. <secret ephemeral='no' private='no'>
  3. <usage type='ceph'>
  4. <name>client.admin secret</name>
  5. </usage>
  6. </secret>
  7. #使用XML配置檔案建立secret
  8. [[email protected] ~]# virsh secret-define --file secret.xml--------生成隨機的UUID,這個UUID對應的有賬戶資訊
  9. 733f0fd1-e3d6-4c25-a69f-6681fc19802b
  10. [[email protected] ~]# virsh secret-list
     UUID                                  用量
    --------------------------------------------------------------------------------
    733f0fd1-e3d6-4c25-a69f-6681fc19802b  ceph client.admin secret

檢視管理員金鑰(真實機操作)

  1. [[email protected] ~]# ceph auth get-key client.admin
  2. //獲取client.admin的key,或者直接檢視金鑰檔案
  3. [[email protected] ~]# cat /etc/ceph/ceph.client.admin.keyring

再將secret與CEPH賬戶對映(真實機操作)

  1. [[email protected]] virsh secret-set-value \
  2. --secret 733f0fd1-e3d6-4c25-a69f-6681fc19802b \-------這裡secret後面是之前建立的secret的UUID
  3. --base64 AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg--------base64後面是client.admin賬戶的密碼
  4. //現在secret中既有賬戶資訊又有金鑰資訊

6)修改之前生成匯出的虛擬機器的XML配置檔案。

每個虛擬機器都會有一個XML配置檔案,包括:

虛擬機器的名稱、記憶體、CPU、磁碟、網絡卡等資訊

  1. [[email protected] ~]# vim /etc/libvirt/qemu/vm1.xml
  2. //修改前內容如下
  3. <disk type='file' device='disk'>
  4. <driver name='qemu' type='qcow2'/>
  5. <source file='/var/lib/libvirt/images/vm1.qcow2'/>
  6. <target dev='vda' bus='virtio'/>
  7. <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  8. </disk>

不推薦直接使用vim修改配置檔案,推薦使用virsh edit修改配置檔案,效果如下:

  1. [[email protected]] virsh edit vm1 //vm1為虛擬機器名稱
  2. <disk type='network' device='disk'>
  3. <driver name='qemu' type='raw’/>
  4. <auth username='admin'>
  5. <secret type='ceph' uuid='733f0fd1-e3d6-4c25-a69f-6681fc19802b'/>--------這裡的UUID就是secret的UUID,有client.admin賬戶和金鑰資訊
  6. </auth>
  7. <source protocol='rbd' name='rbd/vm1-image'> <host name='192.168.4.i1' port='6789'/> </source>---------這裡說明使用賬戶連線哪臺ceph主機和埠,訪問哪個池和映象
  8. <target dev='vda' bus='virtio'/>-------這裡說明將獲取的映象設定為虛擬機器的vda磁碟
  9. <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  10. </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軟體包

  1. [[email protected] ~]# yum -y install ceph-mds

登陸node1部署節點操作

  1. [[email protected] ~]# cd /root/ceph-cluster
  2. //該目錄,是最早部署ceph叢集時,建立的目錄
  3. [[email protected] ceph-cluster]# ceph-deploy mds create node4
  4. //給nod4拷貝配置檔案,啟動mds服務

同步配置檔案和key

  1. [[email protected] ceph-cluster]# ceph-deploy admin node4

3)建立儲存池

  1. [[email protected]_storage1 FastDFS]# mkdir -pv /data/fastdfs

4)修改配置檔案。

  1. [[email protected] ~]# ceph osd pool create cephfs_data 128
  2. //建立儲存池,對應128個PG
  3. [[email protected] ~]# ceph osd pool create cephfs_metadata 128
  4. //建立儲存池,對應128個PG

5)建立Ceph檔案系統

  1. [[email protected] ~]# ceph mds stat -------------檢視mds狀態
  2. e2:, 1 up:standby
  3. [[email protected] ~]# ceph fs new myfs1 cephfs_metadata cephfs_data
  4. new fs with metadata pool 2 and data pool 1
  5. //注意,先寫medadata池,再寫data池
  6. //預設,只能建立1個檔案系統,多餘的會報錯
  7. [[email protected] ~]# ceph fs ls
  8. name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  9. [[email protected] ~]# ceph mds stat
  10. e4: 1/1/1 up {0=node4=up:creating}

6)客戶端掛載

  1. [[email protected] ~]# mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/ \
  2. -o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==   ---------------這裡隨便找一臺機器都可以當作客戶端,只要該機器能訪問192.168.4.11的6789埠就行
  3. //注意:檔案系統型別為ceph
  4. //192.168.4.11為MON節點的IP(不是MDS節點)
  5. //admin是使用者名稱,secret是金鑰
  6. //金鑰可以在/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軟體包

  1. [[email protected] ~]# ceph-deploy install --rgw node5

同步配置檔案與金鑰到node5

  1. [[email protected] ~]# cd /root/ceph-cluster
  2. [[email protected] ~]# ceph-deploy admin node5

3)新建閘道器例項

啟動一個rgw服務

  1. [[email protected] ~]# ceph-deploy rgw create node5

登陸node5驗證服務是否啟動

  1. [[email protected] ~]# ps aux |grep radosgw
  2. 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
  3. [[email protected] ~]# systemctl status [email protected]\*

4)修改服務埠

登陸node5,RGW預設服務埠為7480,修改為8000或80更方便客戶端記憶和使用

  1. [[email protected] ~]# vim /etc/ceph/ceph.conf
  2. [client.rgw.node5]
  3. host = node5--------node5為主機名
  4. rgw_frontends = "civetweb port=80"---------------civetweb是RGW內建的一個web服務
  5. systemctl stop httpd--------必須將httpd的80埠關掉,負責埠衝突
  6. systemctl restart ceph-radosgw\*

步驟二:客戶端測試

1)curl測試

  1. [[email protected] ~]# curl 192.168.4.15
  2. <?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)建立賬戶

  1. [[email protected] ~]# radosgw-admin user create \
  2. --uid="testuser" --display-name="First User"--------建立
  3. … …
  4. "keys": [
  5. {
  6. "user": "testuser",
  7. "access_key": "5E42OEGB1M95Y49IBG7B",
  8. "secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
  9. }
  10. ],
  11. ... ...
  12. #
  13. [[email protected] ~]# radosgw-admin user info --uid=testuser-------檢視
  14. //testuser為使用者,key是賬戶訪問金鑰

3)客戶端安裝軟體

  1. [[email protected] ~]# yum install s3cmd-2.0.1-1.el7.noarch.rpm

修改軟體配置

  1. [[email protected] ~]# s3cmd --configure
  2. Access Key: 5E42OEGB1M95Y49IBG7B
  3. Secret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6
  4. Default Region [US]:---------注意這裡不要修改,負責後面建立目錄會有問題
  5. S3 Endpoint [s3.amazonaws.com]: 192.168.4.15
  6. [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15
  7. Use HTTPS protocol [Yes]: No
  8. Test access with supplied credentials? [Y/n] Y
  9. Save settings? [y/N] y
  10. //注意,其他提示都預設回車

4)建立儲存資料的bucket(類似於儲存資料的目錄)

  1. [[email protected] ~]# s3cmd ls
  2. [[email protected] ~]# s3cmd mb s3://my_bucket------mb是make bucket的意思,類似於建立資料夾
  3. Bucket 's3://my_bucket/' created
  4. [[email protected] ~]# s3cmd ls
  5. 2018-05-09 08:14 s3://my_bucket
  6. [[email protected] ~]# s3cmd put /var/log/messages s3://my_bucket/log/------put上傳
  7. [[email protected] ~]# s3cmd ls
  8. 2018-05-09 08:14 s3://my_bucket
  9. [[email protected] ~]# s3cmd ls s3://my_bucket
  10. DIR s3://my_bucket/log/
  11. [[email protected] ~]# s3cmd ls s3://my_bucket/log/
  12. 2018-05-09 08:19 309034 s3://my_bucket/log/messages

測試下載功能

  1. [[email protected] ~]# s3cmd get s3://my_bucket/log/messages /tmp/------get下載

測試刪除功能

  1. [[email protected] ~]# s3cmd del s3://my_bucket/log/messages----del刪除檔案
  2. [[email protected] ~]# s3cmd rb s3://my_bucket/log/-------------rb刪除資料夾

相關推薦

no