1. 程式人生 > >部署Ceph叢集--jluocc

部署Ceph叢集--jluocc

一 前言
  分散式檔案系統(Distributed File System):檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連.分散式檔案系統的設計基於C/S模式

  • 1,什麼是Ceph?
    Ceph:是一個 Linux PB 級分散式檔案系統
    特點:
    具有高擴充套件,高可用,高效能的特點
    可以提供物件儲存,塊儲存,檔案儲存
    可以提供PB級別的儲存空間(PB->TB->GB)
    幫助文件:http://docs.ceph.org/start/intro
    中文文件:http://docs.ceph.org.cn/
    Ceph核心元件:
    OSD:儲存裝置(OSD越多效能越好)
    Monitor:叢集監控元件 (取基數,如3,5,7)
    MDS:存放檔案系統的元資料(物件儲存和塊儲存不需要該元件)
    Client:ceph客戶端
    二 搭建塊儲存

    1,實驗環境*
    虛擬機器都是rhel7.4,真機centos7
    虛擬機器:4臺
    部署Ceph叢集--jluocc
    node1,node2,node3既是OSD,也是Mpnitor
    真實機:(centos7)或者重新新建一臺虛擬機器代替真機也可以
    映象地址:https://pan.baidu.com/s/1Uo_7yEl4mTXTiS7N98Abfw

2,安裝前準備
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] ceph-cluster]# 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並同步到所有主機。
警告:/etc/hosts解析的域名必須與本機主機名一致!!!!

 [[email protected] ceph-cluster]# vim /etc/hosts
... ...
192.168.4.10   client
192.168.4.11     node1
192.168.4.12     node2
192.168.4.13     node3

警告:/etc/hosts解析的域名必須與本機主機名一致!!!!

[[email protected] ceph-cluster]# for i in 10 11  12  13
    > do
    > scp  /etc/hosts  192.168.4.$i:/etc/     
    > done
    [[email protected] ceph-cluster]# for i in  10 11  12  13
    > do
    > scp  /etc/yum.repos.d/ceph.repo  192.168.4.$i:/etc/yum.repos.d/
    > done

3)配置無密碼連線(包括自己遠端自己也不需要密碼)。

[[email protected] ceph-cluster]# ssh-keygen   -f /root/.ssh/id_rsa    -N '' #生成金鑰
[[email protected] ceph-cluster]# for i in 10  11  12  13  #上傳金鑰到個個主機
> do
> ssh-copy-id  192.168.4.$i
> done

3,配置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
[[email protected] ~]# iptables -F     #如果有防火牆規則,需要清空所有規則

2)其他所有節點與NTP伺服器同步時間(以node1為例)。

[[email protected] ceph-cluster]#  cat /etc/chrony.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
server 192.168.4.254 iburst        
[[email protected] ceph-cluster]# systemctl  restart  chronyd     #重啟服務
[[email protected] ceph-cluster]# systemctl  enable  chronyd #設定開機自啟

4,準備儲存磁碟

  直接開啟虛擬機器管理器新增磁碟,node1,node2,node3每臺新增三個10G磁碟

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

[[email protected] ~]#  yum -y install ceph-deploy
[[email protected] ~]#  ceph-deploy  --help     #檢視命令格式

2)建立目錄

[[email protected] ~]#  mkdir ceph-cluster
[[email protected] ~]#  cd ceph-cluster/

6,部署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]# vim ceph.conf      #檔案最後追加以下內容
public_network = 192.168.4.0/24   #避免會出現如下錯誤加上這一行
[[email protected] ceph-cluster]# ceph-deploy mon create-initial //拷貝配置檔案,並啟動mon服務

常見錯誤及解決方法(非必要操作,有錯誤可以參考):
如果提示如下錯誤資訊:
[node1][ERROR ] admin_socket: exception getting command descriptions: [Error 2] No such file or directory
解決方案如下(在node1操作):
先檢查自己的命令是否是在ceph-cluster目錄下執行的!!!!如果時確認是在該目錄下執行的create-initial命令,依然儲存,可以使用如下方式修復。

[[email protected] ceph-cluster]# vim ceph.conf      #檔案最後追加以下內容
public_network = 192.168.4.0/24

修改後重新推送配置檔案:
[[email protected] ceph-cluster]# ceph-deploy --overwrite-conf config push node1 node2 node3

7,建立OSD
1)準備磁碟分割槽(node1,node2,node3都要做)

[[email protected] ceph-cluster]#  parted  /dev/vdb  mklabel  gpt
[[email protected] ceph-cluster]#  parted  /dev/vdb  mkpart primary  1M  50%
[[email protected] ceph-cluster]#  parted  /dev/vdb  mkpart primary  50%  100%
[[email protected] ceph-cluster]# chown  ceph.ceph  /dev/vdb1 #授權給ceph使用者
[[email protected] ceph-cluster]# chown  ceph.ceph  /dev/vdb2  
提示:重啟後失效,要想永久有效,1,把命令寫入/etc/rc.local檔案中,並給檔案賦予執行許可權;2,用udev寫入許可權
//這兩個分割槽用來做儲存伺服器的日誌journal盤

2)初始化清空磁碟資料(僅node1操作即可)

[[email protected] ceph-cluster]# 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   
提示:如果已經初始化過了,需要重新清空磁碟資料,就要取(node1,node2,node3)解除安裝掉

3)建立OSD儲存空間(僅node1操作即可)

[[email protected] ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2  
//建立osd儲存裝置,vdc為叢集提供儲存空間,vdb1提供JOURNAL日誌,
//一個儲存裝置對應一個日誌裝置,日誌需要SSD,不需要很大
[[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 

4)常見錯誤(非必須操作)

使用osd create建立OSD儲存空間時,如提示run 'gatherkeys',可以使用如下命令修復:
[[email protected] ceph-cluster]#  ceph-deploy gatherkeys node1 node2 node3 

8,驗證測試
1) 檢視叢集狀態

[[email protected] ceph-cluster]# ceph -s
    cluster d3266b4f-5c8c-44f3-b11e-7a2cafd1f75b
     health HEALTH_OK    #出現ok就成功了,err就失敗了,如果出現warning,執行 systemctl restart ceph\*.service ceph\*.target重啟服務
     monmap e1: 3 mons at {node1=192.168.4.11:6789/0,node2=192.168.4.12:6789/0,node3=192.168.4.13:6789/0}
            election epoch 6, quorum 0,1,2 node1,node2,node3
     osdmap e42: 6 osds: 6 up, 6 in
            flags sortbitwise
      pgmap v323: 64 pgs, 1 pools, 88496 kB data, 5147 objects
            503 MB used, 119 GB / 119 GB avail
                  64 active+clean

2)常見錯誤(非必須操作)

如果檢視狀態包含如下資訊:
health: HEALTH_WARN
        clock skew detected on  node2, node3…  
clock skew表示時間不同步,解決辦法:請先將所有主機的時間都使用NTP時間同步!!!
如果狀態還是失敗,可以嘗試執行如下命令,重啟ceph服務:
[[email protected] ceph-cluster]#  systemctl restart ceph\*.service ceph\*.target

9,建立映象
1)檢視儲存池。

[[email protected] ceph-cluster]# ceph osd lspools
0 rbd,

2)建立映象、檢視映象
兩種建立映象(共享硬碟)方式

方式一(沒有指明儲存池預設rbd)
[[email protected] ceph-cluster]# rbd create demo-image --image-feature  layering --size 10G
方式二(指明儲存池rbd)       
[[email protected] ceph-cluster]# rbd create rbd/image --image-feature  layering --size 10G

[[email protected] ceph-cluster]# rbd list               #rbd ls也可以檢視映象
demo-image
image
[[email protected] ceph-cluster]# 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

10,動態調整映象大小
1)縮小容量

[[email protected] ceph-cluster]# rbd resize --size 7G image --allow-shrink
[[email protected] ceph-cluster]# rbd info image

2)擴容容量

[[email protected] ceph-cluster]# rbd resize --size 15G image
[[email protected] ceph-cluster]# rbd info image

11,通過KRBD訪問
1)叢集內將映象對映為本地磁碟

[[email protected] ceph-cluster]# rbd map demo-image#使用核心將映象對映到塊裝置
/dev/rbd0
[[email protected] ceph-cluster]# lsblk
… …
rbd0          251:0    0   10G  0 disk                      #此處為載入識別的塊裝置
[[email protected] ceph-cluster]# mkfs.xfs /dev/rbd0      #格式化
[[email protected] ceph-cluster]# mount  /dev/rbd0  /mnt   #掛載使用
[[email protected] ceph-cluster]# df -h                                       #檢視當前掛載資訊

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
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1 1024M  0 rom  
vda           252:0    0   20G  0 disk 
├─vda1        252:1    0    1G  0 part /boot
└─vda2        252:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
rbd0          251:0    0   15G  0 disk        #此處是使用的網路磁碟
[[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

12,建立映象快照
  磁碟快照(Snapshot)是針對整個磁碟卷冊進行快速的檔案系統備份,與其它備份方式最主要的不同點在於「速度」。進行磁碟快照時,並不牽涉到任何檔案複製動作。就算資料量再大,一般來說,通常可以在一秒之內完成備份動作。
  磁碟快照的基本概念與磁帶備份等機制有非常大的不同。在建立磁碟快照時,並不需要複製資料本身,它所作的只是通知LX Series NAS伺服器將目前有資料的磁碟區塊全部保留起來,不被覆寫。這個通知動作只需花費極短的時間。接下來的檔案修改或任何新增、刪除動作,均不會覆寫原本資料所在的磁碟區塊,而是將修改部分寫入其它可用的磁碟區塊中。所以可以說,資料複製,或者說資料備份,是在平常檔案存取時就做好了,而且對效能影響極低.
1)建立映象快照

[[email protected] ceph-cluster]# rbd snap create image --snap image-snap1
[[email protected] ceph-cluster]# rbd snap ls image    #檢視image的快照
SNAPID NAME            SIZE 
     4 image-snap1 15360 MB

2)刪除客戶端寫入的測試檔案

[[email protected] ~]# rm  -rf   /mnt/test.txt
[[email protected] ~]# umount  /mnt   先解除安裝再去還原快照,不然會報下面錯誤

3) 還原快照

[[email protected] ceph-cluster]# rbd snap rollback image --snap image-snap1
#客戶端重新掛載分割槽
[[email protected] ~]# mount /dev/rbd0 /mnt/
[[email protected] ~]# ls  /mnt
test.txt
快照還原問題:
[[email protected] ~]# mount /dev/rbd0 /mnt
mount: 檔案系統型別錯誤、選項錯誤、/dev/rbd0 上有壞超級塊、
       缺少內碼表或助手程式,或其他錯誤

       有些情況下在 syslog 中可以找到一些有用資訊- 請嘗試
       dmesg | tail  這樣的命令看看
解決辦法:
1,先在客戶機解除安裝
2,在node1在還原快照
2,在客戶機上掛載

13,建立快照克隆
1)克隆快照

[[email protected] ceph-cluster]#  rbd snap protect image --snap image-snap1 #把快照保護起來
[[email protected] ceph-cluster]#  rbd snap rm image --snap image-snap1    //會失敗
[[email protected] ceph-cluster]# rbd clone image --snap image-snap1 image-clone --image-feature layering  #使用image的快照image-snap1克隆一個新的image-clone映象

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

[[email protected] ceph-cluster]#  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]
#克隆映象很多資料都來自於快照鏈
#如果希望克隆映象可以獨立工作,就需要將父快照中的資料,全部拷貝一份,但比較耗時!!!
[[email protected] ceph-cluster]#  rbd flatten image-clone    #解除與快照的關係
[[email protected] ceph-cluster]#  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: 
#注意,父快照資訊沒了

14,其他操作
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/rbd/image   #撤銷磁碟對映image

2)刪除快照與映象

[[email protected] ceph-deploy]# rbd snap unprotect image --snap image-snap1 #解除保護
[[email protected] ceph-cluster]# rbd snap rm image --snap image-snap1 #刪除快照
[[email protected] ceph-cluster]# rbd  list
[[email protected] ceph-cluster]# rbd  rm  image

15,塊儲存應用案例
1)建立磁碟映象。

[[email protected] ceph-cluster]# rbd create vm1-image --image-feature  layering --size 10G
[[email protected] ceph-cluster]# rbd create vm2-image --image-feature  layering --size 10G
[[email protected] ceph-cluster]# rbd  list
[[email protected] ceph-cluster]# rbd  info  vm1-image
[[email protected] ceph-cluster]# 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] ceph-cluster]# 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                             //開啟認證
[[email protected] ceph-cluster]# 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/  #下載ceph配置檔案
[[email protected] ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \
/etc/ceph/    #下載ceph金鑰

4)建立KVM虛擬機器。
使用virt-manager建立1臺普通的KVM虛擬機器。名稱為vm1
5)配置libvirt secret。
編寫賬戶資訊檔案(真實機操作)

[[email protected] ~]# vim secret.xml            //新建臨時檔案,內容如下 
<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
生成 secret c409ec4c-803b-46bc-b4e4-35dc86a08f85     
//隨機的UUID,這個UUID對應的有賬戶資訊
編寫賬戶資訊檔案(真實機操作)
--獲取client.admin的key,或者直接檢視金鑰檔案
方式一:
[[email protected] ~]# ceph auth get-key client.admin 
方式二:
[[email protected] ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQDExOpbE+W9BxAA9QBqQUAY0tFmSmjOWmS8Nw==

--設定secret,新增賬戶的金鑰

[[email protected] ~]# virsh secret-set-value --secret c409ec4c-803b-46bc-b4e4-35dc86a08f85 --base64 AQDExOpbE+W9BxAA9QBqQUAY0tFmSmjOWmS8Nw==
//這裡secret後面是之前建立的secret的UUID
//base64後面是client.admin賬戶的密碼
//現在secret中既有賬戶資訊又有金鑰資訊
[[email protected] room2018]# virsh secret-list        #檢視uuid
 UUID                                  用量
--------------------------------------------------------------------------------
 c409ec4c-803b-46bc-b4e4-35dc86a08f85  ceph 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='c409ec4c-803b-46bc-b4e4-35dc86a08f85'/>
      </auth>
      <source protocol='rbd' name='rbd/vm1-image'>
        <host name='192.168.4.11' port='6789'/>
      </source>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
提示:儲存退出出現"編輯了域 rhel7.4 XML 配置。"說明成功了

源路經:rbd://192.168.4.11:6789/rbd/vm1-image

Ceph塊儲存總結:
1,Linux可以直接使用
2,Kvm虛擬機器使用,修改kvm虛擬機器xml配置檔案

二 Ceph檔案系統(MDS)
1,新增一臺新的虛擬機器,要求如下:
IP地址:192.168.4.14
主機名:node4(部署元資料伺服器)
配置yum源(包括rhel、ceph的源)
與真機主機同步時間([[email protected] ceph-deploy]# scp /etc/chrony.conf      [email protected]:/etc/)
node1允許無密碼遠端node4 命令:ssh-copy-id [email protected]
[[email protected] ceph-deploy]#vim /etc/hosts #並拷貝到node1-4,client
192.168.4.10 client
192.168.4.11 node1
192.168.4.12 node2
192.168.4.13 node3
192.168.4.14 node4

2,部署元資料伺服器

登陸node4,安裝ceph-mds軟體包
[[email protected] ceph-cluster]yum -y install ceph-mds 
登陸node1部署節點操作
[[email protected] ceph-cluster]# cd  /root/ceph-cluster   #該目錄,是最早部署ceph叢集時,建立的目錄
[[email protected] ceph-cluster]# ceph-deploy mds create node4 #給nod4拷貝配置檔案,啟動mds服務
[[email protected] ceph-cluster]# ceph-deploy admin node4  #同步配置檔案和key

3,建立儲存池

[[email protected] ceph-cluster]ceph osd pool create cephfs_data 128  #建立儲存池,對應128個PG
[[email protected] ceph-cluster]ceph osd pool create cephfs_metadata 128 #建立儲存池,對應128個PG

4,建立Ceph檔案系統

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

*5,客戶端掛載*

[[email protected] ~]# mount -t ceph 192.168.4.11:6789:/  /mnt/cephfs/ \
-o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==
//注意:檔案系統型別為ceph
//192.168.4.11為MON節點的IP(不是MDS節點)
//admin是使用者名稱,secret是金鑰
//金鑰可以在/etc/ceph/ceph.client.admin.keyring中找到
[[email protected] ~]# df -h
檔案系統               容量  已用  可用 已用% 掛載點
/dev/mapper/rhel-root   17G  5.2G   12G   31% /
devtmpfs               481M     0  481M    0% /dev
tmpfs                  497M     0  497M    0% /dev/shm
tmpfs                  497M  7.0M  490M    2% /run
tmpfs                  497M     0  497M    0% /sys/fs/cgroup
/dev/vda1             1014M  161M  854M   16% /boot
tmpfs                  100M     0  100M    0% /run/user/0
192.168.4.11:6789:/    120G  512M  120G    1% /mnt/cephfs

三 建立物件儲存伺服器(RGW)
1,部署物件儲存伺服器
1)準備實驗環境,要求如下:
IP地址:192.168.4.15
主機名:node5
配置yum源(包括rhel、ceph的源)    #參考上面步驟
與真機主機同步時間            參考上面配置ntp步驟
node1允許無密碼遠端node5  命令:[[email protected] ceph-deploy]# ssh-copy-id [email protected]
修改node1的/etc/hosts,並同步到所有node1-5主機  #參考上面同步指令碼
[[email protected] ceph-cluster]# vim /etc/hosts
... ...
192.168.4.10  client
192.168.4.11 node1
192.168.4.12 node2
192.168.4.13 node3
192.168.4.14 node4
192.168.4.15 node5
2)部署RGW軟體包

[[email protected] ceph-deploy]# ceph-deploy install --rgw node5 #給node5安裝軟體包
[[email protected] ceph-deploy]#  ceph-deploy admin node5 #同步配置檔案與金鑰到node5

3)新建閘道器例項

[[email protected] ceph-deploy]#  ceph-deploy rgw create node5    #啟動一個rgw服務
[[email protected] ~]# ps aux |grep radosgw             #登陸node5驗證服務是否啟動
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
rgw_frontends = "civetweb port=80"
//node5為主機名
//civetweb是RGW內建的一個web服務
[[email protected] ~]# systemctl  restart  [email protected] #重啟服務
[[email protected] ~]# ss -tunlp | grep :80    #檢視埠80資訊
tcp    LISTEN     0      128       *:80                    *:*                   users:(("radosgw",pid=5994,fd=30))

2,客戶端測試
1)curl測試

[[email protected] ~]# curl  192.168.4.15:8000    #出現這個就搭建成功了
<?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>
真機訪問:

部署Ceph叢集--jluocc

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
S3 Endpoint [s3.amazonaws.com]: 192.168.4.15:8000
[%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15:8000
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
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/
[[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/
測試刪除功能
[[email protected] ~]# s3cmd del s3://my_bucket/log/messages