当前位置:   article > 正文

CEPH分布式存储搭建(对象、块、文件三大存储)_wget -o 对象存储数据

wget -o 对象存储数据

 

 

 

在这里插入图片描述

集群配置信息:

在这里插入图片描述

安装的ceph版本:

ceph version 12.2.12 luminous

配置所需源的地址

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/ceph.repo

手动yum epel 源

开始集群环境配置前建议最好关闭每个节点的selinux 和 firewalld 服务

sed -i “/^SELINUX/s/enforcing/disabled/” /etc/selinux/config

setenforce 0

Ceph集群搭建

切换到root账户下,安装ntpdata时间同步服务器

  1. yum install ntpdate -y
  2. crontab -e
  3. \* * * * * /usr/sbin/ntpdate ntp.aliyun.com &> /dev/null
  4. ntpdate ntp.aliyun.com

检查各个节点的repo源是否正常

#yum repolist

在各个节点上创建用户ceph并赋予权限

  1. useradd ceph
  2. echo '111111' | passwd --stdin ceph
  3. echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
  4. chmod 0440 /etc/sudoers.d/ceph

配置主机名解析,使用/etc/hosts, 例如:

在这里插入图片描述

# 配置sudo不需要tty

#sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers

# 配置免密钥登录 username为你创建的ceph,也就是账户名

  1. #su - ceph
  2. #export username=ceph ssh-keygen
  3. #ssh-copy-id ${username}@node1 ssh-copy-id ${username}node2 ssh-copy-id ${username}@node3

# 主节点安装 ceph-deploy

$sudo yum install -y  ceph-deploy python-pip

#在ceph账户下创建my-cluster目录,用以存放后面收集到的密钥文件和集群配置文件

  1. $mkdir my-cluster
  2. $cd my-cluster

# 部署节点

$ceph-deploy  new  node1 node2 node3

# 编辑 ceph.conf 配置文件

  1. $cat ceph.conf [global]
  2. .....
  3. public network = 10.1.10.0/24
  4. cluster network = 192.168.100.0/24

# 安装 ceph包,替代 ceph-deploy install node1 node2 node3,不过下面的命令需要在每台node上安装 yum

#install -y ceph ceph-radosgw

在管理节点以ceph用户运行

$ cd ceph-cluster

#这个步骤是为了防止在生成keying文件信息时会自动将你的yum源换成更改为aliyun之前的,科学上网也是没用

$ ceph-deploy install --no-adjust-repos node1 node2 node3

# 配置初始 monitor(s)、并收集所有密钥: ceph-deploy mon create-initial

ls -l *.keyring

#这一步完成之后,my-cluster 目录下就会出现收集到的密钥文件

# 把配置信息拷贝到各节点

$ceph-deploy admin node1 node2 node3

#每次更改ceph的配置文件,都可以用这个命令推送到所有节点上,使用—overwrite-conf config push 参数命令时,建议提前备份好配置文件,防止覆盖过程中出现配置文件复原的问题

#配置osd,列出各个节点上所有可以用来作为osd设备的磁盘

$ceph-deploy disk list ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4

#要以ceph用户在~/my-cluster/目录下执行s

#清空osd节点上用来作为osd设备的磁盘,此步骤相当于格式化磁盘

  1. $ceph-deploy disk zap node1 /dev/sdb /dev/sdc
  2. $ceph-deploy disk zap node2 /dev/sdb /dev/sdc
  3. $ceph-deploy disk zap node3 /dev/sdb /dev/sdc

#创建OSD

  1. ceph-deploy osd create node1 --data /dev/sdb
  2. ceph-deploy osd create node2 --data /dev/sdb
  3. ceph-deploy osd create node3 --data /dev/sdb
  4. ceph-deploy osd create node1 --data /dev/sdc
  5. ceph-deploy osd create node2 --data /dev/sdc
  6. ceph-deploy osd create node3 --data /dev/sdc

#此时集群配置基本完成ceph-s 查看状态失败时,可以在各个节点的/etc/ceph/ 目录下查看配置文件所属用户和用户组是否为ceph,如果不是可以在各个节点以root运行

setfacl -m u:cephadm:r /etc/ceph/ceph.client.admin.keyring

#ceph.client.admin.keyring文件是 ceph命令行 所需要使用的keyring文件

#不管哪个节点,只要需要使用ceph用户执行命令行工具,这个文件就必须要让ceph用户拥有访问权限,就必须执行这一步

#查看集群状态,到这一步集群基本上就已经能用了

#ceph –s

#L版之后需要部署mgr,可以启动dashboard UI监控模块,更直观的查看集群状态

$ceph-deploy mgr create node1 node2 node3 

#开启dashboard模块,用于UI查看

$ceph mgr module enable dashabord

#浏览器输入地址后加上默认端口号7000
在这里插入图片描述

ceph集群搭建—块存储

任何普通的Linux主机(RHEL或基于debian的)都可以充当Ceph客户机。客户端通过网络与Ceph存储集群交互以存储或检 索用户数据。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。

# 创建 ceph 块客户端用户名和认证密钥

$ceph auth get-or-create client.rbd mon ‘allow r’ osd ‘allow class-read object_prefix rbd_children, allow rwx pool=rbd’|tee ./ceph.client.rbd.keyring
//scp  ceph.client.rbd.keyring  /etc/ceph/ceph.conf ceph-client:/etc/ceph/ceph.client.rbd.keyring  (应该是copy不过去的,权限问题)

#客户端安装完了以后,再手动把密钥文件拷贝到客户端 也就是在客户端下vim 一个文件并写入密钥

还需要将配置文件ceph.conf也手动copy过去

# 安装ceph客户端

#wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-  deploy/ceph.repo

#客户端安装ceph,需手动把主机生成的client.rbd.keyring 密钥文件复制到客户端

  1. #yum -y install ceph
  2. #cat /etc/ceph/ceph.client.rbd.keyring
  3. #ceph -s --name client.rbd

客户端创建块设备及映射

( 1) 创建块设备

默认创建块设备,会直接创建在 rbd 池中,但使用 deploy 安装后,该rbd池并没有创建

# 创建池和块

  1. $ceph osd lspools # 查看集群存储池
  2. $ceph osd pool create rbd 50 # 50 为 place group 数量,由于我们后续测试,也需要更多的pg,所以这里设置为50

计算PG数
对于一个在生产环境中的 ceph分布式存储 集群中,提前根据需求和配置规划好 PG 是非常重要的,随
着使用时间的积累和 ceph 集群的不断扩展我们跟需要 ceph集群的性能能够不断的跟进
计算 Ceph 集群的PG 数的公式如下:

PG 总数 = (OSD 总数 * 100/ 最大副本数

结果必须舍入到最接近2的N次幂的值。比如如果ceph 集群有160个OSD 且副本数是3,这样根据公
式计算得到的PG 总数是 5333.3,因此舍入到这个值到最近的 2 的N次幂的结果就是8192个PG,再根
据你所创建的存储池规划,所有的 pool 的PG数加起来是不能超过集群中 PG 的总量的。
我们还应该计算 Ceph集群中每一个POOL (池)的PG 总数。计算公式如下 :

POOL PG_NUM | PG 总数 = ((OSD 总数 * 100/ 最大副本数)/ POOL 数

同样使用前面的例子:OSD 总数是160,副本数是3,POOL(池)总数是3。根据上面这个公式,计
算得到每个池的 PG 总数应该是1777.7,最后舍入到2 的N次幂得到结果为每个池 2048 个PG。
平衡每个池中的PG 数和每个 OSD 中的PG 数对于降低 OSD 的方差、避免速度缓慢的恢复进程是相
当重要的。

# 客户端创建 块设备

$rbd  create rbd1  --size  10240  --name client.rbd
  1. $rbd ls --name client.rbd
  2. $rbd ls -p rbd --name client.rbd
  3. $rbd list --name client.rbd

映射块设备

$rbd --image  rbd1 info  --name client.rbd    #此时映射到客户端,应该会报错

layering: 分层支持

exclusive-lock: 排它锁定支持对

object-map: 对象映射支持(需要排它锁定(exclusive-lock))

deep-flatten: 快照平支持(snapshot flatten support)

• fast-diff: 在client-node1上使用krbd(内核rbd)客户机进行快速diff计算(需要对象映射),我们将无法在CentOS内核3.10 上映射块设备映像,因为该内核不支持对象映射(object-map)、深平(deep-flatten)和快速diff(fast-diff)(在内核4.9中引 入了支持)。为了解决这个问题,我们将禁用不支持的特性,有几个选项可以做到这一点:

1)动态禁用

$rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd  

2) 创建RBD镜像时,只启用 分层特性。

$rbd create rbd2 --size 10240  --image-feature layering   --name client.rbd

3)ceph.conf 配置文件中禁用

rbd_default_features = 1

# 我们这里动态禁用

$rbd feature disable rbd1 exclusive-lock object-map fast-diff deep-flatten --name client.rbd

#这一步创建出对应的块映射文件 /dev/rbd0

$rbd map --image rbd1 --name client.rbd  rbd showmapped  --name client.rbd

#创建文件系统并挂载

#fdisk -l /dev/rbd0
  1. #mkfs.xfs /dev/rbd0
  2. #mkdir /mnt/ceph-disk1
  3. #mount /dev/rbd0 /mnt/ceph-disk1 df -h /mnt/ceph-disk1

# 写入数据测试

#dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M

# 做成服务,开机自动挂载

#wget -O /usr/local/bin/rbd-mount https://raw.githubusercontent.com/aishangwei/ceph-demo/master/client/rbd-mount  chmod +x /usr/local/bin/rbd-mount
#wget -O /etc/systemd/system/rbd-mount.service https://raw.githubusercontent.com/aishangwei/ceph-  demo/master/client/rbd-mount.service
  1. #systemctl daemon-reload
  2. #systemctl enable rbd-mount.service
  3. #reboot -f
  4. #df -h

ceph集群搭建是—对象存储

# 安装ceph-radosgw

#yum -y install ceph-radosgw

# 部署

$ceph-deploy rgw create node1 node2 node3

# 配置80端口

  1. #vi /etc/ceph/ceph.conf
  2. ……. [client.rgw.node1]
  3. rgw_frontends = "civetweb port=80"
$sudo  systemctl  restart  ceph-radosgw@rgw.c720183.service

](mailto:ceph-radosgw@rgw.c720183.service)

*#你也可以使用默认的7480端口*

# 创建池

  1. #wget https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/pool
  2. #wget https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/create_pool.sh
  1. $chmod +x create_pool.sh
  2. $./create_pool.sh

# 测试是否能够访问 ceph 集群

  1. $sudo cp
  2. $ceph -s -k /var/lib/ceph/radosgw/ceph-rgw.node3/keyring --name client.rgw.node3

使用 S3 API 访问 Ceph 对象存储

# 创建 radosgw 用户

#radosgw-admin user create --uid=radosgw --display-name=“radosgw"

注意:请把 access_key 和 secret_key 保存下来 ,如果忘记可使用:radosgw-admin user info --uid … -k … --name …

# 安装 s3cmd 客户端

#yum   install  s3cmd -y

# 将会在家目录下创建 .s3cfg 文件 , location 必须使用 US , 不使用 https, s3cmd --configure

# 编辑 .s3cfg 文件,修改 host_base 和 host_bucket

  1. #vi .s3cfg
  2. ……
  3. host_base = node3.hongyuan.com:7480
  4. host_bucket = %(bucket).node3.hongyuan.com:7480
  5. ……

# 创建桶并放入文件 s3cmd mb s3://first-bucket s3cmd ls

#s3cmd put /etc/hosts s3://first-bucket  s3cmd  ls s3://first-bucket

ceph文件存储

# 部署 cephfs

$ceph-deploy  mds  create node2

注意:查看输出,应该能看到执行了哪些命令,以及生成的keyring

  1. $ceph osd pool create cephfs_data 128
  2. $ceph osd pool create cephfs_metadata 64 #用来存放元数据的池
  3. $ceph fs new cephfs cephfs_metadata cephfs_data
  4. $ceph mds stat ceph osd pool ls ceph fs ls

# 创建用户(可选,因为部署时,已经生成)

  1. $ceph auth get-or-create client.cephfs mon ‘allow r’ mds ‘allow r, allow rw path=/’ osd ‘allow rw pool=cephfs_data’ -o ceph.client.cephfs.keyring
  2. $scp ceph.client.cephfs.keyring ceph-client:/etc/ceph/

通过内核驱动和FUSE客户端挂载 Ceph FS

在Linux内核2.6.34和以后的版本中添加了对Ceph的本机支持。

# 创建挂载目录

#mkdir /mnt/cephfs

# 挂载

  1. #ceph auth get-key client.cephfs // 在 ceph fs服务器上执行,获取 key
  2. #mount -t ceph node2:6789:/ /mnt/cephfs -o name=cephfs,secret=…… echo …*secret*> /etc/ceph/cephfskey //key保存起来
  3. #mount -t ceph node2:6789:/ /mnt/cephfs -o name=cephfs,secretfile= /etc/ceph/cephfskey #name 为用户名 cephfs
  4. #echo "c720182:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >>
  5. #/etc/fstab

# 校验

  1. #umount /mnt/cephfs
  2. #mount /mnt/cephfs
  3. #dd if=/dev/zero of=/mnt/cephfs/file1 bs=1M count=1024

Ceph文件系统由LINUX内核本地支持;但是,如果您的主机在较低的内核版本上运行,或者您有任何应用程序依赖项,

您总是可以使用FUSE客户端让Ceph挂载Ceph FS。

# 安装软件包

#rpm -qa |grep -i ceph-fuse  //  yum -y intall ceph-fuse

# 挂载

  1. #ceph-fuse --keyring /etc/ceph/ceph.client.cephfs.keyring --name client.cephfs -m node2:6789 /mnt/cephfs
  2. #echo "id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring /mnt/cephfs fuse.ceph defaults 0 0 _netdev" >> /etc/fstab

注:因为 keyring文件包含了用户名,所以fstab不需要指定用了

将CephFS 导出为NFS服务器

网络文件系统(Network Filesystem, NFS)是最流行的可共享文件系统协议之一,每个基于unix的系统都可以使用它。 不理解Ceph FS类型的基于unix的客户机仍然可以使用NFS访问Ceph文件系统。要做到这一点,我们需要一个NFS服 务器,它可以作为NFS共享重新导出Ceph FS。NFS- ganesha是一个在用户空间中运行的NFS服务器,使用libcephfs支 持Ceph FS文件系统抽象层(FSAL)。

# 安装软件

#yum install -y nfs-utils nfs-ganesha

##如果你的aliyun源中没有nfs-ganesha package 时,需要手动编译nfs-ganesha 源码包

#可参照下面的链接

https://editor.csdn.net/md/?articleId=103496886

# 启动 NFS所需的rpc 服务

#systemctl start rpcbind; systemctl enable rpcbind  systemctl status rpc-statd.service

# 修改配置文件

#vi  /etc/ganesha/ganesha.conf

在这里插入图片描述

#通过提供Ganesha.conf 启动NFS Ganesha守护进程

  1. #ganesha.nfsd -f /etc/ganesha.conf -L /var/log/ganesha.log -N NIV_DEBUG
  2. #showmount -e

# 客户端挂载

  1. #yum install -y nfs-utils mkdir /mnt/cephnfs
  2. #mount -o rw,noatime node2:/ /mnt/cephnfs
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/407954
推荐阅读
相关标签
  

闽ICP备14008679号