当前位置:首页 > 行业动态 > 正文

分布式存储之ceph部署搭建

部署Ceph需安装依赖、配置集群节点、启动服务,结合监控工具

分布式存储之Ceph部署搭建

Ceph是一种开源的分布式存储系统,提供对象存储、块存储和文件存储三种存储接口,具有高可靠性、高扩展性和高性能的特点,本文将详细介绍Ceph集群的部署与搭建流程,涵盖环境准备、节点配置、集群初始化、存储池创建及客户端接入等关键环节。


环境准备

Ceph集群的部署需要至少3个节点(包括Monitor节点、OSD节点和管理节点),建议采用千兆及以上网络环境,以下是硬件与软件要求:

组件 最低要求
节点数量 ≥3个物理节点(可合并角色)
CPU 2核以上(推荐4核+)
内存 ≥4GB(推荐8GB+)
磁盘 ≥100GB机械硬盘或SSD(OSD节点需多块磁盘)
操作系统 CentOS 7.6+/Ubuntu 18.04+/Rocky Linux 8.x(需支持LVM和XFS/EXT4文件系统)
网络 低延迟网络(建议RDMA或10GbE),所有节点需互通
软件依赖 NTP服务、SSH免密登录、Firewalld关闭或开放必要端口(6789/6800-7300)

部署前配置

  1. 系统初始化

    • 关闭防火墙或开放Ceph相关端口(默认集群通信端口6789,对象存储端口为RADOSGW的80/443)。
    • 配置所有节点的主机名解析(/etc/hosts)并启用SSH免密登录。
    • 同步时间:安装chronyntp服务,确保所有节点时间一致。
  2. 创建Ceph用户
    创建一个专用用户(如ceph)用于运行Ceph服务,并设置密码:

    useradd ceph -s /sbin/nologin
    echo "ceph:yourpassword" | chpasswd
  3. 部署工具选择

    • 方式1:ceph-deploy(推荐新手)
      通过脚本自动化部署集群,适合小规模测试。
    • 方式2:手动编译安装
      适合定制化需求,需从源码编译Ceph并手动配置。

Ceph集群部署步骤

以下以ceph-deploy工具为例,假设3个节点分别为mon1mon2mon3(Monitor节点),osd1osd2(OSD节点),client(客户端)。

安装Ceph软件包

在所有节点安装Ceph:

# 添加Ceph仓库(以CentOS为例)
cat > /etc/yum.repos.d/ceph.repo <<EOF
[ceph-noarch]
name=Ceph Repository
baseurl=https://download.ceph.com/rpm-octopus/el7/noarch
enabled=1
gpgcheck=0
EOF
# 安装ceph-deploy和Ceph基础包
yum install -y ceph-deploy python3-argcomplete ceph-common ceph-mds ceph-mgr ceph-osd ceph-mon ceph-radosgw

初始化Monitor节点

  1. 在任意节点(如mon1)生成集群初始化配置:

    ceph-deploy new mon1 mon2 mon3

    此命令会在mon1生成密钥环(ceph.client.admin.keyring)和配置文件(ceph.conf)。

  2. 分发配置到所有Monitor节点:

    ceph-deploy --overwrite-conf mon1 mon2 mon3
  3. 启动Monitor服务:

    ceph-deploy mon create-initial

部署OSD节点

  1. 为每个OSD节点准备磁盘(例如/dev/vdb),创建物理卷并激活LVM:

    pvcreate /dev/vdb
    vgcreate ceph-osd /dev/vdb
    lvcreate -n osd-data -L 10G ceph-osd
    mkfs.xfs -i size=16k /dev/ceph-osd/osd-data
  2. 部署OSD并关联到集群:

    ceph-deploy osd create osd1 --monitors mon1:6789,mon2:6789,mon3:6789

配置Management Node

在管理节点(如client)安装Ceph客户端工具:

yum install -y ceph-common ceph-fuse

通过ceph -s检查集群状态,确认所有OSD和Monitor均显示为active


存储池与权限管理

  1. 创建存储池
    Ceph默认提供三种存储池类型:

    • rbd(块存储)
    • rgw(对象存储,需额外部署Rados Gateway)
    • cephfs(文件存储)

    示例:创建块存储池并设置副本数为3:

    ceph osd pool create rbd_pool 128 128 erasure 3
  2. 分配权限
    为客户端生成密钥并绑定存储池:

    ceph auth get-or-create client.bob mon 'allow r' osd 'allow rwx' -o /etc/ceph/ceph.client.bob.keyring

客户端接入与验证

  1. 挂载块存储(RBD)
    在客户端安装rbd-fuse工具并挂载:

    yum install -y ceph-common ceph-fuse
    mount.rbd -p rbd_pool /dev/rbd/foo /mnt
  2. 验证集群健康状态
    执行以下命令检查集群状态:

    ceph -s # 输出类似:HEALTH_OK
    ceph osd tree # 查看OSD拓扑
    ceph osd pool ls # 列出存储池

高可用性优化

  1. Monitor冗余
    确保至少有3个Monitor节点,避免单点故障,修改quorum_size2

    ceph mon set-quorum-size 2
  2. CRUSH地图调优
    编辑/etc/ceph/ceph.conf,启用crush_location以优化数据分布:

    [global]
    crush_location_bucket = host
  3. 网络优化

    • 开启RDMA支持(需InfiniBand网卡)。
    • 调整tcp_congestion_controldctcbbr

FAQs

Q1: 集群状态显示HEALTH_WARN,部分OSD未激活怎么办?
A1: 检查OSD日志(/var/log/ceph/osd.<id>.log),常见原因包括磁盘损坏、LVM配置错误或网络分区,可通过ceph osd tree查看OSD状态,使用ceph osd repair <osd_id>修复。

Q2: 如何扩展Ceph集群?
A2: 新增节点需执行以下步骤:

  1. 安装Ceph软件包并配置ceph.conf
  2. 使用ceph-deploy osd create <new_osd>添加OSD;
  3. 运行`ceph osd crush reweight-by
0