大数跨境
0
0

Centos7.9 部署ceph集群

Centos7.9 部署ceph集群 SRE云原生
2025-11-27
3


一、环境清单

机器名称
IP
角色
ceph-1
10.132.47.68
用于部署集群、管理集群、ceph-mon、ceph-mgr、ceph-osd
ceph-2
10.132.47.69
ceph-mon、ceph-mgr、ceph-osd
ceph-3
10.132.47.70
ceph-mon、ceph-mgr、ceph-osd

二、环境预处理

1. 配置主机名

# ceph-1 节点执行hostnamectl set-hostname ceph-1# ceph-2 节点执行hostnamectl set-hostname ceph-2# ceph-3 节点执行hostnamectl set-hostname ceph-3

Ceph 集群依赖主机名识别节点,需与清单完全一致,避免后续通信异常。

2. 配置 hosts 映射

cat >> /etc/hosts << EOF10.132.47.68 ceph-110.132.47.69 ceph-210.132.47.70 ceph-3EOF

集群节点间通过主机名通信,hosts 映射可避免 DNS 依赖,确保解析稳定。

3. 关闭防火墙与 SE Linux

# 关闭防火墙并禁用开机启动systemctl stop firewalld && systemctl disable firewalld
# 临时关闭 SE Linux(立即生效)setenforce 0# 永久关闭 SE Linux(重启生效)sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

Ceph 组件(mon/mgr/osd)使用多个端口(如 6789、3300、6800-7300 等),关闭防火墙可避免端口拦截;SELinux 可能限制进程权限,部署阶段建议关闭。

4. 配置时间同步

# 安装 时间同步工具yum install -y chrony# 启动并设置开机自启systemctl start chronyd && systemctl enable chronyd
# 同步时间(以阿里云 NTP 服务器为例)chronyc server ntp.aliyun.com iburst

Ceph 依赖时间戳进行数据一致性校验,节点时间差超过阈值会导致集群异常,chrony 是轻量级 NTP 客户端,确保时间同步。

5. 安装基础依赖包(Ceph 部署与运行必需)

# 安装 Python(ceph-deploy 依赖 Python2.7,CentOS 7 自带,需确保可用)yum install -y python python-pip
# 安装 LVM 工具(OSD 通常基于 LVM 管理磁盘)yum install -y lvm2
# 安装 sshpass(方便 ceph-1 免密登录其他节点)yum install -y sshpass gdisk net-tools
yum install -y gdisk net-tools awscli s3cmd
#一键安装yum install -y vim wget lrzsz tree bash-completion epel-release chrony gdisk net-tools awscli s3cmd sshpass python python-pip python3 dnf

ceph-deploy 工具基于 Python2 开发,LVM 用于管理 OSD 磁盘,sshpass 简化免密登录配置。

6. 修改最大打开文件数

cat > /etc/security/limits.conf << EOF*  soft  nofile  65535*  hard  nofile 65535EOF

三、配置免密登录

仅 ceph-1 执行,部署节点需远程操作其他节点

1. 生成 ssh 密钥对(ceph-1 节点)

ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

生成无密码的 RSA 密钥对,用于免密登录其他节点。

2. 复制公钥到所有节点

# 复制到 ceph-1 自身ssh-copy-id root@ceph-1# 复制到 ceph-2ssh-copy-id root@ceph-2# 复制到 ceph-3ssh-copy-id root@ceph-3

执行时输入对应节点的 root 密码,完成后验证:

ssh ceph-2 hostname  # 应输出 ceph-2,无需输入密码ssh ceph-3 hostname  # 应输出 ceph-3,无需输入密码

#示例[root@localhost ~]# ssh ceph-2 hostnameceph-2[root@localhost ~]# ssh ceph-3 hostnameceph-3

免密登录是 ceph-deploy 工具远程部署的基础,避免每次输入密码。

四、配置 Ceph 仓库与部署工具(所有节点)

1. 配置源

安装软件源yum install -y https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm更新软件源yum makecache fast

# 配置 CentOS 基础源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 配置 EPEL 源wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2. 添加 Ceph YUM 仓库

cat > /etc/yum.repos.d/ceph.repo <<EOF[ceph]name=cephbaseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/gpgcheck=0priority=1enabled=1
[ceph-noarch]name=cephnoarchbaseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/gpgcheck=0priority=1enabled=1
[ceph-source]name=Ceph source packagesbaseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMSgpgcheck=0priority=1enabled=0EOF

3. 安装 ceph-deploy 工具(仅 ceph-1 节点,部署节点专用)

# 清除缓存,避免读取旧仓库信息yum clean all && yum makecache
# 安装 ceph-deployyum install -y ceph-deploy

ceph-deploy 是官方部署工具,可通过命令行在远程节点安装、配置 Ceph 组件。

4. 验证 ceph-deploy 安装成功

ceph-deploy --version

五、集群初始化(ceph-1 节点执行)

1. 创建集群工作目录(统一管理配置文件)

mkdir -p /root/ceph-cluster && cd /root/ceph-cluster

ceph-deploy 会在当前目录生成集群配置文件(ceph.conf、密钥等),单独目录便于管理。

2. 初始化监控节点(mon)

cd /root/ceph-cluster

ceph-deploy new ceph-1 ceph-2 ceph-3


ceph-deploy new --public-network 10.132.47.0/24 --no-ssh-copykey ceph-1 ceph-2 ceph-3
ceph-deploy new \--public-network 10.132.47.0/24 \  # 显式指定公网(你的节点IP段)--no-ssh-copykey \                  # 建议手动配置SSH免密,禁用自动拷贝ceph-1 ceph-2 ceph-3                # 你的Mon节点主机名(需提前配置/etc/hosts解析)


查看集群的配置文件cat ceph.conf[root@localhost ceph-cluster]# cat ceph.conf[global]fsid = 7960cce1-b9fe-4cf3-b953-6cfea38bb1f7   # 这个地方很重要的,每次都不一样,不要乱动public_network = 10.132.47.0/24mon_initial_members = ceph-1, ceph-2, ceph-3mon_host = 10.132.47.68,10.132.47.69,10.132.47.70auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephx

查看集群通信的认证信息cat ceph.mon.keyring[root@localhost ceph-cluster]# cat ceph.mon.keyring[mon.]key = AQCqDSBpAAAAABAAxim8B+uAyucUIKvEP6eshw==caps mon = allow *

执行后生成的文件

  • ceph.conf:集群核心配置文件
  • ceph.client.admin.keyring:管理员密钥(用于集群操作授权)
  • ceph-deploy-ceph.log:部署日志(排错用)

初始化 3 个 mon 节点(高可用配置),mon 负责维护集群状态(如 OSD 映射、PG 分布)。

3. 调整 ceph.conf 配置(优化集群网络和性能)

# 优化 ceph.conf 配置(适配 Nautilus 版本)cat >> ceph.conf << EOF# 集群通信网络(与你的节点 IP 网段一致)public network = 10.132.47.0/24# OSD 数据同步网络(与公共网络一致即可)cluster network = 10.132.47.0/24# 3 个 OSD 时默认副本数为 3,确保数据高可用osd pool default size = 3# 关闭旧版本 crush 规则警告mon warn on legacy crush tunables = falseEOF

指定网络网段避免自动检测错误,关闭不必要的警告,确保集群初始化无干扰

六、安装 Ceph 核心组件(所有节点)

在 ceph-1 节点执行,远程为所有节点安装 Ceph 组件:

# 创建集群工作目录mkdir -p /root/ceph-cluster && cd /root/ceph-cluster
ceph-deploy install --release nautilus --no-adjust-repos ceph-1 ceph-2 ceph-3
  • --release pacific 指定安装 Pacific 版本(与源配置一致)。
  • 工具会自动通过 YUM 源在 ceph-1/2/3 上安装 ceph-monceph-mgrceph-osd 等核心组件。
  • 等待安装完成(约 5-10 分钟,取决于网络速度)。

验证结果

# 验证 ceph-1 组件ssh ceph-1 "rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'"# 验证 ceph-2 组件ssh ceph-2 "rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'"# 验证 ceph-3 组件ssh ceph-3 "rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'"


#示例[root@localhost ceph-cluster]# ssh ceph-2 "rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'"ceph-mon-14.2.22-0.el7.x86_64ceph-osd-14.2.22-0.el7.x86_64ceph-mgr-14.2.22-0.el7.x86_64[root@localhost ceph-cluster]# ssh ceph-3 "rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'"ceph-mon-14.2.22-0.el7.x86_64ceph-osd-14.2.22-0.el7.x86_64ceph-mgr-14.2.22-0.el7.x86_64[root@localhost ceph-cluster]# rpm -qa | grep -E 'ceph-mon|ceph-mgr|ceph-osd'ceph-mon-14.2.22-0.el7.x86_64ceph-mgr-14.2.22-0.el7.x86_64ceph-osd-14.2.22-0.el7.x86_64[root@localhost ceph-cluster]# 

每个节点均显示 ceph-mon-xxxceph-mgr-xxxceph-osd-xxx 包名(版本号为 14.2.x)。

若失败:手动在所有节点安装 Ceph 组件

如果上述命令仍有问题,直接跳过 ceph-deploy,在每个节点手动安装核心组件(确保源配置有效):

1. 在 ceph-1 节点执行
yum install -y ceph-mon ceph-mgr ceph-osd ceph-common ceph-client-admin
2. 在 ceph-2 节点执行(ceph-1 远程操作)
ssh ceph-2 "yum install -y ceph-mon ceph-mgr ceph-osd ceph-common ceph-client-admin"
3. 在 ceph-3 节点执行(ceph-1 远程操作)
ssh ceph-3 "yum install -y ceph-mon ceph-mgr ceph-osd ceph-common ceph-client-admin"

解释

  • 直接安装 ceph-mon(监控组件)、ceph-mgr(管理组件)、ceph-osd(存储组件)等核心包,无需依赖 ceph-deploy 的自动安装逻辑。
  • 所有包从你配置的官方归档源获取,避免路径错误。

七、部署监控节点(mon)并初始化集群

yum install -y ceph ceph-osd ceph-mds ceph-mon ceph-radosgw
ceph-deploy install --no-adjust-repos --nogpgcheck admin ceph-1 ceph-2 ceph-3

1. 部署 mon 服务并生成初始密钥

ceph-deploy mon create-initial

执行后生成的文件

  • 新增 ceph.bootstrap-mgr.keyringceph.bootstrap-osd.keyring 等引导密钥(用于后续部署 mgr/osd)。

初始化 mon 集群,生成集群唯一的 fsid 和各类密钥,奠定集群基础。

2. 同步配置文件和密钥到所有节点

ceph-deploy admin ceph-1 ceph-2 ceph-3

3. 调整密钥文件权限(避免操作权限不足)

在所有节点执行(可通过 ceph-1 远程执行):

ssh ceph-1 "chmod +r /etc/ceph/ceph.client.admin.keyring"ssh ceph-2 "chmod +r /etc/ceph/ceph.client.admin.keyring"ssh ceph-3 "chmod +r /etc/ceph/ceph.client.admin.keyring"

ceph config set mon auth_allow_insecure_global_id_reclaim false
ceph health detail

管理员密钥默认权限较严格,添加读权限确保 ceph 命令能正常读取。

八、部署管理节点(mgr)

在 ceph-1 节点执行,部署 mgr 服务(与 mon 同节点,实现高可用):

ceph-deploy mgr create ceph-1 ceph-2 ceph-3

mgr 负责集群监控、性能指标收集和 dashboard 管理,3 节点部署避免单点故障。

验证

ceph -s | grep mgr
#示例[root@localhost ceph-cluster]# ceph -s | grep mgr    mgr: ceph-1(active, since 37s), standbys: ceph-2, ceph-3

mgr: ceph-1(active, since 1m), standbys: ceph-2, ceph-3(active 表示主节点正常,standbys 表示备用节点就绪)。

九、部署存储节点(osd)

1. 准备 OSD 数据磁盘(所有节点执行,以 /dev/vdb 为例)

查看空闲磁盘

# 查看 ceph-1 的磁盘(找到空闲磁盘,如 /dev/vdb、/dev/sdc 等)ssh ceph-1 "lsblk"
# 查看 ceph-2 的磁盘ssh ceph-2 "lsblk"
# 查看 ceph-3 的磁盘ssh ceph-3 "lsblk"
清除磁盘分区表(所有节点)

注意:确保 /dev/sdb 是空闲磁盘,数据会被清空!

ssh ceph-1 "mkfs.ext4  /dev/vdb"ssh ceph-2 "mkfs.ext4  /dev/vdb"ssh ceph-3 "mkfs.ext4  /dev/vdb"
# 清理 ceph-1 的 /dev/vdbssh ceph-1 "sgdisk --zap-all /dev/vdb"
# 清理 ceph-2 的 /dev/vdbssh ceph-2 "sgdisk --zap-all /dev/vdb"
# 清理 ceph-3 的 /dev/vdbssh ceph-3 "sgdisk --zap-all /dev/vdb"


for i in {1..3}do    ceph-deploy disk list ceph-1 ceph-2 ceph-3done

OSD 需要专用磁盘存储数据,清除原有分区表避免冲突。

2. 部署 OSD 服务(ceph-1 节点执行)

# 部署 ceph-1 的 OSD(使用 /dev/vdb)ceph-deploy --overwrite-conf osd create --data /dev/vdb ceph-1
# 部署 ceph-2 的 OSDceph-deploy --overwrite-conf osd create --data /dev/vdb ceph-2
# 部署 ceph-3 的 OSDceph-deploy --overwrite-conf osd create --data /dev/vdb ceph-3

--data /dev/sdb 指定用 /dev/sdb 作为 OSD 数据盘,工具会自动格式化磁盘、创建 OSD 实例并加入集群。

十、集群状态验证

在 ceph-1 节点执行,检查集群是否正常运行:

ceph -s

正常输出示例

[root@ceph-1 ceph-cluster]# ceph -s  cluster:    id:     72d7931f-19bc-40ba-b5c5-50806aec77f2    health: HEALTH_WARN            mons are allowing insecure global_id reclaim
  services:    mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 (age 5m)    mgr: ceph-3(active, since 5m), standbys: ceph-1, ceph-2    osd: 3 osds: 3 up (since 7s), 3 in (since 7s)
  data:    pools:   0 pools, 0 pgs    objects: 0 objects, 0 B    usage:   3.0 GiB used, 57 GiB / 60 GiB avail    pgs:     

关键指标

  • health: HEALTH_OK:集群健康。
  • mon: 3 daemons:3 个 mon 正常运行。
  • osd: 3 osds: 3 up:3 个 OSD 正常启动并加入集群。
# 管理节点执行,关闭不安全的全局ID回收ceph config set mon auth_allow_insecure_global_id_reclaim false# 重启所有Mon节点,使配置生效ceph-deploy mon restart ceph-1 ceph-2 ceph-3# 验证警告是否消失ceph -s

1. 存储块测试

查看存储池的列表ceph osd pool ls
rados lspools

提交文件到对应的osd里面rados put ceph-file /root/ceph-cluster/ceph.conf --pool=mypool
确认上传数据效果rados ls --pool=mypool
将刚才添加的文件对象从存储池里面移除rados rm ceph-file --pool=mypool
#主节点上修改ceph.conf文件,增加两行配置,让其运行删除pooltail -n2 ceph.conf
[mon]mon allow pool delete = true
#同步ceph.conf文件到所有的ceph节点上ceph-deploy --overwrite-conf config push admin ceph-1 ceph-2 ceph-3
#重启所有的mon节点上的ceph-mon服务for i in ceph-{1..3}; do ssh $i "sudo systemctl restart ceph-mon.target"; done
#将刚才添加的文件对象从存储池里面移除ceph osd pool rm mypool mypool --yes-i-really-really-mean-it

2. 部署 Ceph RGW


# 进入集群配置目录cd ~/ceph-cluster# 分别在ceph-1、ceph-2、ceph-3部署RGW实例ceph-deploy rgw create ceph-1ceph-deploy rgw create ceph-2ceph-deploy rgw create ceph-3

创建 RGW 专用存储池与用户

# 用ceph-deploy部署RGW# 在部署节点执行ceph-deploy rgw create ceph-1 ceph-2 ceph-3

# 部署完成后,验证RGW服务# 查看RGW进程ssh ceph-1 "ps -ef | grep radosgw"# 查看RGW端口(默认7480)ssh ceph-1 "netstat -ntlp | grep 7480"

# 创建基础用户radosgw-admin user create \--uid=Harbor_rgw \--display-name="RGW Super Administrator" \--email=Harbor_rgw@example.com

# 1. 添加用户管理全权限(创建/删除其他用户)radosgw-admin caps add --uid=Harbor_rgw --caps="users=*"
# 2. 添加桶管理全权限(创建/删除/修改所有桶)radosgw-admin caps add --uid=Harbor_rgw --caps="buckets=*"
# 3. 添加对象操作全权限(读写/删除所有桶内对象)radosgw-admin caps add --uid=Harbor_rgw --caps="objects=*"
# 4. 添加元数据操作全权限(修改所有对象元数据)radosgw-admin caps add --uid=Harbor_rgw --caps="metadata=*"
# 5. (已添加,可选验证)确认usage权限radosgw-admin caps add --uid=Harbor_rgw --caps="usage=*"

# 查看用户信息(关键:获取Access Key和Secret Key,用于客户端连接)radosgw-admin user info --uid=Harbor_rgw

执行后会输出用户的access_keysecret_key务必保存好,后续配置 Harbor 会用到。

  1. 验证 RGW 服务可用性

    确认 RGW 端口(默认 7480)可访问,以 ceph -1 节点为例,执行以下命令测试:

    curl http://ceph-1:7480

    若返回类似

    <?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult...

    的 XML 内容,说明 RGW 服务正常。



十三、Ceph 集群完整环境清单

1. 基础环境节点清单

节点 hostname
内网 IP 地址
角色分配
硬件存储(OSD 盘)
系统版本
内核版本
ceph-1
10.132.47.69
mon + mgr(备用)+ osd + rgw
单块盘(约 30 GiB)
CentOS Linux 7.9.2009 Core
3.10.0-1160.el7.x86_64
ceph-2
10.132.47.70
mon + mgr(备用)+ osd
单块盘(约 30 GiB)
CentOS Linux 7.9.2009 Core
3.10.0-1160.el7.x86_64
ceph-3
10.132.47.71
mon + mgr(主节点)+ osd
单块盘(约 30 GiB)
CentOS Linux 7.9.2009 Core
3.10.0-1160.el7.x86_64

2. 软件版本与安装清单

软件名称
版本号
安装方式
核心功能
Ceph
Nautilus(14.x)
ceph-deploy
分布式存储核心集群
ceph-deploy
2.0.1
pip 安装
Ceph 集群部署工具
ceph-radosgw
14.x(Nautilus)
YUM 安装
S3 兼容对象存储网关
net-tools
2.0-0.25.20131004git.el7
YUM 安装
网络工具(netstat 等)
ceph-common
14.x(Nautilus)
YUM 安装
Ceph 集群通用工具集

3. 集群基础信息

配置项
详情
集群 ID
72d7931f-19bc-40ba-b5c5-50806aec77f2
集群健康状态
HEALTH_WARN(警告:mons are allowing insecure global_id reclaim)
警告影响
非致命,不影响存储读写 / 对接功能,仅安全配置优化项
部署架构
3 节点集群(mon 三副本高可用,osd 三副本存储,mgr 主备冗余)
配置文件路径
/etc/ceph/ceph.conf(所有节点同步一致)
密钥文件目录
/etc/ceph/(含 admin 密钥、rgw 密钥)

4. 核心组件配置

(1)MON 组件(监控与集群管理)
  • 节点分布:ceph-1、ceph-2、ceph-3(三副本 quorum 就绪)
  • 监听端口:6789(默认)
  • 核心功能:集群元数据管理、节点选举、状态监控
(2)MGR 组件(管理守护进程)
  • 主节点:ceph-3(active 状态)
  • 备用节点:ceph-1、ceph-2(standby 状态)
  • 监听端口:6800/6801(默认)
  • 核心功能:集群状态统计、dashboard 管理、第三方集成
(3)OSD 组件(对象存储守护进程)
  • 节点分布:每个节点 1 个 OSD(共 3 个 OSD)
  • 状态:全部 up + in(正常提供存储)
  • 存储介质:本地磁盘(单盘部署,测试 / 轻量生产场景)
  • 副本策略:默认 3 副本(数据分散存储在 3 个节点,高可用)
(4)RGW 组件(S3 兼容网关)
  • 部署节点:ceph-1
  • 服务名称:ceph-radosgw@rgw.ceph-1
  • 运行状态:active (running),开机自启已配置
  • 前端类型:Civetweb
  • 监听端口:7480(S3 协议端口,无 SSL 配置)
  • 监听地址:0.0.0.0(允许所有网段访问)
  • 配置路径:/etc/systemd/system/ceph-rgw@rgw.ceph-1.service(服务单元文件)
  1. 存储池配置(含自动创建池)
存储池名称
PG 数量
PGP 数量
副本数
应用类型
核心用途
可用容量
my-pool
64
64
3
rgw
Harbor 镜像存储专用池(手动创建)
18 GiB
.rgw.root
8
8
3
rgw
RGW 根目录元数据存储(自动创建)
-
.rgw.control
8
8
3
rgw
RGW 控制通道(自动创建)
-
.rgw.gc
8
8
3
rgw
RGW 垃圾回收(自动创建)
-
.users.uid
64
64
3
rgw
RGW 用户 UID 映射(自动创建)
-

6. 命令

操作目的
命令示例
查看集群状态
ceph -s
查看存储池列表
ceph osd pool ls
查看存储使用情况
ceph df
查看 RGW 状态
systemctl status ceph-radosgw@rgw.ceph-1
(ceph-1 节点执行)
重启 RGW 服务
systemctl restart ceph-radosgw@rgw.ceph-1
(ceph-1 节点执行)
查看 RGW 账号
radosgw-admin user list
 / radosgw-admin user info --uid=harbor_rgw

【声明】内容源于网络
0
0
SRE云原生
专注于分享运维、Devops、网络安全以及SRE云原生相关知识,内容包括但不限于自动化运维、云架构、云监控、云安全、AI、AWS以及攻防渗透等。内容多以原创为主,旨在于编写高质量文章。
内容 35
粉丝 0
SRE云原生 专注于分享运维、Devops、网络安全以及SRE云原生相关知识,内容包括但不限于自动化运维、云架构、云监控、云安全、AI、AWS以及攻防渗透等。内容多以原创为主,旨在于编写高质量文章。
总阅读22
粉丝0
内容35