ceph 15.2.17的搭建
1、环境规划
机器 | ip | 角色 | 资源 | 备注 |
---|---|---|---|---|
c7t1 | 192.168.3.126 | mgr mon osd rgw | 4t4g | v |
c7t2 | 192.168.3.90 | mon osd | 4t4g | v |
c7t3 | 192.168.3.91 | mon osd mds | 4t4g | v |
2、角色说明
admin:Manager节点Ceph Manager守护进程 ( ceph-mgr) 负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。高可用性通常需要至少两个管理器。
osd:ceph osd(ceph-osd)存储数据、处理数据复制、恢复、重新平衡,并通过检查其他OSD守护进程的心跳,向ceph监视器和管理器提供一些监控信息。冗余和高可用性至少需要3个osd
mon:Ceph Monitor(cehp-mon)维护肌肉群状态的映射,包含监视器映射、管理器映射、osd映射、mds映射和crush映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。监视器还负责管理守护进程和客户端之间的身份验证。冗余和高可用性,通常炫耀至少三个监视器。
MDS:Ceph的元数据服务器(MDS ceph-mds) 代表Ceph 文件系统存储元数据(即 Ceph 块设备和 Ceph 对象存储不使用 MDS)。Ceph 元数据服务器允许 POSIX 文件系统用户执行基本命令(如 ls、find等),而不会给 Ceph 存储集群带来巨大负担。
RGW:对象存储网关。主要为访问ceph的软件提供API接口。
3、安装步骤
首先
按照2023年4月27日初步测试结果来看 CEPH必须使用yum进行安装,同时要有一台能够连接外网的机器(admin机器需要通过epel-release源安装大量依赖),OSD机器可以不需要外网环境但是必须使用yum安装。
repotrack ceph-deploy -p cephDeps/ceph/ #同步指定包以及依赖到本地目录
其次
OSD机器虽然可以不需要外网环境 但是需要通过其他服务器搭建的镜像仓库完成部署安装。使用:
creatrepo /root/cephDeps/ceph/ #创建repo仓库
createrepo --update /root/cephDeps/ceph/ #更新yum源数据
yum clean all #清理本地yum元数据缓存
yum makecache #更新本地yum元数据缓存
特别注明: 每个用户的yum缓存不共享,所以执行sudo yum clean all
和执行yum clean all
在非root用户上结果不一样
也可以使用ceph-deploy实现
# 集群安装 不太推荐使用这种方式安装ceph最好在每个节点单独安装
ceph-deploy install c7t1 c7t2 c7t3
#每个节点单独安装
sudo yum -y install ceph ceph-radosgw htop sysstat iftop iotop ntp ntpdate
#创建mon节点
ceph-deploy new c7t1 c7t2 c7t3
#放开防火墙
sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent
sudo firewall-cmd --zone=public --add-service=ceph --permanent
sudo firewall-cmd --zone=public --add-port=7480/tcp --permanent
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reload
#按照当前目录配置文件部署mon节点
ceph-deploy --overwrite-conf mon create-initial
#分发密钥到集群
ceph-deploy admin c7t1 c7t2 c7t3
#创建mgr服务器
ceph-deploy mgr create c7t1
#创建osd
ceph-deploy osd create --data /dev/vdb c7t1
ceph-deploy osd create --data /dev/vdb c7t2
ceph-deploy osd create --data /dev/vdb c7t3
状态验证
[root@c7t1 ~]# ceph mgr module ls
{
"enabled_modules": [
"balancer",
"dashboard",
"restful",
"status"
],
"disabled_modules": [
"influx",
"localpool",
"prometheus",
"selftest",
"telemetry",
"zabbix"
]
}
[root@c7t1 ~]# ceph health
HEALTH_OK
[root@c7t1 ~]# ceph -s
cluster:
id: 7f266991-c539-44d8-bef3-57ca9049d8d3
health: HEALTH_OK
services:
mon: 3 daemons, quorum c7t2,c7t3,c7t1
mgr: c7t1(active)
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 87.0GiB / 90.0GiB avail
pgs:
[root@c7t1 ~]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
90.0GiB 87.0GiB 3.01GiB 3.34
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
增加dashboard
# 修改/etc/ceph/ceph.conf,增加如下配置。
[cephfsd@ceph-admin ceph]$ vim /etc/ceph/ceph.conf
[mgr]
mgr modules = dashboard
推送配置文件到其他节点
ceph-deploy --overwrite-conf config push c7t2 c7t3 c7t1
确认当前模块配置情况
[root@c7t1 ~]# ceph mgr dump
{
"epoch": 381,
"active_gid": 4156,
"active_name": "c7t1",
"active_addr": "192.168.3.126:6804/4338",
"available": true,
"standbys": [],
"modules": [
"balancer",
"dashboard",
"restful",
"status"
],
"available_modules": [
"balancer",
"dashboard",
"influx",
"localpool",
"prometheus",
"restful",
"selftest",
"status",
"telemetry",
"zabbix"
],
"services": {
"dashboard": "http://c7t1:7000/"
}
}
使dashboard可用
ceph mgr module enable dashboard
创建块存储
默认情况下,使用的pool是3副本配置
sudo ceph osd pool create XXX 64 64
sudo rbd pool init XXX
创建对象存储
对象存储需要使用到radosgw,即对象存储网关,所以需要先起一个网关,在起网关的时候,它会检查它需要的存储池是否存在,不存在则自动创建,创建网关在deploy节点上进行
ceph-deploy rgw create c7t1 #创建
sudo ceph osd pool ls #查看目录
创建cephfs文件存储
#创建MDS Daemon
ceph-deploy mds create <…>
#####
ceph osd pool create scpirt-metadata 32 32 #源元数据存储
ceph osd pool create scpirt 32 32 #实际数据存储
ceph fs new scpirtfs scpirt-metadata scpirt ## 创建cephfs
#查看CephFS
ceph fs ls
name: tstfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
#删除CephFS
ceph fs rm <fs-name> <fs-name> --yes-i-really-mean-it
运行状态监测
# ceph mds stat
e8: tstfs-1/1/1 up tstfs2-0/0/1 up {[tstfs:0]=mds-daemon-1=up:active}
ceph使用S3-cmd
1、alluxio需要使用S3接口连接ceph集群
2、ceph的S3接口是基于对象存储的bucket的,
3、使用命令行创建bucket需要通过s3-cmd
配置s3-cmd
1、创建一个radowsgw用户
sudo radosgw-admin user create --uid=admin --display-name=admin --access_key=admin --secret=123456
2、赋予用户权限
radosgw-admin caps add --uid=admin --caps="users=read, write"
3、安装S3-cmd
yum install -y python-pip
pip install s3-cmd
4、配置s3-cmd
s3cmd --configure
#主要修改以下参数
access_key = admin
secret_key = 123456
cloudfront_host = c7t1:7480
host_base = c7t1:7480
host_bucket = c7t1:7480/%(bucket)
use_https = False
website_endpoint = http://c7t1:7480/
5、使用s3-cmd创建桶
s3cmd ls #输出指定目录
s3cmd mb s3://bucket1 #创建
s3cmd info s3://bucket1 #查看bucket 信息
s3cmd put XXX s3://bucket1 #上传文件到s3
6、检查ceph pool
1、查询所有pools
rados lspools #
#-----
.rgw.root
default.rgw.control
default.rgw.meta
default.rgw.log
rbd
default.rgw.buckets.index #每创建一个bucket,里面就会就会新增一个.dir文件
default.rgw.buckets.data #实际文件
default.rgw.buckets.non-ec
2、查询bucket文件存储
s3cmd ls s3://bucket1 #bucket文件目录
rados ls --pool=default.rgw.buckets.data #直接查看pools中文件情况
压测
1、使用ceph原生命令对桶进行压测
sudo rados bench -p default.rgw.buckets.index 10 write --no-cleanup #写能力
sudo rados bench -p default.rgw.buckets.index 10 seq #顺序读
sudo rados bench -p default.rgw.buckets.index 10 rand #随机读
压测结论,ceph从结果来看,对于文件处理性能没有明显提升,也没有明显的降速属于正常水平。
可能的问题处理
1、mount时间超长提示mount error 5 = Input/output error
可能是为OSD离线导致异常,需要先执行ceph -s
或者ceph health detail
查看详情先确认集群状态,再执行ceph osd status
确认OSD节点的运行情况。
2、挂载失败报错mount: wrong fs type, bad option, bad superblock on 192.168.3.91:6789:/
缺少ceph-common包 ,使用yum进行安装