一、环境清单
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
二、环境预处理
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-toolsyum 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-clusterceph-deploy new ceph-1 ceph-2 ceph-3ceph-deploy new --public-network 10.132.47.0/24 --no-ssh-copykey ceph-1 ceph-2 ceph-3ceph-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-clusterceph-deploy install --release nautilus --no-adjust-repos ceph-1 ceph-2 ceph-3
-
--release pacific指定安装 Pacific 版本(与源配置一致)。 -
工具会自动通过 YUM 源在 ceph-1/2/3 上安装 ceph-mon、ceph-mgr、ceph-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-xxx、ceph-mgr-xxx、ceph-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-radosgwceph-deploy install --no-adjust-repos --nogpgcheck admin ceph-1 ceph-2 ceph-3
1. 部署 mon 服务并生成初始密钥
ceph-deploy mon create-initial
执行后生成的文件:
-
新增 ceph.bootstrap-mgr.keyring、ceph.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 falseceph 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 mgrmgr: 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}doceph-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 -scluster:id: 72d7931f-19bc-40ba-b5c5-50806aec77f2health: HEALTH_WARNmons are allowing insecure global_id reclaimservices:mon: 3 daemons, quorum ceph-1,ceph-2,ceph-3 (age 5m)mgr: ceph-3(active, since 5m), standbys: ceph-1, ceph-2osd: 3 osds: 3 up (since 7s), 3 in (since 7s)data:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 3.0 GiB used, 57 GiB / 60 GiB availpgs:
关键指标:
-
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 lsrados 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_key和secret_key,务必保存好,后续配置 Harbor 会用到。
-
验证 RGW 服务可用性
确认 RGW 端口(默认 7480)可访问,以 ceph -1 节点为例,执行以下命令测试:
curl http://ceph-1:7480若返回类似
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult...的 XML 内容,说明 RGW 服务正常。
-
-
十三、Ceph 集群完整环境清单
1. 基础环境节点清单
|
|
|
|
|
|
|
|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. 软件版本与安装清单
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3. 集群基础信息
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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(服务单元文件)
-
存储池配置(含自动创建池)
|
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. 命令
|
|
|
|---|---|
|
|
ceph -s |
|
|
ceph osd pool ls |
|
|
ceph df |
|
|
systemctl status ceph-radosgw@rgw.ceph-1
|
|
|
systemctl restart ceph-radosgw@rgw.ceph-1
|
|
|
radosgw-admin user list
radosgw-admin user info --uid=harbor_rgw
|

