ceph 15.2.17的搭建

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进行安装