精读笔记(RHCA 英文教材)· CL260 Chapter 2 Deploying Red Hat Ceph Storage
精读笔记(RHCA 英文教材)· CL260 Chapter 2 Deploying Red Hat Ceph Storage
教材原文:RHCA 官方英文教材(PDF 第 51~79 页,对应教材页码 33~61)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:
RHCA英语教材精读\CL260-01-Chapter1(先懂架构再部署);本系列配套00-RHCA教材精读-导航与学习法.md
Chapter Goal / Objectives(原文+译)
- GOAL: Deploy a new Red Hat Ceph Storage cluster and expand the cluster capacity.(部署新 RHCS 集群并扩容)
- OBJECTIVES: ① 用 cephadm 命令行工具完成 RHCS 集群部署前的准备与实际部署;② 通过向既有集群加 OSD 扩容以满足应用存储需求。
- 结构:两个知识 Section(Deploying / Expanding,各带 Guided Exercise)+ 章末 Lab
Deploying Red Hat Ceph Storage(评分命令lab grade deploy-review)。
2.1 Deploying Red Hat Ceph Storage(部署新集群)
cephadm 两大组成
- cephadm shell:在专用管理容器里跑 bash,集群部署期与运行期管理都在里面做(交互式
cephadm shell或单条cephadm shell -- CEPH_COMMAND)。 - cephadm orchestrator:面向 ceph-mgr 中 orchestrator 模块的 CLI,负责需要多节点/多服务协作的配置变更(加主机、加守护进程、扩缩服务)。
- RHCS 5.0 起所有集群服务容器化;容器化服务可“共置(colocation)”,资源利用率更高且保持隔离。
部署前的规划(Planning)
- 服务共置规划:以下 daemon 可与 OSD 共置:RADOS Gateway(RGW)、MDS、RBD-mirror、MON、MGR、Grafana、NFS Ganesha。
- SSH 互通:cephadm 靠 SSH 管理节点;bootstrap 时生成集群 SSH 密钥对。把集群公钥推到每个成员主机:
cephadm shell [ceph:root@node /]# ceph cephadm get-pub-key > ~/ceph.pub [ceph:root@node /]# ssh-copy-id -f -i ~/ceph.pub root@node.example.com
部署三步(核心流程)
- 在选定的 bootstrap 节点(集群第一台)装
cephadm-ansible:yum install cephadm-ansible - 跑 preflight playbook 验证主机前置条件(会顺带装 podman/lvm2/chrony/cephadm 等):
# 默认 inventory:/usr/share/cephadm-ansible/hosts(分组 [admin]、[clients])
ansible-playbook -i INVENTORY_FILE cephadm-preflight.yml --extra-vars "ceph_origin=rhcs"- 课堂环境包源是本地仓库,故
ceph_origin=留空跳过部分任务;生产设为rhcs。
- cephadm bootstrap 拉起集群。bootstrap 自动完成:
- 在 bootstrap 节点装并启动 MON + MGR;
- 建
/etc/ceph目录; - 写入集群公钥
/etc/ceph/ceph.pub并加入/root/.ssh/authorized_keys; - 写最小配置
/etc/ceph/ceph.conf; - 写管理密钥
/etc/ceph/ceph.client.admin.keyring; - 部署基础监控栈:prometheus、grafana、node-exporter、alert-manager。
# 最简:registry.redhat.io 需先注册账号(https://access.redhat.com/RegistryAuthentication)
cephadm bootstrap --mon-ip=MONITOR_IP_ADDRESS \
--registry-url=registry.redhat.io \
--registry-username=USER --registry-password=PASS用 Service Specification 文件一键部署(--apply-spec)
- bootstrap 时用 YAML 规格文件同时加主机与守护进程;文件含多个
service_type:条目与placement(部署到哪些主机/按 pattern)。 - 关键字段语义:
service_type: host(addr/hostname:bootstrap 完成后加入的节点);mon(在列出主机各放 MON);mgr(MGR);rgw(service_id=realm.zone,对象网关);osd(用 data_devices 指定盘:paths: [/dev/vdb,...]或all: true);placement.hosts精确主机 /host_pattern: 'server*'通配。
cephadm bootstrap --mon-ip=172.25.250.12 \
--apply-spec=initial-config-primary-cluster.yaml \
--initial-dashboard-password=redhat --dashboard-password-noupdate \
--allow-fqdn-hostname \
--registry-url=registry.lab.example.com --registry-username=registry --registry-password=redhat- 输出要点:自动往各新主机加 SSH key →
Added host "..."→Scheduled mon/mgr/rgw/osd 更新→ Dashboard URL https://serverc:8443(admin/redhat) → 提示ceph telemetry on(可选遥测)→Bootstrap complete. - bootstrap 后先
cephadm shell→ceph status确认 HEALTH_OK;新集群头几分钟可能 HEALTH_WARN,等 OSD 就绪即恢复。
节点标签(Labels)与 Admin 节点
- 标签用于把主机分组、批量部署服务;
_admin是保留标签(管理节点),其余标签自由定义(如 mon/osd/mgr)。 - 设置 admin 节点三步:① 打标签
ceph orch host label add clienta.lab.example.com _admin;② 拷密钥ceph.client.admin.keyring;③ 拷配置ceph.conf到该节点/etc/ceph/;之后即可从 admin 节点跑sudo cephadm shell。
实验要点 · Guided Exercise(lab: deploy-deploy)
流程:lab start deploy-deploy(会删除预置集群,需等几分钟)→ ssh admin@serverc → sudo -i → yum install cephadm-ansible → 在 /usr/share/cephadm-ansible 建 hosts(clienta/serverc/serverd/servere 四台)→ ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=" → 审查 /root/ceph/initial-config-primary-cluster.yaml(4 host 条目 + mon/mgr/rgw/osd.default_drive_group,osd 用 /dev/vdb/vdc/vdd 且 host_pattern:'server*')→ cd /root/ceph && cephadm bootstrap --mon-ip=172.25.250.12 --apply-spec=... → 验证 ceph status(mon 4 quorum、mgr 1 active+3 standby、osd 9 up/in)→ 给 clienta 打 _admin 并 scp 两个文件 → 从 clienta sudo cephadm shell 跑 ceph health = HEALTH_OK → lab finish deploy-deploy(不还原本次部署,下个实验接着用)。
2.2 Expanding Red Hat Ceph Storage Cluster Capacity(扩容)
两种扩容方向
- Scale out(横向):往集群加 OSD 节点(新主机+新盘);
- Scale up(纵向):给现有 OSD 节点加盘。
- 动手前先确认集群 HEALTH_OK:
cephadm shell -- ceph health。
加主机(新 OSD 节点)三步
# 1) 推送集群公钥(admin 节点上 /etc/ceph/ceph.pub)
ssh-copy-id -f -i /etc/ceph/ceph.pub root@new-osd-1
# 2) 只对目标主机跑 preflight(验前置软件)
ansible-playbook -i /usr/share/cephadm-ansible/hosts \
/usr/share/cephadm-ansible/cephadm-preflight.yml --limit new-osd-1
# 3a) 用 orchestrator 加主机(可带标签)
ceph orch host add new-osd-1 --labels=mon,osd,mgr
# 3b) 或写 hosts YAML 一次加多台(含 addr/hostname)后 ceph orch apply -i加 OSD(三种粒度)
ceph orch device ls # 先看各主机可用盘(Available 列)
# ① 指定 主机:盘,加单 OSD
ceph orch daemon add osd osd-1:/dev/vdb
# ② 所有可用且未用盘全上
ceph orch apply osd --all-available-devices
# ③ 规格文件(推荐、可声明式):如 /var/lib/ceph/osd/osd_spec.yml
# service_type: osd / service_id: default_drive_group
# placement: hosts: [osd-1, osd-2] / data_devices: paths: [/dev/vdc, /dev/vdd]
ceph orch apply -i osd_spec.yml # Scheduled osd.default_drive_group update.ceph orch apply是“声明目标状态”的编排(幂等),之后 orchestrator 会在目标主机/盘上补齐 OSD。
实验要点 · Guided Exercise + Lab(deploy-expand / deploy-review)
- GE:
lab start deploy-expand→ clienta 上sudo cephadm shell→ceph orch device ls(vdb~vdf 均 Available=Yes)→ 用/root/expand-osd/osd_spec.yml(osd.default_drive_group:serverc/d/s 三台 + paths /dev/vdb/vdc/vdd)经sudo cephadm shell --mount ...拷到/var/lib/ceph/osd/后ceph orch apply -i /var/lib/ceph/osd/osd_spec.yml→ 对 servere 剩余盘ceph orch daemon add osd servere.lab.example.com:/dev/vde(vdf 同法)→ceph status确认 HEALTH_OK、新 OSD up+in(9→15)。 - Lab:按模板把 serverd/servere 等主机加入 hosts 并跑 preflight、
ceph orch apply -i /tmp/osd-spec.yaml扩容 → 验证 15 OSD up/in、1 pool、lab grade deploy-review评分 →lab finish(还原为课程默认预置集群,供后续章节使用)。
命令速查表(本章)
| 命令 | 作用 |
|---|---|
yum install cephadm-ansible | bootstrap 节点安装管理工具包(含 playbook 与 inventory 模板) |
ansible-playbook -i hosts cephadm-preflight.yml --extra-vars "ceph_origin=rhcs" | 预检主机前置条件;--limit host 只查单机 |
cephadm bootstrap --mon-ip=IP [--apply-spec=file] [--registry-*] | 引导集群(默认 MON+MGR+监控栈) |
cephadm shell [-- CMD] | 进管理容器(可单条执行) |
ceph cephadm get-pub-key > ~/ceph.pub | 导出集群公钥 |
ssh-copy-id -f -i ~/ceph.pub root@HOST | 向成员主机分发集群公钥 |
ceph orch host add HOST --labels=mon,osd,mgr | 把主机加入集群并打标签 |
ceph orch host ls | 列出集群主机 |
ceph orch host label add HOST _admin | 打标签(_admin 保留给管理节点) |
ceph orch device ls [--hostname=HOST] | 列出各主机磁盘清单与可用性 |
ceph orch daemon add osd HOST:/dev/sdX | 单盘加 OSD |
ceph orch apply osd --all-available-devices | 全部可用盘自动加 OSD |
ceph orch apply -i osd_spec.yml | 按规格文件声明式部署(host/osd/mon…通用) |
ceph status / ceph health | 验证集群健康与 OSD up/in 状态 |
scp /etc/ceph/ceph.conf HOST:/etc/ceph/ | 给 admin 节点同步配置 |
词汇表(本章)
| 英文术语 | 中文 | 一句话速记 |
|---|---|---|
| bootstrap node | 引导节点 | 第一台跑 cephadm bootstrap 的节点 |
| cephadm shell | 管理容器 shell | 容器化 ceph CLI 环境(含全部 ceph 命令) |
| orchestrator | 编排器 | 声明式协调多节点服务部署(ceph orch) |
| colocation | 共置 | 多守护进程同机容器化部署(省资源、隔离安全) |
| service specification | 服务规格文件 | YAML:service_type+placement 声明要部署的服务 |
| placement | 放置规则 | 服务部署到哪些主机(hosts / host_pattern) |
| data_devices | 数据盘声明 | osd 规格里选盘:paths 指定盘或 all:true |
| drive group | 驱动器组 | 一批盘的逻辑组(osd.default_drive_group) |
| preflight playbook | 预检剧本 | cephadm-ansible 自带,验前置并装依赖 |
| registry | 容器仓库 | 拉取 Ceph 容器镜像(生产 registry.redhat.io) |
admin node / _admin | 管理节点/保留标签 | 持有 ceph.conf+keyring、可跑 cephadm shell 的节点 |
| label | 主机标签 | 分组主机、批量部署服务(除 _admin 外自由定义) |
| scale out / scale up | 横向/纵向扩容 | 加 OSD 节点 vs 给既有节点加盘 |
| telemetry | 遥测 | 可选:向 Ceph 项目回报使用统计(ceph telemetry on) |
自测
- 部署新集群三步分别做什么?为什么课堂
ceph_origin=留空而生产用rhcs? cephadm bootstrap自动完成哪 6 类事情?最小集群是哪两个守护进程?- 服务规格文件里
service_type: host / mon / mgr / rgw / osd分别干什么;placement.hosts与host_pattern的区别? --apply-spec相比纯 bootstrap 多完成什么(提示:ssh key、加主机、Scheduled 各服务更新)?- 新集群为何可能暂时 HEALTH_WARN?何时才算就绪?
- 加一台新 OSD 主机的三步命令是什么?加单块 OSD 有哪三种粒度(daemon add / all-available / apply -i)?
ceph orch device ls的 Available 列代表什么?已被占用的盘为何显示 No?- 为什么加 OSD 前要确认 HEALTH_OK?(避免在数据再平衡/故障中扩集群)
- 设置 admin 节点需要哪三样东西?(_admin 标签、keyring、ceph.conf)
lab finish deploy-deploy与lab finish deploy-review对集群的处置有何不同?(前者保留新集群,后者还原预置集群)
