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

部署Ceph集群--jluocc

server 同步時間 獨立 rc.local -- https health ava 軟件

一 前言
  分布式文件系統(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臺
    技術分享圖片
    node1,node2,node3既是OSD,也是Mpnitor
    真實機:(centos7)或者重新新建一臺虛擬機代替真機也可以
    鏡像地址:https://pan.baidu.com/s/1Uo_7yEl4mTXTiS7N98Abfw

2,安裝前準備
1)物理機為所有節點配置yum源服務器。

[root@room9pc01 ~]# yum -y install vsftpd
[root@room9pc01 ~]# mkdir  /var/ftp/ceph
[root@room9pc01 ~]# mount -o loop rhcs2.0-rhosp9-20161113-x86_64.iso  /var/ftp/ceph    #此光盤在網盤裏
[root@room9pc01 ~]# systemctl  restart  vsftpd

2)修改所有節點都需要配置YUM源(這裏僅以node1為例)。

[root@node1 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解析的域名必須與本機主機名一致!!!!

 [root@node1 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解析的域名必須與本機主機名一致!!!!

[root@node1 ceph-cluster]# for i in 10 11  12  13
    > do
    > scp  /etc/hosts  192.168.4.$i:/etc/     
    > done
    [root@node1 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)配置無密碼連接(包括自己遠程自己也不需要密碼)。

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

3,配置NTP時間同步
1)真實物理機創建NTP服務器。

[root@room9pc01 ~]#  yum -y install chrony
[root@room9pc01~]#  cat /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10
[root@room9pc01 ~]# systemctl  restart  chronyd
[root@room9pc01 ~]# iptables -F     #如果有防火墻規則,需要清空所有規則

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

[root@node1 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        
[root@node1 ceph-cluster]# systemctl  restart  chronyd     #重啟服務
[root@node1 ceph-cluster]# systemctl  enable  chronyd #設置開機自啟

4,準備存儲磁盤

  直接打開虛擬機管理器添加磁盤,node1,node2,node3每臺添加三個10G磁盤

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

[root@node1 ~]#  yum -y install ceph-deploy
[root@node1 ~]#  ceph-deploy  --help     #查看命令格式

2)創建目錄

[root@node1 ~]#  mkdir ceph-cluster
[root@node1 ~]#  cd ceph-cluster/

6,部署Ceph集群
1)創建Ceph集群配置。
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3
2)給所有節點安裝軟件包。
[root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3
3)初始化所有節點的mon服務(主機名解析必須對)

[root@node1 ceph-cluster]# vim ceph.conf      #文件最後追加以下內容
public_network = 192.168.4.0/24   #避免會出現如下錯誤加上這一行
[root@node1 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命令,依然保存,可以使用如下方式修復。

[root@node1 ceph-cluster]# vim ceph.conf      #文件最後追加以下內容
public_network = 192.168.4.0/24

修改後重新推送配置文件:
[root@node1 ceph-cluster]# ceph-deploy --overwrite-conf config push node1 node2 node3

7,創建OSD
1)準備磁盤分區(node1,node2,node3都要做)

[root@node1 ceph-cluster]#  parted  /dev/vdb  mklabel  gpt
[root@node1 ceph-cluster]#  parted  /dev/vdb  mkpart primary  1M  50%
[root@node1 ceph-cluster]#  parted  /dev/vdb  mkpart primary  50%  100%
[root@node1 ceph-cluster]# chown  ceph.ceph  /dev/vdb1 #授權給ceph用戶
[root@node1 ceph-cluster]# chown  ceph.ceph  /dev/vdb2  
提示:重啟後失效,要想永久有效,1,把命令寫入/etc/rc.local文件中,並給文件賦予執行權限;2,用udev寫入權限
//這兩個分區用來做存儲服務器的日誌journal盤

2)初始化清空磁盤數據(僅node1操作即可)

[root@node1 ceph-cluster]# ceph-deploy disk  zap  node1:vdc   node1:vdd    
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node2:vdc   node2:vdd
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node3:vdc   node3:vdd   
提示:如果已經初始化過了,需要重新清空磁盤數據,就要取(node1,node2,node3)卸載掉

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

[root@node1 ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2  
//創建osd存儲設備,vdc為集群提供存儲空間,vdb1提供JOURNAL日誌,
//一個存儲設備對應一個日誌設備,日誌需要SSD,不需要很大
[root@node1 ceph-cluster]# ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
[root@node1 ceph-cluster]# ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2 

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

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

8,驗證測試
1) 查看集群狀態

[root@node1 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服務:
[root@node1 ceph-cluster]#  systemctl restart ceph\*.service ceph\*.target

9,創建鏡像
1)查看存儲池。

[root@node1 ceph-cluster]# ceph osd lspools
0 rbd,

2)創建鏡像、查看鏡像
兩種創建鏡像(共享硬盤)方式

方式一(沒有指明存儲池默認rbd)
[root@node1 ceph-cluster]# rbd create demo-image --image-feature  layering --size 10G
方式二(指明存儲池rbd)       
[root@node1 ceph-cluster]# rbd create rbd/image --image-feature  layering --size 10G

[root@node1 ceph-cluster]# rbd list               #rbd ls也可以查看鏡像
demo-image
image
[root@node1 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)縮小容量

[root@node1 ceph-cluster]# rbd resize --size 7G image --allow-shrink
[root@node1 ceph-cluster]# rbd info image

2)擴容容量

[root@node1 ceph-cluster]# rbd resize --size 15G image
[root@node1 ceph-cluster]# rbd info image

11,通過KRBD訪問
1)集群內將鏡像映射為本地磁盤

[root@node1 ceph-cluster]# rbd map demo-image#使用內核將鏡像映射到塊設備
/dev/rbd0
[root@node1 ceph-cluster]# lsblk
… …
rbd0          251:0    0   10G  0 disk                      #此處為加載識別的塊設備
[root@node1 ceph-cluster]# mkfs.xfs /dev/rbd0      #格式化
[root@node1 ceph-cluster]# mount  /dev/rbd0  /mnt   #掛載使用
[root@node1 ceph-cluster]# df -h                                       #查看當前掛載信息

2)客戶端通過KRBD訪問

#客戶端需要安裝ceph-common軟件包
#拷貝配置文件(否則不知道集群在哪)
#拷貝連接密鑰(否則無連接權限)
[root@client ~]# yum -y  install ceph-common
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.conf  /etc/ceph/  #從集群中下載配置文件
[root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph/      #從集群中下載密鑰
[root@client ~]# rbd map image   #使用內核將鏡像映射到塊設備
[root@client ~]#  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        #此處是使用的網絡磁盤
[root@client ~]# rbd showmapped     #查看使用的網絡鏡像(磁盤)信息
id pool image snap device    
0  rbd  image -    /dev/rbd0

3) 客戶端格式化、掛載分區並使用

[root@client ~]# mkfs.xfs /dev/rbd0
[root@client ~]# mount /dev/rbd0 /mnt/
[root@client ~]# echo "test" > /mnt/test.txt

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

[root@node1 ceph-cluster]# rbd snap create image --snap image-snap1
[root@node1 ceph-cluster]# rbd snap ls image    #查看image的快照
SNAPID NAME            SIZE 
     4 image-snap1 15360 MB

2)刪除客戶端寫入的測試文件

[root@client ~]# rm  -rf   /mnt/test.txt
[root@client ~]# umount  /mnt   先卸載再去還原快照,不然會報下面錯誤

3) 還原快照

[root@node1 ceph-cluster]# rbd snap rollback image --snap image-snap1
#客戶端重新掛載分區
[root@client ~]# mount /dev/rbd0 /mnt/
[root@client ~]# ls  /mnt
test.txt
快照還原問題:
[root@client ~]# mount /dev/rbd0 /mnt
mount: 文件系統類型錯誤、選項錯誤、/dev/rbd0 上有壞超級塊、
       缺少代碼頁或助手程序,或其他錯誤

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

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

[root@node1 ceph-cluster]#  rbd snap protect image --snap image-snap1 #把快照保護起來
[root@node1 ceph-cluster]#  rbd snap rm image --snap image-snap1    //會失敗
[root@node1 ceph-cluster]# rbd clone image --snap image-snap1 image-clone --image-feature layering  #使用image的快照image-snap1克隆一個新的image-clone鏡像

2)查看克隆鏡像與父鏡像快照的關系

[root@node1 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/image@image-snap1
#克隆鏡像很多數據都來自於快照鏈
#如果希望克隆鏡像可以獨立工作,就需要將父快照中的數據,全部拷貝一份,但比較耗時!!!
[root@node1 ceph-cluster]#  rbd flatten image-clone    #解除與快照的關系
[root@node1 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) 客戶端撤銷磁盤映射

[root@client ~]# umount /mnt
[root@client ~]# rbd showmapped
id pool image        snap device    
0  rbd  image        -    /dev/rbd0
[root@client ~]# rbd unmap /dev/rbd/rbd/image   #撤銷磁盤映射image

2)刪除快照與鏡像

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

15,塊存儲應用案例
1)創建磁盤鏡像。

[root@node1 ceph-cluster]# rbd create vm1-image --image-feature  layering --size 10G
[root@node1 ceph-cluster]# rbd create vm2-image --image-feature  layering --size 10G
[root@node1 ceph-cluster]# rbd  list
[root@node1 ceph-cluster]# rbd  info  vm1-image
[root@node1 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添加新賬戶(案例我們使用默認賬戶)。

[root@node1 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                             //開啟認證
[root@node1 ceph-cluster]# cat /etc/ceph/ceph.client.admin.keyring    //賬戶文件
[client.admin]
    key = AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==

3)部署客戶端環境。
註意:這裏使用真實機當客戶端!!!
客戶端需要安裝ceph-common軟件包,拷貝配置文件(否則不知道集群在哪),
拷貝連接密鑰(否則無連接權限)。

[root@room9pc01 ~]# yum -y  install ceph-common
[root@room9pc01 ~]# scp 192.168.4.11:/etc/ceph/ceph.conf  /etc/ceph/  #下載ceph配置文件
[root@room9pc01 ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring /etc/ceph/    #下載ceph密鑰

4)創建KVM虛擬機。
使用virt-manager創建1臺普通的KVM虛擬機。名稱為vm1
5)配置libvirt secret。
編寫賬戶信息文件(真實機操作)

[root@room9pc01 ~]# vim secret.xml            //新建臨時文件,內容如下 
<secret ephemeral=‘no‘ private=‘no‘>
        <usage type=‘ceph‘>
                <name>client.admin secret</name>
        </usage>
</secret>
#使用XML配置文件創建secret
[root@room9pc01 ~]# virsh secret-define --file secret.xml
生成 secret c409ec4c-803b-46bc-b4e4-35dc86a08f85     
//隨機的UUID,這個UUID對應的有賬戶信息
編寫賬戶信息文件(真實機操作)
--獲取client.admin的key,或者直接查看密鑰文件
方式一:
[root@room9pc01 ~]# ceph auth get-key client.admin 
方式二:
[root@room9pc01 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQDExOpbE+W9BxAA9QBqQUAY0tFmSmjOWmS8Nw==

--設置secret,添加賬戶的密鑰

[root@room9pc01 ~]# virsh secret-set-value --secret c409ec4c-803b-46bc-b4e4-35dc86a08f85 --base64 AQDExOpbE+W9BxAA9QBqQUAY0tFmSmjOWmS8Nw==
//這裏secret後面是之前創建的secret的UUID
//base64後面是client.admin賬戶的密碼
//現在secret中既有賬戶信息又有密鑰信息
[root@room9pc01 room2018]# virsh secret-list        #查看uuid
 UUID                                  用量
--------------------------------------------------------------------------------
 c409ec4c-803b-46bc-b4e4-35dc86a08f85  ceph client.admin secret

6)虛擬機的XML配置文件。
每個虛擬機都會有一個XML配置文件,包括:
虛擬機的名稱、內存、CPU、磁盤、網卡等信息

[root@room9pc01 ~]# 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修改配置文件,效果如下:
[root@room9pc01] 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的源)
與真機主機同步時間([root@node1 ceph-deploy]# scp /etc/chrony.conf      [email protected]:/etc/)
node1允許無密碼遠程node4 命令:ssh-copy-id [email protected]
[root@node1 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軟件包
[root@node1 ceph-cluster]yum -y install ceph-mds 
登陸node1部署節點操作
[root@node1 ceph-cluster]# cd  /root/ceph-cluster   #該目錄,是最早部署ceph集群時,創建的目錄
[root@node1 ceph-cluster]# ceph-deploy mds create node4 #給nod4拷貝配置文件,啟動mds服務
[root@node1 ceph-cluster]# ceph-deploy admin node4  #同步配置文件和key

3,創建存儲池

[root@node1 ceph-cluster]ceph osd pool create cephfs_data 128  #創建存儲池,對應128個PG
[root@node1 ceph-cluster]ceph osd pool create cephfs_metadata 128 #創建存儲池,對應128個PG

4,創建Ceph文件系統

[root@node1 ceph-cluster]ceph mds stat                     //查看mds狀態
e2:, 1 up:standby
[root@node1 ceph-cluster]ceph fs new myfs1 cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
//註意,現在medadata池,再寫data池
//默認,只能創建1個文件系統,多余的會報錯
[root@node1 ceph-cluster]ceph fs ls
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[root@node1 ceph-cluster]ceph mds stat
e4: 1/1/1 up {0=node4=up:creating}

*5,客戶端掛載*

[root@client ~]# 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中找到
[root@client ~]# 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  命令:[root@node1 ceph-deploy]# ssh-copy-id [email protected]
修改node1的/etc/hosts,並同步到所有node1-5主機  #參考上面同步腳本
[root@node1 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軟件包

[root@node1 ceph-deploy]# ceph-deploy install --rgw node5 #給node5安裝軟件包
[root@node1 ceph-deploy]#  ceph-deploy admin node5 #同步配置文件與密鑰到node5

3)新建網關實例

[root@node1 ceph-deploy]#  ceph-deploy rgw create node5    #啟動一個rgw服務
[root@node5 ~]# 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
[root@node5 ~]# systemctl  status ceph-radosgw@\*

4)修改服務端口

登陸node5,RGW默認服務端口為7480,修改為8000或80更方便客戶端記憶和使用
[root@node5 ~]#  vim  /etc/ceph/ceph.conf
[client.rgw.node5]
host = node5
rgw_frontends = "civetweb port=80"
//node5為主機名
//civetweb是RGW內置的一個web服務
[root@node5 ~]# systemctl  restart  [email protected] #重啟服務
[root@node4 ~]# ss -tunlp | grep :80    #查看端口80信息
tcp    LISTEN     0      128       *:80                    *:*                   users:(("radosgw",pid=5994,fd=30))

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

[root@client ~]# 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>
真機訪問:

技術分享圖片

2)使用第三方軟件訪問
登陸node5(RGW)創建賬戶

[root@node5 ~]#  radosgw-admin user create --uid="testuser" --display-name="First User"
… …
"keys": [
        {
            "user": "testuser",
            "access_key": "5E42OEGB1M95Y49IBG7B",
            "secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
        }
    ],
... ...
[root@node5 ~]# radosgw-admin user info --uid=testuser
//testuser為用戶,key是賬戶訪問密鑰

3)客戶端安裝軟件

[root@client ~]#  yum install s3cmd-2.0.1-1.el7.noarch.rpm
修改軟件配置
[root@client ~]#  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(類似於存儲數據的目錄)

[root@client ~]# s3cmd ls
[root@client ~]# s3cmd mb s3://my_bucket
Bucket ‘s3://my_bucket/‘ created
[root@client ~]# s3cmd ls
2018-05-09 08:14 s3://my_bucket
[root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/
[root@client ~]# s3cmd ls
2018-05-09 08:14 s3://my_bucket
[root@client ~]# s3cmd ls s3://my_bucket
DIR s3://my_bucket/log/
[root@client ~]# s3cmd ls s3://my_bucket/log/
2018-05-09 08:19 309034 s3://my_bucket/log/messages 
測試下載功能
[root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp/
測試刪除功能
[root@client ~]# s3cmd del s3://my_bucket/log/messages

部署Ceph集群--jluocc