部署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)
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