集群基础之04(部署ceph实验环境、部署ceph集群、创建Ceph块存储、块存储应用、挂载Ceph文件系统、创建对象存储服务器)

目录

前言:

Ceph简介

 

Ceph特点

 

 Ceph架构

 

 Ceph核心组件及概念介绍

 

 

1、部署ceph实验环境:

2 、部署ceph集群

3、创建Ceph块存储

4、块存储应用

5、挂载Ceph文件系统

 

6、创建对象存储服务器


前言:

Ceph简介

 

Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

 

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。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源,注意所有的虚拟主机均需要挂载安装光盘。

  1. [root@root9pc01 ~]# yum -y install vsftpd
  2. [root@root9pc01 ~]# mkdir /var/ftp/ceph
  3. [root@root9pc01 ~]# mount -o loop \
  4. rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph
  5. [root@root9pc01 ~]# systemctl restart vsftpd

2)修改所有节点yum配置(以node1为例)

  1. [root@node1 ~]# cat /etc/yum.repos.d/ceph.repo
  2. [mon]
  3. name=mon
  4. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
  5. gpgcheck=0
  6. [osd]
  7. name=osd
  8. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
  9. gpgcheck=0
  10. [tools]
  11. name=tools
  12. baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
  13. gpgcheck=0

3)修改/etc/hosts并同步到所有主机。

  1. [root@node1 ~]# cat /etc/hosts
  2. ... ...
  3. 192.168.4.10 client
  4. 192.168.4.11    node1
  5. 192.168.4.12    node2
  6. 192.168.4.13    node3
  7. [root@node1 ~]# for i in 10 11 12 13
  8. > do
  9. > scp /etc/hosts 192.168.2.$i:/etc/
  10. > done

3)配置无密码连接。

[root@node1 ~]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts------可以让ssh时不需要再yes确认

  1. [root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
  2. [root@node1 ~]# for i in 10 11 12 13
  3. > do
  4. > ssh-copy-id 192.168.4.$i
  5. > done

步骤二:配置NTP时间同步

1)创建NTP服务器。

  1. [root@client ~]# yum -y install chrony
  2. [root@client ~]# cat /etc/chrony.conf
  3. server 0.centos.pool.ntp.org iburst
  4. allow 192.168.4.0/24
  5. local stratum 10
  6. [root@client ~]# systemctl restart chronyd

2)其它所有阶段与NTP服务器同步时间(以node1为例)。

  1. [root@node1 ~]# cat /etc/chrony.conf
  2. server 192.168.4.10 iburst
  3. [root@node1 ~]# systemctl restart chronyd

步骤三:准备存储磁盘

使用virt-manager为虚拟机添加磁盘。

[root@root9pc01 ~]# virt-manager

 

2 、部署ceph集群

 

步骤一:部署软件

1)在node1安装部署工具,学习工具的语法格式。

  1. [root@node1 ~]# yum -y install ceph-deploy

2)创建目录

  1. [root@node1 ~]# mkdir ceph-cluster-----创建工作目录
  2. [root@node1 ~]# cd ceph-cluster/------进入工作目录

步骤二:部署Ceph集群

1)创建Ceph集群配置。--------一定要在工作目录,要不然系统找不到

  1. [root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3

2)给所有节点安装软件包。--------一定要在工作目录,要不然系统找不到

  1. [root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3

3)初始化所有节点的mon服务(主机名解析必须对)--------一定要在工作目录,要不然系统找不到

  1. [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操作即可)--------一定要在工作目录,要不然系统找不到

  1. [root@node1ceph-cluster ]# ceph-deploy disk zap node1:vdc node1:vdd
  2. [root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdc node2:vdd
  3. [root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdc node3:vdd

3)创建OSD存储空间(仅node1操作即可)--------一定要在工作目录,要不然系统找不到

  1. [root@node1 ceph-cluster]# ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
  2. //创建osd存储设备,vdc为集群提供存储空间,vdb1提供JOURNAL日志,
  3. //创建osd存储设备,vdd为集群提供存储空间,vdb2提供JOURNAL日志
  4. [root@node1 ceph-cluster]# ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
  5. [root@node1 ceph-cluster]# ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2

步骤四:验证测试

1) 查看集群状态

  1. [root@node1 ~]# ceph -s
  2. 正常显示:

[root@node1 ceph-clu]# ceph -s
    cluster 1de07da3-cabd-4355-8b20-7b19bce6157e
     health HEALTH_OK
     monmap e1: 3 mons at {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@node2 ceph]# 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)查看存储池。

  1. [root@node1 ~]# ceph osd lspools-----------查看存储池(默认为rbd)
  2. 0 rbd,--------0为编号,rbd为存储池名
  3. [root@node1 ceph-clu]# ceph osd pool get rbd size
  4. size: 3----------3副本

2)创建镜像、查看镜像  语法结构; rbd create 池名/镜像名  --image-feature layering --size 大小

  1. [root@node1 ~]# rbd create rbd/demo-image --image-feature layering --size 10G--------原型:rbd create 镜像名 --image-feature layering --size 大小
  2. [root@node1 ~]# rbd create rbd/image --image-feature layering --size 10G-----image-feature layering特征为分层
  3. [root@node1 ~]# rbd list-------列出所有镜像
  4. [root@node1 ~]# rbd info demo-image----查看相关镜像的信息
  5. rbd image 'demo-image':
  6.     size 10240 MB in 2560 objects
  7.     order 22 (4096 kB objects)
  8.     block_name_prefix: rbd_data.d3aa2ae8944a
  9.     format: 2
  10.     features: layering

步骤二:动态调整

1)缩小容量

  1. [root@node1 ~]# rbd resize --size 7G image --allow-shrink-------------将镜像名为image的镜像大小缩小为7G
  2. [root@node1 ~]# rbd info image----查看相关镜像的信息

2)扩容容量

  1. [root@node1 ~]# rbd resize --size 15G image-------------将镜像名为image的镜像大小扩展为15G
  2. [root@node1 ~]# rbd info image

步骤三:通过KRBD访问

1)集群内将镜像映射为本地磁盘

  1. [root@node1 ~]# rbd map demo-image----将镜像影射为本地磁盘
  2. /dev/rbd0
  3. [root@node1 ~]# lsblk
  4. … …
  5. rbd0 251:0 0 10G 0 disk
  6. [root@node1 ~]# mkfs.xfs /dev/rbd0
  7. [root@node1 ~]# mount /dev/rbd0 /mnt

2)客户端通过KRBD访问

  1. #客户端需要安装ceph-common软件包
  2. [root@client ~]# yum -y install ceph-common
  3. #拷贝配置文件(否则不知道集群在哪)
  4. [root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
  5. #拷贝连接密钥(否则无连接权限)
  6. [root@client ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring    /etc/ceph/
  7. [root@client ~]# rbd map image----将镜像影射为本地磁盘
  8. [root@client ~]# lsblk
  9. [root@client ~]# rbd showmapped------查看镜像影射为本地磁盘的信息
  10. id pool image snap device
  11. 0 rbd image - /dev/rbd0

3) 客户端格式化、挂载分区

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

步骤四:创建镜像快照

1) 创建镜像快照

  1. [root@client~]# rbd snap create image --snap image-snap1-----创建镜像快照
  2. [root@client~]# rbd snap ls image-----查看相关快照信息
  3. SNAPID NAME SIZE
  4. 4 image-snap1 15360 MB

2) 删除客户端写入的测试文件,并卸载挂载点

  1. [root@client ~]# rm -rf /mnt/test.txt
  2. [root@client ~]# umount /mnt

注意:这里删除后一定要先卸载,不能在回滚之后卸载再重新挂载,那样会有问题

 

4) 还原快照

  1. [root@node1 ~]# rbd snap rollback image --snap image-snap1-----还原快照
  2. #客户端重新挂载分区
  3. [root@client ~]# mount /dev/rbd0 /mnt/
  4. [root@client ~]# ls /mnt
  5. test.txt

步骤四:创建快照克隆

1)克隆快照

  1. [root@node1 ~]# rbd snap protect image --snap image-snap1-----保护快照(unprotect不保护)
  2. [root@node1 ~]# rbd snap rm image --snap image-snap1 //会失败
  3. [root@node1 ~]# rbd clone \
  4. image --snap image-snap1 image-clone --image-feature layering
  5. //使用image的快照image-snap1克隆一个新的image-clone镜像

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

  1. [root@node1 ~]# rbd info image-clone
  2. rbd image 'image-clone':
  3.     size 15360 MB in 3840 objects
  4.     order 22 (4096 kB objects)
  5.     block_name_prefix: rbd_data.d3f53d1b58ba
  6.     format: 2
  7.     features: layering
  8.     flags:
  9.     parent: rbd/image@image-snap1
  10. #克隆镜像很多数据都来自于快照链
  11. #如果希望克隆镜像可以独立工作,我们需要将父镜像的信息合并flattern到子镜像,一旦合并完成,RBD镜像和它的父镜像就不会存在任何关系了。
  12. [root@node1 ~]# rbd flatten image-clone
  13. [root@node1 ~]# rbd info image-clone
  14. rbd image 'image-clone':
  15.     size 15360 MB in 3840 objects
  16.     order 22 (4096 kB objects)
  17.     block_name_prefix: rbd_data.d3f53d1b58ba
  18.     format: 2
  19.     features: layering
  20.     flags:
  21. #注意,父快照信息没了!

步骤四:其他操作

1) 客户端撤销磁盘映射

  1. [root@client ~]# umount /mnt
  2. [root@client ~]# rbd showmapped
  3. id pool image snap device
  4. 0 rbd image - /dev/rbd0
  5. //语法格式:
  6. [root@client ~]# rbd unmap /dev/rbd/{poolname}/{imagename}
  7. [root@client ~]# rbd unmap /dev/rbd/rbd/image-----撤销镜像影射

2)删除快照与镜像

  1. [root@node6 images]# rbd snap ls image------查看image镜像有哪些快照
  2. [root@node1 ~]# rbd snap rm image --snap image-snap----删除快照
  3. [root@node1 ~]# rbd list-----------查看有哪些镜像
  4. [root@node1 ~]# rbd rm image------删除镜像

 

 

4、块存储应用------将ceph集群作为后端存储

  • Ceph创建块存储镜像
  • 客户端安装部署ceph软件
  • 客户端部署虚拟机
  • 客户端创建secret
  • 设置虚拟机配置文件,调用ceph存储

1)创建磁盘镜像。

  1. [root@node1 ~]# rbd create vm1-image --image-feature layering --size 10G-----创建镜像
  2. [r镜像t@node1 ~]# rbd create vm2-image --image-feature layering --size 10G
  3. [root@node1 ~]# rbd list------列出镜像
  4. [root@node1 ~]# rbd info vm1-image
  5. [root@node1 ~]# qemu-img info rbd:rbd/vm1-image
  6. image: rbd:rbd/vm1-image
  7. file format: raw
  8. virtual size: 10G (10737418240 bytes)
  9. disk size: unavailable

2)Ceph认证账户。

Ceph默认开启用户认证,客户端需要账户才可以访问,

默认账户名称为client.admin,key是账户的密钥,

可以使用ceph auth添加新账户(案例我们使用默认账户)。

  1. [root@node1 ~]# cat /etc/ceph/ceph.conf //配置文件
  2. [global]
  3. mon_initial_members = node1, node2, node3
  4. mon_host = 192.168.2.10,192.168.2.20,192.168.2.30
  5. auth_cluster_required = cephx //开启认证
  6. auth_service_required = cephx //开启认证
  7. auth_client_required = cephx //开启认证

 

  1. cat /etc/ceph/ceph.client.admin.keyring
  2. [client.admin]
  3.     key = AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==  

3)部署客户端环境:安装软件包,拷贝配置文件

注意:这里使用真实机当客户端!!!

客户端需要安装ceph-common软件包,拷贝配置文件(否则不知道集群在哪),

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

  1. [root@room9pc01 ~]# yum -y install ceph-common
  2. [root@room9pc01 ~]# scp 192.168.4.11:/etc/ceph/ceph.conf /etc/ceph/
  3. [root@room9pc01 ~]# scp 192.168.4.11:/etc/ceph/ceph.client.admin.keyring \
  4. /etc/ceph/

4)创建KVM虚拟机取名为vm1,只是用来获取xml文件,获取后就可以删掉该创建的虚拟机了

virsh dumpxml vm1 >  /etc/libvirt/qemu/

virsh undefine vm1

5)虚拟机使用CEPH存储,需要认证。方式是虚拟机先生成secret,再将secret与CEPH账户映射

编写账户信息文件(真实机操作)

  1. [root@room9pc01 ~]# vim secret.xml //新建临时文件,内容如下---------为下步生成uuid做准备
  2. client.admin secret
  3. #使用XML配置文件创建secret
  4. [root@room9pc01 ~]# virsh secret-define --file secret.xml--------生成随机的UUID,这个UUID对应的有账户信息
  5. 733f0fd1-e3d6-4c25-a69f-6681fc19802b
  6. [root@room9pc01 ~]# virsh secret-list
     UUID                                  用量
    --------------------------------------------------------------------------------
    733f0fd1-e3d6-4c25-a69f-6681fc19802b  ceph client.admin secret

查看管理员密钥(真实机操作)

  1. [root@room9pc01 ~]# ceph auth get-key client.admin
  2. //获取client.admin的key,或者直接查看密钥文件
  3. [root@room9pc01 ~]# cat /etc/ceph/ceph.client.admin.keyring

再将secret与CEPH账户映射(真实机操作)

  1. [root@room9pc01] virsh secret-set-value \
  2. --secret 733f0fd1-e3d6-4c25-a69f-6681fc19802b \-------这里secret后面是之前创建的secret的UUID
  3. --base64 AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg--------base64后面是client.admin账户的密码
  4. //现在secret中既有账户信息又有密钥信息

6)修改之前生成导出的虚拟机的XML配置文件。

每个虚拟机都会有一个XML配置文件,包括:

虚拟机的名称、内存、CPU、磁盘、网卡等信息

  1. [root@room9pc01 ~]# vim /etc/libvirt/qemu/vm1.xml
  2. //修改前内容如下

不推荐直接使用vim修改配置文件,推荐使用virsh edit修改配置文件,效果如下:

  1. [root@room9pc01] virsh edit vm1 //vm1为虚拟机名称
  2. 'network' device='disk'>
  3. 'raw’/>
  4. --------这里的UUID就是secret的UUID,有client.admin账户和密钥信息
  5. ---------这里说明使用账户连接哪台ceph主机和端口,访问哪个池和镜像
  6. -------这里说明将获取的镜像设置为虚拟机的vda磁盘

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软件包

  1. [root@node4 ~]# yum -y install ceph-mds

登陆node1部署节点操作

  1. [root@node1 ~]# cd /root/ceph-cluster
  2. //该目录,是最早部署ceph集群时,创建的目录
  3. [root@node1 ceph-cluster]# ceph-deploy mds create node4
  4. //给nod4拷贝配置文件,启动mds服务

同步配置文件和key

  1. [root@node1 ceph-cluster]# ceph-deploy admin node4

3)创建存储池

  1. [root@fdfs_storage1 FastDFS]# mkdir -pv /data/fastdfs

4)修改配置文件。

  1. [root@node4 ~]# ceph osd pool create cephfs_data 128
  2. //创建存储池,对应128个PG
  3.  
  4. [root@node4 ~]# ceph osd pool create cephfs_metadata 128
  5. //创建存储池,对应128个PG

5)创建Ceph文件系统

  1. [root@node4 ~]# ceph mds stat -------------查看mds状态
  2. e2:, 1 up:standby
  3.  
  4. [root@node4 ~]# ceph fs new myfs1 cephfs_metadata cephfs_data
  5. new fs with metadata pool 2 and data pool 1
  6. //注意,先写medadata池,再写data池
  7. //默认,只能创建1个文件系统,多余的会报错
  8.  
  9. [root@node4 ~]# ceph fs ls
  10. name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  11.  
  12. [root@node4 ~]# ceph mds stat
  13. e4: 1/1/1 up {0=node4=up:creating}

6)客户端挂载

  1. [root@client ~]# mount -t ceph 192.168.4.11:6789:/ /mnt/cephfs/ \
  2. -o name=admin,secret=AQBTsdRapUxBKRAANXtteNUyoEmQHveb75bISg==   ---------------这里随便找一台机器都可以当作客户端,只要该机器能访问192.168.4.11的6789端口就行
  3. //注意:文件系统类型为ceph
  4. //192.168.4.11为MON节点的IP(不是MDS节点)
  5. //admin是用户名,secret是密钥
  6. //密钥可以在/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软件包

  1. [root@node1 ~]# ceph-deploy install --rgw node5

同步配置文件与密钥到node5

  1. [root@node1 ~]# cd /root/ceph-cluster
  2. [root@node1 ~]# ceph-deploy admin node5

3)新建网关实例

启动一个rgw服务

  1. [root@node1 ~]# ceph-deploy rgw create node5

登陆node5验证服务是否启动

  1. [root@node5 ~]# ps aux |grep radosgw
  2. 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
  3. [root@node5 ~]# systemctl status ceph-radosgw@\*

4)修改服务端口

登陆node5,RGW默认服务端口为7480,修改为8000或80更方便客户端记忆和使用

  1. [root@node5 ~]# vim /etc/ceph/ceph.conf
  2. [client.rgw.node5]
  3. host = node5--------node5为主机名
  4. rgw_frontends = "civetweb port=80"---------------civetweb是RGW内置的一个web服务
  5. systemctl stop httpd--------必须将httpd的80端口关掉,负责端口冲突
  6. systemctl restart ceph-radosgw\*

步骤二:客户端测试

1)curl测试

  1. [root@client ~]# curl 192.168.4.15
  2. anonymous

2)使用第三方软件访问

登陆node5(RGW)创建账户

  1. [root@node5 ~]# radosgw-admin user create \
  2. --uid="testuser" --display-name="First User"--------创建
  3. … …
  4. "keys": [
  5. {
  6. "user": "testuser",
  7. "access_key": "5E42OEGB1M95Y49IBG7B",
  8. "secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
  9. }
  10. ],
  11. ... ...
  12. #
  13. [root@node5 ~]# radosgw-admin user info --uid=testuser-------查看
  14. //testuser为用户,key是账户访问密钥

3)客户端安装软件

  1. [root@client ~]# yum install s3cmd-2.0.1-1.el7.noarch.rpm

修改软件配置

  1. [root@client ~]# s3cmd --configure
  2. Access Key: 5E42OEGB1M95Y49IBG7B
  3. Secret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6
  4. Default Region [US]:---------注意这里不要修改,负责后面创建目录会有问题
  5. S3 Endpoint [s3.amazonaws.com]: 192.168.4.15
  6. [%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15
  7. Use HTTPS protocol [Yes]: No
  8. Test access with supplied credentials? [Y/n] Y
  9. Save settings? [y/N] y
  10. //注意,其他提示都默认回车

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

  1. [root@client ~]# s3cmd ls
  2. [root@client ~]# s3cmd mb s3://my_bucket------mb是make bucket的意思,类似于创建文件夹
  3. Bucket 's3://my_bucket/' created
  4.  
  5. [root@client ~]# s3cmd ls
  6. 2018-05-09 08:14 s3://my_bucket
  7. [root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/------put上传
  8. [root@client ~]# s3cmd ls
  9. 2018-05-09 08:14 s3://my_bucket
  10. [root@client ~]# s3cmd ls s3://my_bucket
  11. DIR s3://my_bucket/log/
  12. [root@client ~]# s3cmd ls s3://my_bucket/log/
  13. 2018-05-09 08:19 309034 s3://my_bucket/log/messages

测试下载功能

  1. [root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp/------get下载

测试删除功能

  1. [root@client ~]# s3cmd del s3://my_bucket/log/messages----del删除文件
  2. [root@client ~]# s3cmd rb s3://my_bucket/log/-------------rb删除文件夹

 

 

你可能感兴趣的:(集群)