部署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臺
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>
真機訪問:
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