Ceph对象存储单机部署

Ceph对象存储单机部署

一、单节点部署规划

主机名IP地址操作系统磁盘空间角色
services-ceph192.168.11.21CentOS Linux release 7.6.1810 (Core)系统盘:50G + 数据盘:200Gceph-deploy、monitor、mgr、rgw、mds、osd

二、角色说明

组件名称组件功能
MonitorsCeph Monitor (Ceph -mon)负责维护集群状态的映射,包括Monitor映射、manager映射、OSD映射、MDS映射和CRUSH映射。 这些映射是Ceph守护进程相互协调所需的关键集群状态。 监视器还负责管理守护进程和客户端之间的身份验证。 通常至少需要三个监视器来实现冗余和高可用性。
ManagersCeph Manager守护进程(Ceph -mgr)负责跟踪Ceph集群的运行时指标和当前状态,包括存储利用率、当前性能指标和系统负载。 Ceph Manager守护进程也托管基于python的模块来管理和公开Ceph集群信息,包括基于web的Ceph Dashboard和REST API。 通常需要至少两个管理器来实现高可用性。
OSDsCeph OSD (object storage daemon, Ceph - OSD)存储数据,处理数据复制,恢复,平衡,并通过检查其他Ceph OSD的心跳,为Ceph monitor和manager提供一些监控信息。 为了实现冗余和高可用性,通常需要至少3块Ceph ssd硬盘。
MDSsCeph元数据服务器(MDS, Ceph - MDS)代表Ceph文件系统(Ceph Block Devices和Ceph Object Storage不使用MDS)存储元数据。 Ceph元数据服务器允许POSIX文件系统用户执行基本命令(如ls,查找等),而不会给Ceph存储集群带来巨大的负担。
RGWCeph对象网关,是一种服务,使客户端能够利用标准对象存储API来访问Ceph集群
Ceph-DeployCeph集群部署节点,负责集群整体部署管理,各组件部署安装,也可以复用ceph集群中的节点作为部署节点。

三、版本安装

软件包版本号
cephceph-14.2.22-0.el7.x86_64
ceph-mgr-14.2.22-0.el7.x86_64
ceph-mon-14.2.22-0.el7.x86_64
ceph-osd-14.2.22-0.el7.x86_64
ceph-mds-14.2.22-0.el7.x86_64
ceph-radosgw-14.2.22-0.el7.x86_64
ceph-deployceph-deploy-2.0.1-0.noarch

二、部署步骤

1.配置主机名

代码如下(示例):

# 设置 hostname
hostnamectl set-hostname services-ceph
 
# 配置 hosts 解析,IP地址根据实际调整
cat /etc/hosts
192.168.11.21 services-ceph
 
# 重启下
reboot

2.防火樯设置

代码如下(示例):

# 关闭防火樯
systemctl disable firewalld 
systemctl stop firewalld 

# 关闭 selinux 
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 

3.SSH配置免密

代码如下(示例):

# 给ceph单节点配置免密,一台机器也要
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 权限设置 644
chmod 644 ~/.ssh/authorized_keys

4.配置YUM源

代码如下(示例):

# 备份现有的repo源
cp /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.bak

# CentOS基础源
curl -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

# 指定系统版本
cat /etc/yum.repos.d/ceph.repo 

[ceph]
name=Ceph packages for$basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
priority=1
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
 
[ceph-noarch]
name=Ceph noarchpackages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
priority=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
 
[ceph-source]
name=Ceph sourcepackages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

         
# 刷新 yum 
yum clean all 
yum makecache

# 安装epel源
yum install -y epel-release

5.安装ceph-deploy软件包

代码如下(示例):

# yum方式安装
yum install -y ceph-deploy

# 检验版本
ceph-deploy --version 

# 如果安装的不是2.0版本,可以直接rpm安装 
yum install http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm

6.创建ceph集群

创建ceph集群,是通过ceph-deploy命令,并创建配置文件及key文件,这里我们使用单节点部署,还需要将集群的副本数量设置为1,创建完后修改ceph.conf文件。

代码如下(示例):

# 创建一个目录保存ceph配置及密钥
mkdir -p /data/services/ceph 

# 创建ceph cluster集群
cd /data/services/ceph 
ceph-deploy new services-ceph

# 检查生成的文件
[root@services-ceph ceph]# ls -l 
total 12
-rw-r--r-- 1 root root  204 Apr  2 22:33 ceph.conf
-rw-r--r-- 1 root root 3021 Apr  2 22:33 ceph-deploy-ceph.log
-rw------- 1 root root   73 Apr  2 22:33 ceph.mon.keyring


# 因为是单节点部署,还需要将集群的副本数量设置为1,修改ceph.conf文件。
[root@services-ceph ceph]# echo "osd pool default size = 1" >>  ceph.conf
[root@services-ceph ceph]# echo "osd pool default min size = 1" >>  ceph.conf

# 检查文件
[root@services-ceph ceph]# cat ceph.conf
[global]
fsid = 098f5601-a1f1-4eb4-a150-8db0090bc9d7
mon_initial_members = services-ceph
mon_host = 192.168.11.21
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

osd pool default size = 1
osd pool default min size = 1

7.安装 ceph 软件

代码如下(示例):

# 安装L版本的软件
yum install -y ceph ceph-radosgw

# 检查安装的版本号
[root@services-ceph yum.repos.d]# rpm -qa | grep ceph
libcephfs2-14.2.22-0.el7.x86_64
ceph-radosgw-14.2.22-0.el7.x86_64
python-ceph-argparse-14.2.22-0.el7.x86_64
ceph-selinux-14.2.22-0.el7.x86_64
ceph-osd-14.2.22-0.el7.x86_64
ceph-deploy-2.0.1-0.noarch
python-cephfs-14.2.22-0.el7.x86_64
ceph-base-14.2.22-0.el7.x86_64
ceph-mgr-14.2.22-0.el7.x86_64
ceph-common-14.2.22-0.el7.x86_64
ceph-mon-14.2.22-0.el7.x86_64
ceph-14.2.22-0.el7.x86_64
ceph-mds-14.2.22-0.el7.x86_64

8.初始化 mon

代码如下(示例):

## 初始化 monitor
ceph-deploy mon create-initial

## 把配置文件和密钥拷贝到管理节点和Ceph节点
ceph-deploy admin services-ceph

## 确保对秘钥环有权限
chmod +r /etc/ceph/ceph.client.admin.keyring

cp /data/services/ceph/ceph*  /etc/ceph/
chmod +r /etc/ceph/ceph* 

# 启动monitor节点后,检查ceph集群
[root@services-ceph ceph]# ceph -s
  cluster:
    id:     098f5601-a1f1-4eb4-a150-8db0090bc9d7
    health: HEALTH_WARN
            mon is allowing insecure global_id reclaim

  services:
    mon: 1 daemons, quorum services-ceph (age 4m)
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

9.部署mgr

代码如下(示例):

## 部署mgr组件
ceph-deploy mgr create services-ceph

## 查看mgr状态为active
[root@services-ceph ceph]# ceph -s
  cluster:
    id:     098f5601-a1f1-4eb4-a150-8db0090bc9d7
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 1
            mon is allowing insecure global_id reclaim

  services:
    mon: 1 daemons, quorum services-ceph (age 10m)
    mgr: services-ceph(active, since 103s)
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

10.部署osd数据节点

代码如下(示例):

## 安装lvm2
yum install -y lvm2

# 创建pv
pvcreate /dev/sdb

# 创建 vg 
vgcreate ceph-pool /dev/sdb

# 创建lv,单个osd节点 
lvcreate -n osd0 -l 100%FREE ceph-pool

# 使用xfs格式化
mkfs.xfs  /dev/ceph-pool/osd0

# 添加osd节点
ceph-deploy osd create --data /dev/ceph-pool/osd0 services-ceph

# 查看集群状态 
[root@services-ceph ceph]# ceph -s
  cluster:
    id:     098f5601-a1f1-4eb4-a150-8db0090bc9d7
    health: HEALTH_WARN
            mon is allowing insecure global_id reclaim

  services:
    mon: 1 daemons, quorum services-ceph (age 71m)
    mgr: services-ceph(active, since 63m)
    osd: 1 osds: 1 up (since 5s), 1 in (since 5s)

  task status:

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   1.0 GiB used, 199 GiB / 200 GiB avail
    pgs:

# 通过ceph osd tree 查看osd的列表情况
[root@services-ceph ceph]# ceph osd tree
ID CLASS WEIGHT  TYPE NAME              STATUS REWEIGHT PRI-AFF
-1       0.00870 root default
-3       0.00870     host services-ceph
 0   hdd 0.00290         osd.0              up  1.00000 1.00000

11.部署rgw实例

代码如下(示例):

## 部署 rgw 组件
ceph-deploy rgw create services-ceph

##  验证rgb,浏览器访问 http://192.168.11.21:7480/,输出以下内容

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

12.部署mds实例

代码如下(示例):

## 部署 mds 组件
ceph-deploy mds create services-ceph

##  查看 mds 状态 
[root@services-ceph ceph]# ceph mds stat
 1 up:standby

13.创建ceph的账号

这里创建管理员账号后,就可以看到access_key和secret_key了,访问ceph需要用到。

代码如下(示例):

[root@services-ceph ceph]# radosgw-admin user create --uid=admin --display-name=admin --admin
{
    "user_id": "admin",
    "display_name": "admin",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "admin",
            "access_key": "******",
            "secret_key": "******"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "admin": "true",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

14.客户端工具

使用s3cmd工具管理ceph桶

代码如下(示例):

## 安装s3cmd,执行如下命令:
yum install -y s3cmd

## 配置文件,把admin的密钥配置如下
[root@services-ceph ~]# cat .s3cfg
[default]
access_key = ******
secret_key = ******
host_base = 192.168.11.21:7480
host_bucket = 192.168.11.21:7480/%(bucket)
use_https = False

## 执行创建桶操作,如下:
s3cmd mb s3://test

# 查看桶是否创建成功
[root@services-ceph ~]# s3cmd ls
2022-04-02 17:46  s3://test

总结

以上是Ceph单机部署,组件都是单节点,仅适合开发测试或POC场景,不能用于生产环境部署。

Ceph将数据作为对象存储在逻辑存储池中。 使用CRUSH算法,Ceph计算哪个放置组应该包含对象,并进一步计算哪个Ceph OSD守护进程应该存储放置组。 CRUSH算法使Ceph存储集群能够动态伸缩、平衡和恢复。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
ceph分布式存储平台是一种开源的、高性能的分布式存储系统。它可以提供高可靠性、高扩展性、高性能的存储服务。ceph部署需要以下几个步骤: 1、部署节点准备:ceph部署需要至少3台服务器作为存储节点,还需要1台管理节点。在准备部署节点时,需要确认节点的硬件配置是否符合要求,并且需要安装必要的软件和工具。 2、创建ceph集群:在管理节点上创建ceph集群,并配置好各个存储节点的IP地址和数据盘,以及存储池等相关参数。 3、安装ceph组件:在每个存储节点上分别安装ceph组件,如ceph-osd(对象存储守护进程)、ceph-mon(监视器守护进程)和ceph-mds(元数据服务器)等。 4、初始化ceph集群:在管理节点上使用ceph-deploy等工具初始化ceph集群,并且设置各个节点的角色和权限等参数。 5、扩展ceph集群:可以在ceph集群上动态添加新的存储节点,以增加存储容量和性能。 6、测试ceph集群:需要对ceph集群进行测试,以确保其能够正常运行和提供高可用性、高性能的存储服务。 在部署ceph分布式存储平台时,需要注意以下几点: 1、保证各个节点之间的网络连接稳定,以确保数据的传输和同步正常。 2、在存储节点和管理节点上及时进行升级和补丁更新,以确保系统的安全和稳定。 3、对于不同类型的数据,需要根据其特性来选择合适的存储池和存储策略,以提高数据访问效率和安全性。 综上所述,ceph分布式存储平台的部署需要仔细的计划和准备,并且需要根据实际应用需求灵活调整,以获得最佳的存储性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值