100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Ceph原理 部署 存储集群 块存储及对象存储centos7.5

Ceph原理 部署 存储集群 块存储及对象存储centos7.5

时间:2018-11-26 08:52:23

相关推荐

Ceph原理 部署 存储集群 块存储及对象存储centos7.5

目录

​编辑

一、Ceph概述

1、基础知识

1. 分布式存储定义

2. 常用的分布式文件系统

3. Ceph定义

4. Ceph组件

二、实验环境准备

1、实验拓扑图

2、配置yum源

3、配置SSH无密码连接

4、NTP时间同步

1.NTP服务器配置

2.NTP客户端配置

3.准备存储硬盘

三、部署环境

1、安装部署软件

1.使用node1作为部署主机(可自行选择主机)

2.ceph-deploy命令与子命令都支持--help查看帮助

2、创建目录

四、部署存储集群

1、创建Ceph集群

2、创建OSD

1. 初始化清空磁盘数据(仅node1操作即可)

2. 创建OSD存储空间(仅node1操作即可)

3. 状态查询

4. 清理集群软件以及相关数据(过程中若有不可逆操作,可执行此命令)

5.如何删除OSD

6. 常见错误

五、Ceph块存储

1、概述

1.块存储定义

2、块存储集群

1. 创建镜像

2. 动态调整大小

3. 客户端通过KRBD访问

4. 客户端撤销磁盘映射

5. 删除镜像

六、块存储应用案例

1、创建镜像快照

1. 查看镜像快照与创建

2. 删除客户端写入的测试文件

3. 还原快照

2、创建克隆快照

1.克隆快照(克隆前需要对快照进行保护)

2. 查看克隆镜像与父镜像快照的关系

3. 删除快照

七、分布式文件系统

1、基础知识

1. CephFS定义

2.环境拓扑

2、元数据服务器

1. 元数据定义

2. 部署元数据服务器

3、文件系统服务器

1.创建存储池

2. 创建Ceph文件系统

3. 客户端挂载(客户端需要安装ceph-common)

4. 查看所有用户列表

八、Ceph对象存储

1、概述

1. 对象存储定义

2、对象存储

1. 部署RGW软件包

2. 新建网关实例

3. 修改服务端口

4. 客户端测试

一、Ceph概述

1、基础知识

1. 分布式存储定义

2. 常用的分布式文件系统

3. Ceph定义

4. Ceph组件

二、实验环境准备

1、实验拓扑图

一台客户端虚拟机、3台存储集群虚拟机(IP可自行规划)

2、配置yum源

阿里云源地址:centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站 ()

如下,以一台设备为例(剩余节点设备可克隆此设备)

[root@client ~]# rm -rf /etc/yum.repos.d/* #删除既有无效的repo[root@client ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo /repo/Centos-7.repo#下载ali源[root@client ~]# vim /etc/yum.repos.d/ceph.repo #编写ceph源文件[ceph]name=cephbaseurl=/ceph/rpm-jewel/el7/x86_64/gpgcheck=0[ceph-noarch]name=cephnoarchbaseurl=/ceph/rpm-jewel/el7/noarch/gpgcheck=0[root@client ~]# yum makecache #更新缓存

3、配置SSH无密码连接

[root@client ~]# echo "192.168.5.123 client > 192.168.5.124 node1> 192.168.5.125 node2> 192.168.5.126 node3" >> /etc/hosts # 修改解析文件" 注意/etc/hosts解析的域名必须与本机主机名一致!!![root@client ~]# for i in 192.168.5.12{3,4,5,6}; do scp /etc/hosts $i:/etc/; done#将配置好的解析文件同步给另外的设备[root@client ~]# ssh-keygen -f /root/.ssh/id_rsa -N '' #非交互生成秘钥对[root@client ~]# for i in 192.168.5.12{3,4,5,6}; do ssh-copy-id $i; done #拷贝秘钥到各主机

4、NTP时间同步

1.NTP服务器配置

1.使用客户端当做NTP服务器

2.其他所有主机与其同步时间

[root@client ~]# for i in 192.168.5.12{3,4,5,6}; do ssh $i "yum -y install chrony"; done #为所有节点设备安装ntp服务[root@client ~]# vim /etc/chrony.conf #编写服务器配置文件# Use public servers from the project.# Please consider joining the pool (http://www./join.html).server iburst #配置服务器地址# Record the rate at which the system clock gains/losses time.driftfile /var/lib/chrony/drift# Allow the system clock to be stepped in the first three updates# if its offset is larger than 1 second.makestep 1.0 3# Enable kernel synchronization of the real-time clock (RTC).rtcsync# Enable hardware timestamping on all interfaces that support it.#hwtimestamp *# Increase the minimum number of selectable sources required to adjust# the system clock.#minsources 2# Allow NTP client access from local network.allow 192.168.5.0/24 #允许此网段访问NTP# Serve time even if not synchronized to a time source.local stratum 10 #设置NTP的层数量# Specify file containing keys for NTP authentication.#keyfile /etc/chrony.keys# Specify directory for log files.logdir /var/log/chrony# Select which information is logged.#log measurements statistics tracking[root@client ~]# systemctl enable --now chronyd #启动NTP并加入开机自启

2.NTP客户端配置

[root@client ~]# for i in 192.168.5.12{4,5,6}; do ssh $i "sed -i '/^server/ d' /etc/chrony.conf ; sed -i '1i server 192.168.5.123 iburst' /etc/chrony.conf; systemctl enable --now chronyd"; done#去除无用配置,添加服务器地址,启动并设置开机自启[root@client ~]# for i in 192.168.5.12{4,5,6}; do ssh $i "chronyc sources -v | tail -1"; done#检查客户端是否与服务器连接,^*代表已同步NTP^* client 11 7 377 47 +4724ns[ +23us] +/- 52ms^* client 11 6 37 54+6ns[ +548us] +/- 52ms^* client 11 6 37 54 +114ns[ -176us] +/- 52ms

3.准备存储硬盘

三、部署环境

1、安装部署软件

1.使用node1作为部署主机(可自行选择主机)

[root@node1 ~]# yum -y install ceph-deploy.noarch #安装依赖环境

2.ceph-deploy命令与子命令都支持--help查看帮助

[root@node1 ~]# ceph-deploy --help

2、创建目录

[root@node1 ~]# mkdir ceph-cluster

四、部署存储集群

1、创建Ceph集群

[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''[root@node1 ~]# for i in 192.168.5.12{3,4,5,6}; do ssh-copy-id $i; done #发布秘钥到各主机[root@node1 ~]# cd ceph-cluster/[root@node1 ceph-cluster]# for i in node{1..3}; do ssh $i "yum install -y yum-utils && yum-config-manager --add-repo /pub/epel/7/x86_64/ && yum install --nogpgcheck -y epel-release && rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 && rm -f /etc/yum.repos.d/*"; done #为node节点安装依赖包,不执行会出现如下错误Error: Package: 2:ceph-common-10.2.11-0.el7.x86_64 (ceph)Requires: libbabeltrace-ctf.so.1()(64bit)Error: Package: 2:ceph-osd-10.2.11-0.el7.x86_64 (ceph)Requires: libleveldb.so.1()(64bit)Error: Package: 2:ceph-mon-10.2.11-0.el7.x86_64 (ceph)Requires: libleveldb.so.1()(64bit)Error: Package: 2:librbd1-10.2.11-0.el7.x86_64 (ceph)Requires: liblttng-ust.so.0()(64bit)Error: Package: 2:ceph-radosgw-10.2.11-0.el7.x86_64 (ceph)Requires: libfcgi.so.0()(64bit)Error: Package: 2:ceph-base-10.2.11-0.el7.x86_64 (ceph)Requires: liblttng-ust.so.0()(64bit)Error: Package: 2:librgw2-10.2.11-0.el7.x86_64 (ceph)Requires: libfcgi.so.0()(64bit)Error: Package: 2:ceph-common-10.2.11-0.el7.x86_64 (ceph)Requires: libbabeltrace.so.1()(64bit)Error: Package: 2:librados2-10.2.11-0.el7.x86_64 (ceph)Requires: liblttng-ust.so.0()(64bit)You could try using --skip-broken to work around the problemYou could try running: rpm -Va --nofiles --nodigest[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3 #创建集群配置(所有节点都为mon)[root@node1 ceph-cluster]# for i in node{1,2,3}; do ssh $i "yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw"; done #给所有节点安装Ceph组件ceph-mon#提供mon监控及绘制地图ceph-osd#提供osd共享磁盘ceph-mds#提供文件系统服共享ceph-radosgw#提供对象存储共享[root@node1 ceph-cluster]# ceph-deploy mon create-initial #初始化所有节点mon服务[root@node1 ceph-cluster]# systemctl status ceph-mon@node1 #可在各节点查看集群状态

2、创建OSD

1. 初始化清空磁盘数据(仅node1操作即可)

注意:磁盘号要和设备内对应,lsblk可以查看

[root@node1 ceph-cluster]# ceph-deploy disk zap node1:sdb node1:sdc[root@node1 ceph-cluster]# ceph-deploy disk zap node2:sdb node2:sdc[root@node1 ceph-cluster]# ceph-deploy disk zap node3:sdb node3:sdc

2. 创建OSD存储空间(仅node1操作即可)

[root@node1 ceph-cluster]# ceph-deploy osd create node1:sdb node1:sdc[root@node1 ceph-cluster]# ceph-deploy osd create node2:sdb node2:sdc[root@node1 ceph-cluster]# ceph-deploy osd create node3:sdb node3:sdc

3. 状态查询

[root@node1 ceph-cluster]# ceph osd tree#查看OSD状态ID WEIGHT TYPE NAMEUP/DOWN REWEIGHT PRIMARY-AFFINITY -1 0.08752 root default -2 0.02917host node10 0.01459 osd.0 up 1.000001.00000 1 0.01459 osd.1 up 1.000001.00000 -3 0.02917host node22 0.01459 osd.2 up 1.000001.00000 3 0.01459 osd.3 up 1.000001.00000 -4 0.02917host node34 0.01459 osd.4 up 1.000001.00000 5 0.01459 osd.5 up 1.000001.00000 [root@node1 ceph-cluster]# ceph -s#查询集群状态cluster 85e4b1e5-541a-4c51-9709-2dbe52d5b85fhealth HEALTH_OKmonmap e1: 3 mons at {node1=192.168.5.124:6789/0,node2=192.168.5.125:6789/0,node3=192.168.5.126:6789/0}election epoch 4, quorum 0,1,2 node1,node2,node3osdmap e29: 6 osds: 6 up, 6 inflags sortbitwise,require_jewel_osdspgmap v56: 64 pgs, 1 pools, 0 bytes data, 0 objects646 MB used, 91447 MB / 92093 MB avail64 active+clean

4. 清理集群软件以及相关数据(过程中若有不可逆操作,可执行此命令)

注意,这些操作会删除node1-node3主机的所有ceph软件及配置文件等数据,非必要不要操作!!

'清除Ceph数据'[root@node1 ceph-cluster]# ceph-deploy purgedata node1 node2 node3 '从远程主机中删除Ceph包并清除所有数据'[root@node1 ceph-cluster]# ceph-deploy purge node1 node2 node3

5.如何删除OSD

ceph osd treeceph osd out osd.4ceph osd crush remove osd.4ceph auth del osd.4ceph osd rm osd.4最后要找到对应的主机,umount把osd.4对应的磁盘卸载

6. 常见错误

health: HEALTH_WARNclock skew detected on node2, node3… clock skew表示时间不同步,解决办法:请先将所有主机的时间都使用NTP时间同步!!!Ceph要求所有主机时差不能超过0.05s,否则就会提示WARN。如果状态还是失败,可以尝试执行如下命令,重启所有ceph服务:解决方案:[root@node1 ~]# systemctl restart ceph.target

如果提示错误信息:[ceph_deploy][ERROR ]RuntimeError: bootstrap-osd keyring not found; run 'gatherkeys'解决方案:[root@node1 ceph-cluster]# ceph-deploy gatherkeys node1 node2 node3查询状态如果还是失败解决方案:[root@node1 ceph-cluster]# systemctl restart ceph\*.service ceph\*.target#在所有节点,或者是失败的节点

如果提示:[node1][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory解决方案:[root@node1 ceph-cluster]# vim ceph.conf 最下面加入行:public_network = 192.168.5.0/24[root@host1 ceoh-clu]# ceph-deploy --overwrite-conf config push node1 node2 node3

如果提示:[ceph_deploy.config][ERROR] RuntimeError:config file /etc/ceph/ceph.conf exists whit different content; use –overwrite-conf to overwirte解决方案:[root@node1 ceph-cluster]# ceph-deploy –overwrite-conf mon create-initial#覆盖远程主机现有的配置文件

五、Ceph块存储

1、概述

1.块存储定义

2、块存储集群

1. 创建镜像

① 查看存储池(默认有一个rbd池)

[root@node1 ceph-cluster]# ceph osd lspools #查看结果显示,共享池的名称为rbd,这个共享池的编号为00 rbd,

② 创建镜像、查看镜像

[root@node1 ceph-cluster]# rbd create demo-image --image-feature layering --size 10G#创建demo-image镜像,这里的demo-image创建的镜像名称,名称可以为任意字符[root@node1 ceph-cluster]# rbd create rbd/image --image-feature layering --size 10G#在rbd池中创建名称为image的镜像(rbd/image),镜像名称可以任意[root@node1 ceph-cluster]# rbd list #列出所有镜像demo-imageimage[root@node1 ceph-cluster]# rbd info demo-image #查看demo-image这个镜像的详细信息rbd image 'demo-image':size 10240 MB in 2560 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.10336b8b4567format: 2features: layeringflags:

2. 动态调整大小

① 缩小容量

[root@node1 ceph-cluster]# rbd resize --size 7G image --allow-shrink #allow(允许),shrink(缩小)Resizing image: 100% complete...done.[root@node1 ceph-cluster]# rbd info imagerbd image 'image':size 7168 MB in 1792 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.10366b8b4567format: 2features: layeringflags:

② 扩容容量

[root@node1 ceph-cluster]# rbd resize --size 15G demo-image #扩容到15GResizing image: 100% complete...done.[root@node1 ceph-cluster]# rbd info demo-imagerbd image 'demo-image':size 15360 MB in 3840 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.10336b8b4567format: 2features: layeringflags:

3. 客户端通过KRBD访问

① 客户端需要安装ceph-common软件包

拷贝配置文件(否则不知道集群在哪)

拷贝连接秘钥(否则无权限连接)

[root@client ~]# rm -rf /etc/yum.repos.d/ceph.repo[root@client ~]# yum -y install ceph-common[root@client ~]# scp 192.168.5.124:/etc/ceph/ceph.conf /etc/ceph/ #拷贝配置文件(否则不知道集群在哪)[root@client ~]# scp 192.168.5.124:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ #拷贝连接密钥(否则无连接权限)

② 映射镜像到本地磁盘

[root@client ~]# rbd map image #客户端访问映射服务器的image共享镜像/dev/rbd0[root@client ~]# lsblk #查看结果(会多一块磁盘)rbd0NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part ├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]sr0 11:0 1 8.8G 0 rom rbd0 252:0 0 7G 0 disk [root@client ~]# rbd showmapped #查看磁盘名和共享镜像名称的对应关系id pool image snap device 0 rbd image - /dev/rbd0

③ 客户端格式化、挂载分区

[root@client ~]# mkfs.xfs /dev/rbd0 #格式化,格式为xfsmeta-data=/dev/rbd0 isize=512 agcount=8, agsize=229376 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data= bsize=4096 blocks=1835008, imaxpct=25= sunit=1024 swidth=1024 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log=internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=8 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@client ~]# mount /dev/rbd0 /mnt/ #挂载(可以挂载到任意目录)[root@client ~]# echo "test1" > /mnt/test.txt #测试写入数据[root@client ~]# cat /mnt/test.txt #查看数据test1

4. 客户端撤销磁盘映射

[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 #撤销磁盘映射,也可以使用镜像名取消映射[root@client ~]# rbd showmapped

5. 删除镜像

[root@node1 ceph-cluster]# rbd listdemo-imageimage[root@node1 ceph-cluster]# rbd rm image

六、块存储应用案例

1、创建镜像快照

1. 查看镜像快照与创建

[root@node1 ceph-cluster]# rbd snap ls image #查看某个镜像有没有快照,image是镜像的名称,ls是查看[root@node1 ceph-cluster]# rbd snap create image --snap image-snap1#为image镜像创建快照,--snap指定快照名称,快照名称为image-snap1,快照名称可以任意[root@node1 ceph-cluster]# rbd snap ls imageSNAPID NAME SIZE 4 image-snap1 7168 MB

2. 删除客户端写入的测试文件

[root@client ~]# rbd map image #客户端访问映射服务器的image共享镜像[root@client ~]# mount /dev/rbd0 /mnt/#挂载[root@client ~]# rm -rf /mnt/test.txt#删除测试文件 [root@client ~]# umount /mnt#卸载

3. 还原快照

[root@node1 ~]# rbd snap rollback image --snap image-snap1# rollback是回滚的意思,使用image-snap1快照回滚数据,对image镜像进行回滚数据Rolling back to snapshot: 100% complete...done.[root@client ~]# mount /dev/rbd0 /mnt/ #客户端重新挂载分区[root@client ~]# cat /mnt/test.txt #查看数据是否被恢复test1

2、创建克隆快照

1.克隆快照(克隆前需要对快照进行保护)

[root@node1 ~]# rbd snap protect image --snap image-snap1 #保护快照#image是镜像名称,image-snap1是前面创建的快照(被保护的快照,不可以被删除)[root@node1 ~]# rbd snap rm image --snap image-snap1 #删除被保护的快照,会失败 rbd: snapshot 'image-snap1' is protected from removal.-07-21 19:53:33.373100 7fcb9614ed80 -1 librbd::Operations: snapshot is protected[root@node1 ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering#使用image镜像的快照image-snap1克隆一个新的名称为jacob-clone的镜像,新镜像名称可以任意

2. 查看克隆镜像与父镜像快照的关系

[root@node1 ~]# rbd info image-clonerbd image 'image-clone':size 7168 MB in 1792 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.ac5e6b8b4567format: 2features: layeringflags: parent: rbd/image@image-snap1overlap: 7168 MB#克隆镜像的很多数据都来自于快照链(相当于文件的软链接的概念)#如果希望克隆镜像可以独立工作,就需要将父快照中的数据,全部拷贝一份,但比较耗时!!![root@node1 ~]# rbd flatten image-clone #让新克隆的镜像与快照脱离关系Image flatten: 100% complete...done.[root@node1 ~]# rbd info image-clone #查看镜像信息rbd image 'image-clone':size 7168 MB in 1792 objectsorder 22 (4096 kB objects)block_name_prefix: rbd_data.ac5e6b8b4567format: 2features: layeringflags: #注意,父快照信息没了!(parent)

3. 删除快照

[root@node1 ~]# rbd snap unprotect image --snap image-snap1 #取消快照保护[root@node1 ~]# rbd snap rm image --snap image-snap1 #可以删除快照

七、分布式文件系统

1、基础知识

1. CephFS定义

2.环境拓扑

2、元数据服务器

1. 元数据定义

2. 部署元数据服务器

node3节点安装ceph-mds软件包

[root@node3 ~]# yum -y install ceph-mds

node1部署节点操作

[root@node1 ~]# cd /root/ceph-cluster/[root@node1 ceph-cluster]# ceph-deploy mds create node3 #给node3拷贝配置文件,启动mds服务

3、文件系统服务器

1.创建存储池

文件系统需要至少2个池

-一个池用于存储数据

-一个池用于存储元数据

[root@node3 ~]# ceph osd pool create cephfs_data 64 #创建存储池,共享池的名称为cephfs_data,对应有64个PGpool 'cephfs_data' created[root@node3 ~]# ceph osd pool create cephfs_metadata 64#创建存储池,共享池的名称为cephfs_metadata,对应有64个PGpool 'cephfs_metadata' created[root@node1 ~]# ceph osd lspools#查看存储池

PG是一个逻辑概念,没有对应的物质形态,是为了方便管理OSD而设计的概念。

为了方便理解,可以把PG想象成为是目录,可以创建32个目录来存放OSD,也可以创建64个目录来存放OSD。

2. 创建Ceph文件系统

[root@node3 ~]# ceph mds state2:, 1 up:standby[root@node3 ~]# ceph fs new myfs1 cephfs_metadata cephfs_data#myfs1是名称,名称可以任意,注意,先写metadata池,再写data池、fs文件系统#默认,只能创建1个文件系统,多余的会报错new fs with metadata pool 2 and data pool 1[root@node3 ~]# ceph fs lsname: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

3. 客户端挂载(客户端需要安装ceph-common)

[root@client ~]# mount -t ceph 192.168.5.124:6789:/ /mnt/ -o name=admin,secret=`awk 'NR==2 {print $3}' /etc/ceph/ceph.client.admin.keyring`#注意:-t(type)指定文件系统类型,文件系统类型为ceph# -o(option)指定mount挂载命令的选项,选项包括name账户名和secret密码# 192.168.5.124为MON节点的IP(不是MDS节点),6789是MON服务的端口号# admin是用户名,secret是秘钥# 秘钥可以在/etc/ceph/ceph.client.admin.keyring中

4. 查看所有用户列表

[root@node1 ~]# ceph auth list #查看所有用户列表installed auth entries:mds.node3key: AQA1RtliJfZgERAAZ6OIk0t3HNoduZUzphFZcA==caps: [mds] allowcaps: [mon] allow profile mdscaps: [osd] allow rwxosd.0key: AQCrtNdijjN8FRAAKyMmodwxijBkwPvt0kJ/dg==caps: [mon] allow profile osdcaps: [osd] allow *osd.1key: AQC1tNdiIdcWCBAAicO3F16yzjzFs1oW2Qi3dA==caps: [mon] allow profile osdcaps: [osd] allow *osd.2key: AQDDtNdi0hE6KxAA47mPGZIoSK/NSBEtRAWUMw==caps: [mon] allow profile osdcaps: [osd] allow *osd.3key: AQDMtNdiz5qYFRAAPGnwulMyg/UN12yERROMUg==caps: [mon] allow profile osdcaps: [osd] allow *osd.4key: AQDZtNdiMaHfOhAADGDwz6D2WQcpwp0TKHD2HQ==caps: [mon] allow profile osdcaps: [osd] allow *osd.5key: AQDitNdi/NPVJhAAvbydxrLJETsL6MaXBUniCQ==caps: [mon] allow profile osdcaps: [osd] allow *client.adminkey: AQC0stdi8PwwIRAAXMPH0nx2Qw/DDcxxRW9V1g==caps: [mds] allow *caps: [mon] allow *caps: [osd] allow *client.bootstrap-mdskey: AQC1stdiN9ylBRAA/rhrC0yypFvj5U66ArvIOg==caps: [mon] allow profile bootstrap-mdsclient.bootstrap-mgrkey: AQC1stditKOgNxAAvY/YG+HzOMcJyk+7FyhXaQ==caps: [mon] allow profile bootstrap-mgrclient.bootstrap-osdkey: AQC0stdiGaffKBAAIui/DgJg3M2MqO/4FAQ1zQ==caps: [mon] allow profile bootstrap-osdclient.bootstrap-rgwkey: AQC0stdiM6U/NBAAzkR9kj5piGfk9zAuRkWtfw==caps: [mon] allow profile bootstrap-rgw

八、Ceph对象存储

1、概述

1. 对象存储定义

2、对象存储

1. 部署RGW软件包

用户需要通过RGW访问存储集群(node3需要安装ceph-radosgw)

[root@node3 ~]# yum -y install ceph-radosgw

2. 新建网关实例

① 拷贝配置文件,启动一个rgw服务

[root@node1 ceph-cluster]# cd /root/ceph-cluster/ #注意,执行ceph-deploy脚本一定要进入目录执行[root@node1 ceph-cluster]# ceph-deploy rgw create node3 ##远程mode3启动rgw服务

② 登录node3验证服务是否启动

[root@node3 ~]# ps aux | grep radosgwroot 3394 0.6 0.9 588044 17784 ? Ssl 21:34 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node3 --setuser ceph --setgroup cephroot 3452 0.0 0.0 112704 972 pts/0 R+ 21:34 0:00 grep --color=auto radosgw[root@node3 ~]# systemctl status ceph-radosgw@\*● ceph-radosgw@rgw.node3.service - Ceph rados gatewayLoaded: loaded (/usr/lib/systemd/system/ceph-radosgw@.service; enabled; vendor preset: disabled)Active: active (running) since Thu -07-21 21:34:10 CST; 10min agoMain PID: 3394 (radosgw)CGroup: /system.slice/system-ceph\x2dradosgw.slice/ceph-radosgw@rgw.node3.service└─3394 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node3 --setuser ceph --setgro...Jul 21 21:34:10 node3 systemd[1]: Started Ceph rados gateway.Jul 21 21:34:10 node3 systemd[1]: Starting Ceph rados gateway...

3. 修改服务端口

[root@node3 ~]# vim /etc/ceph/ceph.conf[global]fsid = 85e4b1e5-541a-4c51-9709-2dbe52d5b85fmon_initial_members = node1, node2, node3mon_host = 192.168.5.124,192.168.5.125,192.168.5.126auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx[client.rgw.node3] #增加此处三行host = node3 #主机名rgw_frontends = "civetweb port=8000" #civetweb是RGW内置的一个web服务[root@node3 ~]# systemctl restart ceph-radosgw@\* #重启对象存储服务

4. 客户端测试

① curl测试

[root@client ~]# curl 192.168.5.126:8000<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="/doc/-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucket

② 使用第三方软件访问

[root@node3 ~]# radosgw-admin user create --uid="testuser" --display-name="First User"{"user_id": "testuser","display_name": "First User","email": "","suspended": 0,"max_buckets": 1000,"auid": 0,"subusers": [],"keys": [{"user": "testuser","access秘钥_key": "记住访问秘钥","secret安全口令_key": "客户端会使用"}],"swift_keys": [],"caps": [],"op_mask": "read, write, delete","default_placement": "","placement_tags": [],"bucket_quota": {"enabled": false,"max_size_kb": -1,"max_objects": -1},"user_quota": {"enabled": false,"max_size_kb": -1,"max_objects": -1},"temp_url_keys": []}#testuser为用户名,access_key和secret_key是账户密钥

③ 客户端安装软件(下载地址:

https://download-/pub/epel/7/x86_64/Packages/s/s3cmd-2.2.0-1.el7.noarch.rpm)

[root@client ~]# s3cmd --configureEnter new values or accept defaults in brackets with Enter.Refer to user manual for detailed description of all options.Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.Access Key:#输入秘钥Secret Key:#在node3节点可查Default Region [US]: #按回车Use "" for S3 Endpoint and not modify it to the target Amazon S3.S3 Endpoint []: 192.168.5.126:8000 #输入node3的IP及端口Use "%(bucket)s." to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be usedif the target S3 system supports dns based buckets.DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.]: 192.168.5.126:8000 #输入node3的IP及端口Encryption password is used to protect your files from readingby unauthorized persons while in transfer to S3Encryption password: #按回车Path to GPG program [/usr/bin/gpg]: #按回车When using secure HTTPS protocol all communication with Amazon S3servers is protected from 3rd party eavesdropping. This method isslower than plain HTTP, and can only be proxied with Python 2.7 or newerUse HTTPS protocol [Yes]: No #输入NoOn some networks all internet access must go through a HTTP proxy.Try setting it here if you can't connect to S3 directlyHTTP Proxy server name: #按回车New settings:Access Key: T4HWA1EIPTRCYKFKE8BASecret Key: acosOFwvPJaK6aoSsZsPZ5HOPATqu40wnmirflrnDefault Region: USS3 Endpoint: 192.168.5.126:8000DNS-style bucket+hostname:port template for accessing a bucket: 192.168.5.126:8000Encryption password: Path to GPG program: /usr/bin/gpgUse HTTPS protocol: FalseHTTP Proxy server name: HTTP Proxy server port: 0Test access with supplied credentials? [Y/n] n #输入noSave settings? [y/N] y #输入y保存Configuration saved to '/root/.s3cfg'

④ 创建存储数据的bucket(类似于存储数据的目录)

[root@client ~]# s3cmd ls[root@client ~]# s3cmd mb s3://my_bucketBucket 's3://my_bucket/' created[root@client ~]# s3cmd ls-07-22 10:12 s3://my_bucket[root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/upload: '/var/log/messages' -> 's3://my_bucket/log/messages' [1 of 1]37622 of 37622 100% in 1s 27.47 KB/s done[root@client ~]# s3cmd ls s3://my_bucketDIR s3://my_bucket/log/[root@client ~]# s3cmd ls s3://my_bucket/log/-07-22 10:13 37622 s3://my_bucket/log/messages

⑤ 测试下载功能

[root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp/download: 's3://my_bucket/log/messages' -> '/tmp/messages' [1 of 1]37622 of 37622 100% in 0s8.64 MB/s done[root@client ~]# ls /tmp/messages

⑥ 测试删除功能

[root@client ~]# s3cmd del s3://my_bucket/log/messagesdelete: 's3://my_bucket/log/messages'[root@client ~]# s3cmd ls s3://my_bucket/log/messages

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。