Ceph分布式存储系统

文章详细介绍了Ceph作为一个对象存储系统的概念、架构,强调了管理节点在系统中的作用,并提供了详细的部署步骤,包括环境准备、用户配置、集群初始化、OSD的添加与移除等,以及如何测试数据存取功能。
摘要由CSDN通过智能技术生成

学习目标:

学习内容:

Ceph的概念

  • ceph是一个对象(object)式存储系统,它把每一个待管理的数据流(例如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存取
  • 对象数据的底层存储服务是由多个主机(host)组成的存储集群,该集群也被称为RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠、自动化、分布式对象存储系统
  • librados是RADOS存储集群的API,它支持C、C++、Java、Python、Ruby和php等编程语言
    在这里插入图片描述

Ceph的体系架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

管理节点(Admin Host)

  • ceph的常用管理接口是一组命令行工具程序,例如rados、ceph、rbd等命令,管理员可以从某个特定的MON节点执行管理操作,但也有人更倾向于使用专用的管理节点
  • 事实上,专用的管理节点有助于在ceph相关的程序升级或硬件维护期间为管理员提供一个完整的、独立的并隔离于集群之外的操作环境,从而避免因重启或意外中断而导致维护操作一场中断
    在这里插入图片描述

ceph集群部署

  1. 部署前,各主机需要预设的系统环境如下

     - 借助于NTP服务器设定各节点的时间精确同步
     - 通过DNS完成各节点的主机名称解析,测试环境主机数量较少时也可以使用hosts文件进行
     - 关闭各节点的iptables或firewalld服务,并确保它们被禁止随系统引导过程启动
     - 各节点关闭SELiunx
    
  2. 准备yum仓库配置文件
    在ceph-admin节点上,使用如下命令即可安装生成mimic版本相关的yum仓库配置

    rpm -ivh htttps://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
    
  3. 创建部署ceph的特定用户账号
    部署工具ceph-deploy必须以普通用户登录到ceph集群的各目标节点,且此用户需要拥有无密码使用sudo命令的权限,以便在安装软件及生成配置文件的过程中无需中断配置过程。不过,较新版的ceph-deploy也支持使用 --username 选项提供可无密码使用sudo命令的用户名(包括root,但不建议这样做)
    另外,使用 ceph-deploy --username {username} 命令时,指定的用户需要通过ssh协议自动认证并连接到各ceph节点,以免ceph-deploy命令在配置中途需要用户输入密码
    在各ceph节点创建新用户
    首先需要在各节点以管理员的身份创建一个专用于ceph-deploy的特定用户账号,例如cephadm,并为其设置认证密码

    useradd cephadm && echo 123456 | passwd --stdin cephadm 
    

    而后,确保这些节点上新创建的用户cephadm都有无密码运行sudo命令的权限

    echo "cephadm ALL = (root) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/cephadm
    chmod 0440 /etc/sudoers.d/cephadm
    

    配置用户基于密钥的ssh认证
    在管理节点上生成ssh密钥并将其公钥分发至ceph集群的各节点上

  4. 在管理节点安装ceph-deploy
    ceph存储集群的部署的过程可通过管理节点使用ceph-deploy全程进行,这里首先在管理节点安装ceph-deploy及其依赖的程序包

    yum update && yum install ceph-deploy python-setuptools python2-subprocess32
    

部署RADOS存储集群

  1. 初始化RADOS集群
    首先在管理节点上以cephadm用户创建集群相关的配置文件目录

    mkdir ceph-cluster && cd ceph-cluster
    
  2. 初始化第一个MON节点,准备创建集群
    初始化第一个MON节点的命令格式为 ceph-deploy new {initial-monitor-nodes}

    ceph-deploy new stor01
    
  3. 编辑生成ceph.conf配置文件,在[global]配置段中设置ceph集群面向客户端通信时使用的ip地址所在的网络,即公网地址:public network = 172.20.0.0/16

  4. 安装ceph集群
    ceph-deploy命令能够以远程的方式连入ceph集群各节点完成程序包安装等操作,命令格式如下:

    ceph-deploy install {ceph-node} [{ceph-node}......]
    
    
  5. 配置初始MON节点,并收集所有密钥

    ceph-deploy mon create-initial
    
  6. 把配置文件和admin密钥拷贝到ceph集群各节点,以免得每次执行ceph 命令行时不得不明确指定MON节点的地址ceph.client.admin.keyring

    ceph-deploy admin stor01 stor02 stor03
    而后在ceph集群中需要运行ceph命令的节点上(或所有节点上)以root用户的身份设定用户cephadm能够读取/etc/ceph/ceph.client.admin.keyring文件
    setfacl -m u:cephadm:rw /etc/ceph/ceph.client.admin.keyring
    
  7. 配置Manager节点,启动ceph-mgr进程

    ceph-deploy mgr create stor03
    
  8. 在ceph集群内的节点上以cephadm用户的身份运行如下命令,测试集群的健康状态

    ceph -s
    
  9. 向RADOS集群添加OSD
    列出并擦净磁盘
    ceph-deploy disk 命令可以检查并列出OSD节点上所有可用的磁盘的相关信息

ceph-deploy disk list stor01 stor02 stor03

而后在管理节点上使用ceph-deploy命令擦除计划专用于OSD磁盘上的所有分区表和数据以便用于OSD,命令格式为ceph-deploy disk zap {osd-server-name} {disk-name},需要注意的是此步骤会清除目标设备上的所有数据,下面分别擦净stor01、stor02和stor03上用于OSD的一个磁盘设备vdb

ceph-deploy disk zap stor01 /dev/vdb
ceph-deploy disk zap stor02 /dev/vdb
ceph-deploy disk zap stor03 /dev/vdb
提示:若此设备上此前有数据,则可能需要在相应的节点上以root用户使用`ceph-deploy lvm zap --destory {DEVICE}`命令进行
  1. 添加OSD
    早期版本的ceph-deploy命令支持在将添加OSD的过程分为两个步骤,准备OSD和激活OSD,但新版本中,此操作方式已经被废除,添加OSD的步骤只能由命令ceph-deploy osd create {node} --data {data-disk}一次完成,默认使用的存储引擎为bluestore
    如下命令分别把stor01、stor02和stor03上的设备添加为OSD
ceph-deploy osd create stor01 --data /dev/vdb
ceph-deploy osd create stor02 --data /dev/vdb
ceph-deploy osd create stor03 --data /dev/vdb

而后可以使用ceph-deploy osd list命令列出指定节点上的OSD
事实上,管理员也可以使用ceph命令查看OSD的相关信息

ceph osd stat
ceph osd dump
ceph osd ls
  1. 从RADOS集群中移除OSD的方法
    ceph集群中的一个OSD通常对应于一个设备,且运行于专用的守护进程,在某OSD设备出现故障,或管理员处于管理之需要移除特定的OSD设备时,需要先停止相关的守护进程,而后再进行移除操作,对于luminous及其之后的版本,停止和移除的命令格式分别如下所示
停用设备:ceph osd out {osd-num}
停止进程:sudo systemctl stop ceph-osd@{osd-num}
移除设备:ceph osd purge {id} --yes-i-really-mean-it

若类似如下的OSD的配置信息存在于ceph.conf配置文件中,管理员在删除OSD之后手动将其删除

[osd.1]
	host={hostname}

不过对于luminous之前的版本来说,管理员需要依次手动执行如下步骤删除OSD设备

1、于CRUSH运行图中移除设备:ceph osd crush remove {name}
2、移除OSD的认证key:ceph auth del osd.{osd-num}
3、最后移除OSD设备:ceph osd rm {osd-num}
  1. 测试上传/下载数据对象
    存取数据时,客户端必须首先连接至RADOS集群上某存储池,而后根据对象名称由相关的CRUSH规则完成数据对象寻址,于是为了测试集群的数据存取功能,这里首先创建一个用于测试的存储池mypool,并设定其PG数量为16个
ceph osd pool create  mypool 16

而后即可将测试文件上传至存储池中,列如下面的rados put命令将/etc/issue文件上传至mypool存储池,对象名称依然保留为文件名issue,而rados ls命令则可以列出指定存储池中的数据对象

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

ceph osd map命令可以获取到存储池中数据对象的具体位置信息
在这里插入图片描述

  1. 扩展ceph集群
    在这里插入图片描述

  2. 扩展Manager节点
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值