离线部署三节点 Ceph 分布式存储

离线部署三节点 Ceph 分布式存储

环境准备

确保三台服务器满足以下条件:

  • CentOS 7/8 或 Ubuntu 18.04/20.04(内核版本 ≥ 4.x)
  • 每台服务器至少 2 块磁盘(1 块系统盘 + 1 块 OSD 数据盘)
  • 内网互通,主机名解析正确(如 ceph-node1ceph-node2ceph-node3
  • 防火墙关闭或放行 Ceph 端口(如 6789、6800-7300)
离线安装 Ceph
  1. 下载离线包

    在有网络的机器下载 Ceph RPM/DEB 包及依赖(以 Luminous 版本为例):

    bash 复制代码
    yum install --downloadonly --downloaddir=/ceph-rpm ceph ceph-radosgw ceph-mds
    # 或 Ubuntu
    apt-get download ceph ceph-common ceph-mds

    /ceph-rpm 或下载的 DEB 包拷贝到离线节点。

  2. 安装 Ceph

    在三台节点上手动安装:

    bash 复制代码
    # CentOS
    rpm -ivh /ceph-rpm/*.rpm
    # Ubuntu
    dpkg -i /ceph-offline/*.deb
部署 Ceph 集群
  1. 初始化集群配置

    ceph-node1 上生成初始配置:

    bash 复制代码
    ceph-deploy new ceph-node1 ceph-node2 ceph-node3

    编辑 ceph.conf,添加以下配置:

    ini 复制代码
    [global]
    osd pool default size = 3
    public network = 192.168.1.0/24
    cluster network = 192.168.2.0/24
  2. 安装 Monitor 服务

    bash 复制代码
    ceph-deploy mon create-initial
    ceph-deploy admin ceph-node1 ceph-node2 ceph-node3
  3. 部署 OSD

    为每台节点的磁盘创建 OSD(以 /dev/sdb 为例):

    bash 复制代码
    ceph-deploy osd create --data /dev/sdb ceph-node1
    ceph-deploy osd create --data /dev/sdb ceph-node2
    ceph-deploy osd create --data /dev/sdb ceph-node3

    验证集群状态:

    bash 复制代码
    ceph -s  # 确保所有 OSD 和 PG 状态为 active+clean

在服务中使用 Ceph 分布式存储

Kubernetes 集成
  1. 安装 RBD 插件

    在所有 K8s 节点安装 ceph-common 包。

  2. 创建 StorageClass

    创建 ceph-storageclass.yaml

    yaml 复制代码
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ceph-rbd
    provisioner: kubernetes.io/rbd
    parameters:
      monitors: 192.168.1.1:6789,192.168.1.2:6789,192.168.1.3:6789
      adminId: admin
      adminSecretName: ceph-secret
      pool: k8s
      userId: kube
      userSecretName: ceph-user-secret
OpenStack 集成
  1. 配置 Ceph 后端
    cinder.conf 中添加:

    ini 复制代码
    [DEFAULT]
    enabled_backends = ceph
    [ceph]
    volume_driver = cinder.volume.drivers.rbd.RBDDriver
    rbd_pool = volumes
    rbd_user = cinder
    rbd_secret_uuid = <secret-uuid>
NFS 共享
  1. 部署 CephFS
    创建 CephFS 并挂载到本地:

    bash 复制代码
    ceph osd pool create cephfs_data 128
    ceph osd pool create cephfs_metadata 128
    ceph fs new cephfs cephfs_metadata cephfs_data
    mount -t ceph 192.168.1.1:6789:/ /mnt -o name=admin,secret=<key>
S3 对象存储
  1. 部署 RGW
    在任一节点部署 RADOS 网关:

    bash 复制代码
    ceph-deploy rgw create ceph-node1

    通过 http://ceph-node1:7480 访问 S3 API。


验证与监控

  • 集群状态ceph -s
  • RBD 使用rbd ls -p <pool>
  • CephFS 挂载df -h | grep ceph
  • S3 测试 :使用 s3cmd 或 AWS CLI 上传/下载对象。

通过上述步骤,可完成离线三节点 Ceph 部署并集成到主流服务平台。

相关推荐
zcmodeltech13 小时前
智能矿井沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的感知-传输-控制一体化方案
服务器·数据库·分布式·stm32·单片机·嵌入式硬件
wWYy.14 小时前
基于Raft分布式Kv存储:RPC调用
分布式·rpc
笨蛋不要掉眼泪15 小时前
RabbitMQ消息队列:SpringAMQP
java·分布式·rabbitmq
发量惊人的中年网工15 小时前
SD-WAN如何赋能工业物联网?打造工厂网络远程连接和数据传输新方案
运维·网络·分布式·物联网
段一凡-华北理工大学15 小时前
AI推动工业智能化转型~系列文章05:特征工程:工业 AI 的第一生产力
数据库·人工智能·分布式·搜索引擎·特征工程·高炉智能化
斯普润布特17 小时前
Kafka KRaft 三节点 ARM64 Docker 部署
分布式·kafka
笨蛋不要掉眼泪17 小时前
RabbitMQ消息队列:交换机机制
java·分布式·rabbitmq
zcmodeltech17 小时前
智慧农业沙盘模型物联网控制系统设计:基于STM32与Modbus RTU的传感器-执行器闭环方案
服务器·分布式·stm32·嵌入式硬件·物联网·能源
想你依然心痛17 小时前
HarmonyOS 5.0智慧农业开发实战:构建分布式农业物联网与区块链农产品溯源系统
人工智能·分布式·物联网·区块链·智慧农业·harmonyos·开发实战
珠***格1 天前
分布式光伏电站:四可装置如何实现 “可观、可测、可控、可调”
网络·人工智能·分布式·架构·能源