目录
前言:
Ceph简介
Ceph特点
Ceph架构
Ceph核心组件及概念介绍
1、部署ceph实验环境:
2 、部署ceph集群
3、创建Ceph块存储
4、块存储应用
5、挂载Ceph文件系统
6、创建对象存储服务器
前言:
Ceph简介
Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。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源,注意所有的虚拟主机均需要挂载安装光盘。
[root@root9pc01 ~]# yum -y install vsftpd[root@root9pc01 ~]# mkdir /var/ftp/ceph[root@root9pc01 ~]# mount -o loop \rhcs2.0-rhosp9-1113-x86_64.iso /var/ftp/ceph[root@root9pc01 ~]# systemctl restart vsftpd
2)修改所有节点yum配置(以node1为例)
[root@node1 ~]# cat /etc/yum.repos.d/ceph.repo[mon]name=monbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MONgpgcheck=0[osd]name=osdbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSDgpgcheck=0[tools]name=toolsbaseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Toolsgpgcheck=0
3)修改/etc/hosts并同步到所有主机。
[root@node1 ~]# cat /etc/hosts... ...192.168.4.10 client192.168.4.11node1192.168.4.12node2192.168.4.13node3[root@node1 ~]# for i in 10 11 12 13> do> scp /etc/hosts 192.168.2.$i:/etc/> done
3)配置无密码连接。
[root@node1 ~]#ssh-keyscannode{1..6}>>/root/.ssh/known_hosts------可以让ssh时不需要再yes确认
[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''[root@node1 ~]# for i in 10 11 12 13> do> ssh-copy-id 192.168.4.$i> done
步骤二:配置NTP时间同步
1)创建NTP服务器。
[root@client ~]# yum -y install chrony[root@client ~]# cat /etc/chrony.confserver 0.centos. iburstallow 192.168.4.0/24local stratum 10[root@client ~]# systemctl restart chronyd
2)其它所有阶段与NTP服务器同步时间(以node1为例)。
[root@node1 ~]# cat /etc/chrony.confserver 192.168.4.10 iburst[root@node1 ~]# systemctl restart chronyd
步骤三:准备存储磁盘
使用virt-manager为虚拟机添加磁盘。
[root@root9pc01 ~]# virt-manager
2 、部署ceph集群
步骤一:部署软件
1)在node1安装部署工具,学习工具的语法格式。
[root@node1 ~]# yum -y install ceph-deploy
2)创建目录
[root@node1 ~]# mkdir ceph-cluster-----创建工作目录[root@node1 ~]# cd ceph-cluster/------进入工作目录
步骤二:部署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]#ceph-deploy mon create-initial
步骤三:创建OSD
1)准备磁盘分区lsblk
[root@node1 ~]# for i in {1..3}------对node{1..3}同时进行分区
> do
> ssh node$i parted /dev/vdb mklabel gpt
> done
[root@node1 ~]# for i in {1..3}; do ssh node$i parted /dev/vdb mkpart primary 1M 50%; done
[root@node1 ~]# for i in {1..3}; do ssh node$i parted /dev/vdb mkpart primary 50% 100%; done
[root@node1 ~]# for i in {1..3}--------为分区设置所属组和所属者为ceph
> do
> ssh node$i chown ceph.ceph /dev/vdb1
> done
[root@node1 ~]# 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操作即可)--------一定要在工作目录,要不然系统找不到
[root@node1ceph-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
3)创建OSD存储空间(仅node1操作即可)--------一定要在工作目录,要不然系统找不到
[root@node1 ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2//创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL日志,//创建osd存储设备,vdd为集群提供存储空间,vdb2提供JOURNAL日志[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
步骤四:验证测试
1) 查看集群状态
[root@node1 ~]# ceph -s正常显示:
[root@node1 ceph-clu]# ceph -s
cluster 1de07da3-cabd-4355-8b20-7b19bce6157e
health HEALTH_OK
monmap e1: 3 monsat {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 ceph-mon@node1-----node1上执行
systemctl restart ceph-mon@node2-----node2上执行
systemctl restart ceph-mon@node3-----node3上执行
若遇到别的错误,则按下面的方法来恢复:
重新部署ceph集群:
在每个节点上执行:
停止服务:
[root@node1 ceph]# systemctl stop ceph-\*
[root@node2ceph]# systemctl stop ceph-\*
[root@node3 ceph]# systemctl stop ceph-\*
卸载ceph软件:
仅在node1执行下面的命令:
[root@node1 ceph-cluster]# ceph-deploy purge node1 node2 node3
卸载OSD
在每个节点上执行:
[root@node1 ceph-cluster]# umount /dev/vdc1
[root@node1 ceph-cluster]# umount /dev/vdd1
删除ceph的数据
每个节点都执行:
[root@node1 ceph-cluster]#rm -rf /var/lib/ceph/
node1上添加规则:
[root@node1 ceph]# cat /etc/udev/rules.d/100-ceph.rules
ACTION=="add", KERNEL=="vdb?",SUBSYSTEM=="block", OWNER=ceph,GROUP=ceph
[root@node2 rules.d]# systemctl restart systemd-udev-trigger.service
3、创建Ceph块存储
步骤一:创建镜像
1)查看存储池。
[root@node1 ~]# ceph osd lspools-----------查看存储池(默认为rbd)0 rbd,--------0为编号,rbd为存储池名[root@node1 ceph-clu]# ceph osd pool get rbd sizesize: 3----------3副本
2)创建镜像、查看镜像语法结构; rbd create 池名/镜像名 --image-feature layering --size 大小
[root@node1 ~]# rbd create rbd/demo-image --image-feature layering --size 10G--------原型:rbd create 镜像名--image-feature layering --size 大小[root@node1 ~]# rbd create rbd/image --image-feature layering --size 10G-----image-feature layering特征为分层[root@node1 ~]# rbd list-------列出所有镜像[root@node1 ~]# rbd info demo-image----查看相关镜像的信息rbd image 'demo-image':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.d3aa2ae8944aformat: 2features: layering
步骤二:动态调整
1)缩小容量
[root@node1 ~]# rbd resize --size 7G image --allow-shrink-------------将镜像名为image的镜像大小缩小为7G[root@node1 ~]# rbd info image----查看相关镜像的信息
2)扩容容量
[root@node1 ~]# rbd resize --size 15G image-------------将镜像名为image的镜像大小扩展为15G[root@node1 ~]# rbd info image
步骤三:通过KRBD访问
1)集群内将镜像映射为本地磁盘
[root@node1 ~]# rbd map demo-image----将镜像影射为本地磁盘/dev/rbd0[root@node1 ~]# lsblk… …rbd0 251:0 0 10G 0 disk[root@node1 ~]# mkfs.xfs /dev/rbd0[root@node1 ~]# mount /dev/rbd0 /mnt
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[root@client ~]# rbd showmapped------查看镜像影射为本地磁盘的信息id pool image snap device0 rbd image - /dev/rbd0
3) 客户端格式化、挂载分区
[root@client ~]# mkfs.xfs /dev/rbd0[root@client ~]# mount /dev/rbd0 /mnt/[root@client ~]# echo "test" > /mnt/test.txt
步骤四:创建镜像快照
1) 创建镜像快照
[root@client~]# rbd snap create image --snap image-snap1-----创建镜像快照[root@client~]# rbd snap ls image-----查看相关快照信息SNAPID NAME SIZE4 image-snap1 15360 MB
2) 删除客户端写入的测试文件,并卸载挂载点
[root@client ~]# rm -rf /mnt/test.txt[root@client ~]# umount /mnt
注意:这里删除后一定要先卸载,不能在回滚之后卸载再重新挂载,那样会有问题
4) 还原快照
[root@node1 ~]# rbd snap rollback image --snap image-snap1-----还原快照#客户端重新挂载分区[root@client ~]# mount /dev/rbd0 /mnt/[root@client ~]# ls /mnttest.txt
步骤四:创建快照克隆
1)克隆快照
[root@node1 ~]# rbd snap protect image --snap image-snap1-----保护快照(unprotect不保护)[root@node1 ~]# rbd snap rm image --snap image-snap1 //会失败[root@node1 ~]# rbd clone \image --snap image-snap1 image-clone --image-feature layering//使用image的快照image-snap1克隆一个新的image-clone镜像
2)查看克隆镜像与父镜像快照的关系
[root@node1 ~]# rbd info image-clonerbd image 'image-clone':size 15360 MB in 3840 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.d3f53d1b58baformat: 2features: layeringflags:parent: rbd/image@image-snap1#克隆镜像很多数据都来自于快照链#如果希望克隆镜像可以独立工作,我们需要将父镜像的信息合并flattern到子镜像,一旦合并完成,RBD镜像和它的父镜像就不会存在任何关系了。[root@node1 ~]#rbd flatten image-clone[root@node1 ~]# rbd info image-clonerbd image 'image-clone':size 15360 MB in 3840 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.d3f53d1b58baformat: 2features: layeringflags:#注意,父快照信息没了!
步骤四:其他操作
1) 客户端撤销磁盘映射
[root@client ~]# umount /mnt[root@client ~]# rbd showmappedid pool image snap device0 rbd image - /dev/rbd0//语法格式:[root@client ~]#rbd unmap /dev/rbd/{poolname}/{imagename}[root@client ~]# rbd unmap /dev/rbd/rbd/image-----撤销镜像影射
2)删除快照与镜像
[root@node6 images]# rbd snap ls image------查看image镜像有哪些快照[root@node1 ~]# rbd snap rm image --snap image-snap----删除快照[root@node1 ~]# rbd list-----------查看有哪些镜像[root@node1 ~]# rbd rm image------删除镜像
4、块存储应用------将ceph集群作为后端存储
Ceph创建块存储镜像客户端安装部署ceph软件客户端部署虚拟机客户端创建secret设置虚拟机配置文件,调用ceph存储1)创建磁盘镜像。
[root@node1 ~]# rbd create vm1-image --image-feature layering --size 10G-----创建镜像[r镜像t@node1 ~]# rbd create vm2-image --image-feature layering --size 10G[root@node1 ~]# rbd list------列出镜像[root@node1 ~]# rbd info vm1-image[root@node1 ~]# qemu-img info rbd:rbd/vm1-imageimage: rbd:rbd/vm1-imagefile format: rawvirtual size: 10G (10737418240 bytes)disk size: unavailable
2)Ceph认证账户。
Ceph默认开启用户认证,客户端需要账户才可以访问,
默认账户名称为client.admin,key是账户的密钥,
可以使用ceph auth添加新账户(案例我们使用默认账户)。
[root@node1 ~]# cat /etc/ceph/ceph.conf //配置文件[global]mon_initial_members = node1, node2, node3mon_host = 192.168.2.10,192.168.2.20,192.168.2.30auth_cluster_required = cephx //开启认证auth_service_required = cephx //开启认证auth_client_required = cephx //开启认证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/[root@room9pc01 ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \/etc/ceph/
4)创建KVM虚拟机取名为vm1,只是用来获取xml文件,获取后就可以删掉该创建的虚拟机了
virsh dumpxml vm1 > /etc/libvirt/qemu/
virsh undefine vm1
5)虚拟机使用CEPH存储,需要认证。方式是虚拟机先生成secret,再将secret与CEPH账户映射
编写账户信息文件(真实机操作)
[root@room9pc01 ~]# vim secret.xml //新建临时文件,内容如下---------为下步生成uuid做准备<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--------生成随机的UUID,这个UUID对应的有账户信息733f0fd1-e3d6-4c25-a69f-6681fc19802b
[root@room9pc01 ~]# virsh secret-list UUID 用量 -------------------------------------------------------------------------------- 733f0fd1-e3d6-4c25-a69f-6681fc19802b ceph client.admin secret
查看管理员密钥(真实机操作)
[root@room9pc01 ~]# ceph auth get-key client.admin//获取client.admin的key,或者直接查看密钥文件[root@room9pc01 ~]# cat /etc/ceph/ceph.client.admin.keyring
再将secret与CEPH账户映射(真实机操作)
[root@room9pc01]virsh secret-set-value \--secret 733f0fd1-e3d6-4c25-a69f-6681fc19802b \-------这里secret后面是之前创建的secret的UUID--base64 AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg--------base64后面是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='733f0fd1-e3d6-4c25-a69f-6681fc19802b'/>--------这里的UUID就是secret的UUID,有client.admin账户和密钥信息</auth><source protocol='rbd' name='rbd/vm1-image'> <host name='192.168.4.i1' port='6789'/> </source>---------这里说明使用账户连接哪台ceph主机和端口,访问哪个池和镜像<target dev='vda' bus='virtio'/>-------这里说明将获取的镜像设置为虚拟机的vda磁盘<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/></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软件包
[root@node4 ~]#yum -y install ceph-mds
登陆node1部署节点操作
[root@node1 ~]# cd /root/ceph-cluster//该目录,是最早部署ceph集群时,创建的目录[root@node1 ceph-cluster]#ceph-deploy mds create node4//给nod4拷贝配置文件,启动mds服务
同步配置文件和key
[root@node1 ceph-cluster]#ceph-deploy admin node4
3)创建存储池
[root@fdfs_storage1 FastDFS]#mkdir -pv /data/fastdfs
4)修改配置文件。
[root@node4 ~]#ceph osd pool create cephfs_data 128//创建存储池,对应128个PG[root@node4 ~]#ceph osd pool create cephfs_metadata 128//创建存储池,对应128个PG
5)创建Ceph文件系统
[root@node4 ~]#ceph mds stat-------------查看mds状态e2:, 1 up:standby[root@node4 ~]#ceph fs new myfs1 cephfs_metadata cephfs_datanew fs with metadata pool 2 and data pool 1//注意,先写medadata池,再写data池//默认,只能创建1个文件系统,多余的会报错[root@node4 ~]#ceph fs lsname: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ][root@node4 ~]# ceph mds state4: 1/1/1 up {0=node4=up:creating}
6)客户端挂载
[root@client ~]#mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/ \-o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg== ---------------这里随便找一台机器都可以当作客户端,只要该机器能访问192.168.4.11的6789端口就行//注意:文件系统类型为ceph//192.168.4.11为MON节点的IP(不是MDS节点)//admin是用户名,secret是密钥//密钥可以在/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软件包
[root@node1 ~]#ceph-deploy install --rgw node5
同步配置文件与密钥到node5
[root@node1 ~]# cd /root/ceph-cluster[root@node1 ~]#ceph-deploy admin node5
3)新建网关实例
启动一个rgw服务
[root@node1 ~]#ceph-deploy rgw create node5
登陆node5验证服务是否启动
[root@node5 ~]#ps aux |grep radosgwceph 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--------node5为主机名rgw_frontends = "civetweb port=80"---------------civetweb是RGW内置的一个web服务systemctl stop httpd--------必须将httpd的80端口关掉,负责端口冲突systemctl restart ceph-radosgw\*
步骤二:客户端测试
1)curl测试
[root@client ~]# curl 192.168.4.15<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="/doc/-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 --configureAccess Key: 5E42OEGB1M95Y49IBG7BSecret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6Default Region [US]:---------注意这里不要修改,负责后面创建目录会有问题S3 Endpoint []: 192.168.4.15[%(bucket)s.]: %(bucket)s.192.168.4.15Use HTTPS protocol [Yes]: NoTest access with supplied credentials? [Y/n] YSave settings? [y/N] y//注意,其他提示都默认回车
4)创建存储数据的bucket(类似于存储数据的目录)
[root@client ~]# s3cmd ls[root@client ~]# s3cmd mb s3://my_bucket------mb是make bucket的意思,类似于创建文件夹Bucket 's3://my_bucket/' created[root@client ~]# s3cmd ls-05-09 08:14 s3://my_bucket[root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/------put上传[root@client ~]# s3cmd ls-05-09 08:14 s3://my_bucket[root@client ~]# s3cmd ls s3://my_bucketDIR s3://my_bucket/log/[root@client ~]# s3cmd ls s3://my_bucket/log/-05-09 08:19 309034 s3://my_bucket/log/messages
测试下载功能
[root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp/------get下载
测试删除功能
[root@client ~]# s3cmd del s3://my_bucket/log/messages----del删除文件[root@client ~]# s3cmd rb s3://my_bucket/log/-------------rb删除文件夹
集群基础之04(部署ceph实验环境 部署ceph集群 创建Ceph块存储 块存储应用 挂载Ceph文件系统 创建对象存储服务器)