ceph部署

准备

hosts

172.16.1.161 ceph-mon1
172.16.1.162 ceph-mon2
172.16.1.163 ceph-mon3
172.16.1.164 ceph-osd4

Public Network 10.0.0.161-164 对外提供服务
Cluster Network 172.16.1.161-164 ceph内部通信

四台虚拟机各准备2块200G的硬盘

yum源
vim /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
enabled=1
gpgcheck=0

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
enabled=1
gpgcheck=0

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS/
enabled=1
gpgcheck=0

本文档使用的是ceph-mon1节点作为管理节点

在所有节点上部署基础软件包

yum install ceph ceph-radosgw -y

部署管理节点

各节点ceph用户添加sudo权限,在所有节点执行

mkdir /home/ceph -p
cp /etc/skel/.bash* /home/ceph/
chown -R ceph.ceph /home/ceph/
usermod -s /bin/bash -d /home/ceph ceph
echo '123456' | passwd --stdin ceph 
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph

在管理节点上执行,以ceph用户的身份来做各节点ssh免密登录

su - ceph
ssh-keygen -t rsa -P ''
ssh-copy-id ceph@ceph-mon1
ssh-copy-id ceph@ceph-mon2	
ssh-copy-id ceph@ceph-mon3
ssh-copy-id ceph@ceph-osd4

在管理节点上执行,安装必要的工具

yum install ceph-deploy  python-setuptools python2-subprocess32 ceph-common 

管理节点以ceph用户身份在家目录建立ceph-cluster目录

su - ceph
mkdir /home/ceph/ceph-cluster

切换至ceph-cluster目录

cd /home/ceph/ceph-cluster

部署Mon节点

在管理节点以ceph用户运行

su - ceph
cd /home/ceph/ceph-cluster
ceph-deploy new ceph-mon1 --cluster-network 172.16.1.0/24  --public-network 10.0.0.0/24
#mon节点,可以写第一个,也可以写多个

所有节点mon、mgr、osd都要安装

yum install ceph ceph-radosgw -y

在管理节点以ceph用户运行(此步无需执行)

cd /home/ceph/ceph-cluster
ceph-deploy install --no-adjust-repos ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4

生成keyring文件

在管理节点以ceph用户运行

ceph-deploy mon create-initial

将配置和client.admin秘钥环推送到远程主机

在管理节点以ceph用户运行

ceph-deploy admin ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4
#每次更改ceph的配置文件,都可以用这个命令推送到所有节点上

在所有节点以root的身份运行

setfacl -m u:ceph:r /etc/ceph/ceph.client.admin.keyring 
#ceph.client.admin.keyring文件是 ceph命令行 所需要使用的keyring文件
#不管哪个节点,只要需要使用cephadm用户执行命令行工具,这个文件就必须要让cephadm用户拥有访问权限,就必须执行这一步
#这一步如果不做,ceph命令是无法在非sudo环境执行的

Mgr

在管理节点执行

su - ceph
cd ceph-cluster
ceph-deploy mgr create ceph-mon1

执行完成之后,在管理节点查看集群的健康状态

ceph -s

OSD

在管理节点上以ceph用户执行,列出osd节点上的所有可用磁盘

ceph-deploy disk list ceph-mon1 ceph-mon2 ceph-mon3 ceph-osd4
#要以ceph用户在~/ceph-cluster/目录下执行

清空osd节点上用来作为osd设备的磁盘(新添加磁盘无需操作

ceph-deploy disk zap ceph-mon1 /dev/sdb /dev/sdc
ceph-deploy disk zap ceph-mon2 /dev/sdb /dev/sdc
ceph-deploy disk zap ceph-mon3 /dev/sdb /dev/sdc
ceph-deploy disk zap ceph-osd4 /dev/sdb /dev/sdc
#注意,这里其实是在执行dd命令,执行错了就麻烦了,全盘清空

创建OSD

ceph-deploy osd create ceph-mon1 --data /dev/sdb 
ceph-deploy osd create ceph-mon2 --data /dev/sdb
ceph-deploy osd create ceph-mon3 --data /dev/sdb
ceph-deploy osd create ceph-osd4 --data /dev/sdb
ceph-deploy osd create ceph-mon1 --data /dev/sdc
ceph-deploy osd create ceph-mon2 --data /dev/sdc
ceph-deploy osd create ceph-mon3 --data /dev/sdc
ceph-deploy osd create ceph-osd4 --data /dev/sdc

查看集群状态

ceph -s
#可以使用了

测试使用

创建一个存储池,要想使用ceph的存储功能,必须先创建存储池

ceph osd pool create mypool 64 64 

列出当前集群所有存储池

 ceph osd pool ls
 rados lspools

上传一个文件

rados put issue /etc/issue --pool=mypool

获取一个文件

rados get issue my_issue -p mypool
#issue是对象的ID
#my_issue是outfile,即输出文件叫啥名字
#-p指定存储池

删除一个文件

rados rm issue -p mypool

列出指定存储池有哪些文件

rados ls --pool=mypool

查看指定文件在Ceph集群内是怎样做映射的

ceph osd map mypool issue
#mypool是存储池的名称
#issue是文件的名称

添加mon节点

su - ceph
cd ceph-cluster
ceph-deploy mon add ceph-mon2
ceph-deploy mon add ceph-mon3

查看mon的quorum状态

ceph quorum_status --format json-pretty

添加mgr节点

mgr是无状态的

ceph-deploy mgr create ceph-mon2
ceph-deploy mgr create ceph-mon3

查看集群状态

ceph -s

添加mds

ceph-deploy mds create ceph-mon2
ceph-deploy mds create ceph-mon3

一个Ceph文件系统需要至少两个RADOS 存储池,一个用于数据、一个用于元数据

ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>

列出当前集群所有存储池

 ceph osd pool ls
 rados lspools

计算pg数量:

集群pg 总数 = (OSD 总数* 100 )/最大副本数
每个pool中pg总数=(OSD总数*100)/ 最大副本数 )/ 池数
pg数需要是2的指数幂
ceph osd pool create cephfs_data 64
ceph osd pool create cephfs_metadata 16
ceph fs new  <fs_name>  <metadata>  <data>
ceph fs new cephfs cephfs_metadata cephfs_data

建好文件系统且 MDS 活跃后,就可以挂载此文件系统了

cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
	key = AQCBiSZfS9mGNhAAd7Z/uby0isSzazLuux75pw==
ss -lntup |grep ceph-mon
tcp    LISTEN     0      128    10.0.0.161:6789                  *:*                   users:(("ceph-mon",pid=25217,fd=21))

挂载

mount -t ceph 10.0.0.161:6789:/ /mnt/dongzhi -o name=admin,secret=AQCBiSZfS9mGNhAAd7Z/uby0isSzazLuux75pw==

附:

删除一个存储池

ceph osd pool rm mypool mypool --yes-i-really-really-mean-it
#要求存储池的名字要写两遍
#后面必须加--yes-i-really-really-mean-it

ceph命令高级玩法

ceph-deploy install --no-adjust-repos 
#装包的时候不更改yum源
#如果不指明这个选项,即便你提前配置了阿里云的yum源,它也会改成ceph官方的那个yum源

ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device --block-wal /path/to/wal-device
#创建OSD时,将OSD的三类数据都分开存放——Object Data Blobs、SST文件、wal文件
#--data选项指定的是Object Data存放的硬盘
#--block-db选项指定的是SST文件
#--block-wal选项指定的是wal文件

ceph-deploy config push ceph-mon1
#把ceph.conf配置文件推送到节点上,如果你不特意指明,推送的其实是/home/cephadm/ceph-cluster目录下的ceph.conf文件

ceph osd pool stats {<poolname>}
#查看一个存储池的状态

osd的四个状态

  • up:启动状态
  • down:停止状态
  • in:在RADOS集群里面
  • out:在RADOS集群外边

mon:提供Ceph集群存储拓扑、数据分布的Cluster Map以及认证,
mgr:提供集群数据的收集、检测等功能。
mds:CephFS文件系统接口的一个守护进程,
rgw:RGW对象存储接口的一个守护进程
osd:Object Stroage Device,用于管理Ceph存储数据所用的硬盘设备的一个守护进程

Ceph的客户端是直接与OSD进行通信的

Ceph的客户端,通过与Mon节点进行通信,获取完整的Cluster Map,然后在客户端本地,用CRUSH算法,根据Cluster Map,以及对应存储池的放置组规则,
进行计算,获得所需数据存储于哪些OSD上面,然后直接与OSD建立通信进行读写

参考文档:
https://blog.csdn.net/wangboyujiayou/article/details/106396665

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wuxingge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值